发明名称 基于OpenGL ES的全液晶汽车仪表图形框架系统设计方法
摘要 基于OpenGL ES的全液晶汽车仪表图形框架系统设计方法,涉及一个轻量级的图形框架系统。它是为了解决目前全由于液晶汽车仪表内部原理复杂、设计难度高、对硬件要求高而造成的全液晶汽车仪表设计成本高的问题。本发明减少在框架之上的设计成本和代码量,便于代码的维护和版本升级;内部原理简单、设计容易,开发人员可以灵活的在框架的基础上实现各种预期效果,设计应用于汽车仪表各显示组件的实现方法;描述的图形框架系统底层只依赖于OpenGL ES图形库,而该图形库已经被移植到各个操作系统中,在作出微小的修改后在不同的操作系统间移植,提高了系统的可复用性和可移植性。本发明适用于一个轻量级的图形框架系统。
申请公布号 CN103745074B 申请公布日期 2016.08.31
申请号 CN201410043702.8 申请日期 2014.01.29
申请人 哈尔滨工业大学 发明人 裴一飞;于金泳;高会军;刘化伟
分类号 G06F17/50(2006.01)I 主分类号 G06F17/50(2006.01)I
代理机构 哈尔滨市松花江专利商标事务所 23109 代理人 张宏威
主权项 基于OpenGL ES的全液晶汽车仪表图形框架系统设计方法,其特征在于:该方法通过以下步骤实现,步骤一、建立ACTOR结构体;ACTOR结构体的数据域由以下各项组成:[TypeFlag],表示ACTOR结构体是图形元素或者容器,图形元素对应直接在屏幕上显示的组件,容器用于盛放其他子图形元素和子容器;[next],存储指向下一个ACTOR结构体的指针;[ShowFlag],表示图形元素最终是否显示在屏幕上;[VertexCoord],表示图形元素的顶点坐标;[TextureCoord],表示图形元素绑定纹理的纹理坐标;[TextureIndex],表示图形元素绑定纹理在全部纹理数组中的索引值;[ChildTextureTotal],表示图形元素绑定的纹理中子纹理的总数;[ChildTextureIndex],表示图形元素绑定纹理中子纹理的索引值;[PTextureImage],表示指向纹理数据区的指针;[Layer],表示图形元素在屏幕上显示的图层号;[CoordTransMatrix],表示坐标变换的矩阵;[LinkTable],当ACTOR结构体中的[TypeFlag]一项表示对象为容器时,表示指向CONTAINER_LINK结构的指针,用于实现ACTOR的树形结构;步骤二、建立TIMELINE结构体;TIMELINE结构体的数据域由以下各项组成:[TimerTick],表示TIMELINE结构体刷新一帧需要的时钟滴答数;[TimerFrameCount],表示TIMELINE结构体已经显示了的帧数;[FrameNumber],表示TIMELINE结构体时间轴中的帧总数;[RepeatFlag],表示TIMELINE结构体是单发的或者循环的;[TransforArgs],表示一个完整TIMELINE结构体需要的全部参数;[ActorAddr],TIMELINE结构体中存放指向图像元素或者容器的指针,表示TIMELINE结构体的动作对象;[timer_handler],是一个函数指针,指向TIMELINE结构体的动作函数;[next],存储指向下一个TIMELINE结构体的指针;[last],存储指向上一个TIMELINE结构体的指针;步骤三、建立CONTAINER_LINK结构体;CONTAINER_LINK结构体的数据域由以下各项组成:[ActorAddr],指向一个图形元素或者一个容器;[next],存储指向下一个CONTAINER_LINK结构体的指针;步骤四、建立实现对ACTOR结构进行操作的关键函数,该函数用于:初始化ACTOR链表;设置ACTOR结构中的各项参数;建立新的ACTOR节点并将其加入链表;将图形元素类型的ACTOR节点或容器类型的ACTOR节点通过[LinkTable]连接到容器类型的ACTOR节点上;步骤五、建立实现对TIMELINE结构进行操作的关键函数,该函数用于:初始化TIMELINE链表;设置TIMELINE结构中的各项参数;建立新的TIMELINE节点并将其加入链表;将单发动画的TIMELINE节点从链表中删除;步骤六、建立实现操纵ACTOR变换的动作函数集;该函数集中函数用于:递归搜索ACTOR容器中子图形元素或子容器中的子图形元素并加以变换;用于实现图像动作;步骤七、建立实现ACTOR结构和TIMELINE结构以及动作函数相关联的函数;该函数用于:将TIMELINE结构中的[ActorAddr]指向动作的一个ACTOR节点,并将TIMELINE结构中的[timer_handler]指向实现动作的函数;步骤八、建立实现查找已经就绪的时间轴动作并将其执行的函数;该函数用于,遍历TIMELINE链表,比对当前时钟滴答与TIMELINE数据域[TimerTick],匹配成功则执行TIMELINE数据域[timer_handler]指向的动作函数;匹配不成功则分析下一个TIMELINE节点;当TIMELINE节点中的全部帧刷新完毕后,若该时间轴是循环的,则开始一个新的周期;若该时间轴是单发的,则把该TIMELINE节点从TIMELINE链表中删除;步骤九、建立实现屏幕刷新的函数;该函数用于,遍历ACTOR链表,将每个标记为“可以显示”的图形元素依次画在屏幕上,并按照各个图层的层级关系相互覆盖;步骤十、建立定时机制;采用定时器作为整个框架的时钟心跳,在每个时钟滴答内,执行步骤八内提到的查找已经就绪的时间轴动作并将其执行的函数以及步骤九内提到的屏幕刷新的函数。
地址 150001 黑龙江省哈尔滨市南岗区西大直街92号