您好, 访客   登录/注册

基于IMx6的opengl图形着色器开发研究

来源:用户上传      作者:

  摘 要:飞思卡尔的imx6处理器,集成了高达1GHZ的ARM CortexTM-A9内核、2D和3D图形处理器和3D 1080P视频处理器,基于imx6的图形开发研究和设计,能够实现高速生成画面,提高图形显示质量。本文主要研究了opengl的基于着色器的编程思路和imx6的图形开发方式,基本完成了基于opengl 2.0的图形天地球演示画面。同时由于imx6的高性能和低功耗,可用于将来显示器的图形显示模块,一定能适应航空电子显示环境的严酷。
  关键词:Opengl着色器;imx6
  一、第一章
  Opengl 是一个跨编程、跨平台的编程语言,支持生成二维、 三维图形图像。Opengl 是与硬件无关的软件接口,可以运行在 多个平台上,提供一组功能强大的底层函数调用,实现简单图 元到复杂图像的绘制。Opengl2.0,使用可编程着色器 (programmable shade)的着色语言编写。着色器是用来渲染图 像,可以代替固定渲染管线,分为顶点着色器和片段着色器。 其中,顶点着色器,主要进行顶点的相关操作,是描述如何处 理顶点和法线等。片段着色器,是描述如何处理阴影、光线等。
  (一)创建着色器
  使用顶点着色器或者片段着色器的3个步骤:创建一个着 色器对象glcreateshader();把着色器源代码变为为目标码 glcompileshader();验证着色器已成功编译glgetshaderir()。其中 如果编译着色器失败,可以读取编译错误日志 glgetshaderinfolog()。
  把多个着色器对象链接到一个着色器程序中,需要5个步 骤:创建着色器程序glcreatprogram();把适当的着色器对象链 接到这个着色器程序中glattachshader();连接着色器程序 gllinkprogram();验证着色器连接阶段已经成功glgetprogramiv(); 使用着色器进行顶点或者片段处理gluseprogram()。
  (二)配置顶点数据
  在设置完顶点着色器或者片段着色器之后,需要将所要 绘制的图元顶点配置在对应的着色器中,也就是给着色器提供 数据vec()或mat(),以便后续进行数据处理和应用变换。访问数 据具体有三种方式,访问向量或矩阵的元素,访问矩阵,访问 结构。其中访问向量或矩阵中的元素有两种方式,名称访问和 下标访问。在名称访问中,与位置有关的四个成分(x,y,z,w), 与颜色相关的四个成分(r,g,b,a),与纹理坐标相关的四个成 分(s,t,p,q)。下标访问,通过数组索引进行访问元素。如图1 是 opengl的顶点映射在LCD上的坐标系。
  (三)类型限定符
  统一变量 Uniform,是顶点着色器和片段着色器共享, 必须声明为全局变量,任何类型的变量,都可以声明为 uniform 变量,包括数据和结构体,这些值在几何图形中可以一直为常 量。属性 Attribute,是顶点着色器的输入变量关键字,支持数 据更新。Varying,是片段着色器的输入变量关键字。
  二、第二章
  Imx6 系列处理器有四核imx 6Quad、双核imx6Dual、单核 imx6Solo 三个子系列。 imx系列处理器支持DDR3、 LV-DDR3、 LPDDR2 等存储芯片。
  本文研究中,使用飞思卡尔的MARS Board,飞思卡尔半 导体公司长久致力于研究工业控制的应用,有着成熟的产品体 系、开发技术支持和哦年工业级芯片的制造能力和经验,在嵌 入式处理器市场排名很高,其产品具有长期稳定的供货保证, 工业级产品具有至少10年的供货保证【1】。最终选择了飞思卡尔 的imx系列芯片作为软件开发设计的支撑。imx 6Dual处理器集 成了高达1GHz的ARM Cortex?-A9 内核、2D和3D图形處理 器和3D 1080p视频处理器。MarS Board评估板具有丰富的接口, 包括HDMI接口、LVDS 接口、Mini USB OTG接口、Mini USB Debug接口、RJ45接口、USB Host接口、TF卡接口和LCD显示 接口[2],能够帮助开发者针对上网本、桌面一体机、高端移动 互联网设备、高端掌上电脑、高端便携式媒体播放器、游戏机 和便携式导航设备等各种不同领域进行开发。
  本文使用Linux平台运行软件,使用VirtualBox虚拟机来在 windows系统安装Ubuntu Linux操作系统。
  三、第三章
  Opengl 提供的图形设计程序API,在函数命名和函数参数 命名上都能够做到直观易懂,便于程序员使用。着色器是opengl 的核心部分,能灵活使用着色器的API函数,是渲染场景的重 要手段。
  本文使用硬件的火星开发板,以及基于Linux平台下的软件 语言opengl,利用着色器编程思想,成功搭建了航空显示器中 的天地球画面的演示,包括航姿数据显示及航向角的显示,并 支持二维图形的显示和旋转等。imx6的应用前景十分广泛,对 imx6的展望,后续可以继续深入研究使用imx系列的几何着色 器以及三维显示和应用。
  参考文献:
  [1]高与聪,大连理工大学,基于imx6的车载视频播放 单元的硬件设计与实现,大连, 2014
  [2]Imx 6Dual/6Quad Applications Processors for Industrial Products. http://cache.freescale.com
转载注明来源:https://www.xzbu.com/1/view-15249335.htm