一种开放图形库的动画处理方法和装置的制作方法

文档序号:6368127阅读:189来源:国知局
专利名称:一种开放图形库的动画处理方法和装置的制作方法
技术领域
本发明涉及动画技术领域,特别涉及ー种开放图形库的动画处理方法和装置。
背景技术
开放图形库(OpenGraphics Library, Opengl)是ー种图形程序接 ロ,Opengl 不支持动态纹理,即不支持动画的原生支持。因此,在基于opengl的图形图象程序很多时候需要加入动画,例如地理信息系统(geographic information system, GIS)的应用,GIS包含底图、矢量以及热点,其中热点目前一般使用静态图片表现;但是动态的热点表现カ要远远超过静态的热点,因此如何能在此系统中加入动态的热点,则成为是ー个重要的问题。在其它图形程序接ロ的探索过程中,有ー些方法曾经被使用来实现加入动画的目 的,如多线程的处理方法。多线程的处理方法一般是为每ー个动态元素开ー个线程进行处理。基于设备资源限制目前在动态元素较少的情况下可以实现预期的效果。发明人在实现本发明实施例的过程中发现,多线程的处理方法存在如下问题,由于每增加一个动态元素需要开ー个线程,这样就会消耗较多的系统资源。

发明内容
本发明实施例提供了ー种开放图形库的动画处理方法和装置,用于减少系统资源消耗。ー种开放图形库的动画处理方法,包括获取预定义的动画资源数据结构;动画资源数据结构包含纹理数据參数以及播放速度參数;从加载的源数据中获取源数据的纹理数据以及播放速度;将获取到的源数据的纹理数据以及播放速度分别赋值给所述动画资源数据结构中的纹理数据參数以及播放速度參数;初始化开放图形库界面并启动开放图形库界面渲染进程;读取动画资源数据结构,并按照所述播放速度使用所述资源数据结构中的纹理数据对所述开放图形库界面的目标区域进行纹理贴图。ー种开放图形库的动画处理装置,包括结构获取単元,用于获取预定义的动画资源数据结构;动画资源数据结构包含纹理数据參数以及播放速度參数;数据获取単元,用于从加载的源数据中获取源数据的纹理数据以及播放速度;赋值单元,用于将获取到的源数据的纹理数据以及播放速度分别赋值给所述动画资源数据结构中的纹理数据參数以及播放速度參数;界面控制单元,用于初始化开放图形库界面并启动开放图形库界面渲染进程;播放控制単元,用于读取动画资源数据结构,按照所述播放速度使用所述资源数据结构中的纹理数据对所述开放图形库界面的目标区域进行纹理贴图。
从以上技术方案可以看出,本发明实施例具有以下优点通过动画资源数据结构对图像帧进行渲染和控制,不需要为每ー个动态元素开ー个线程,因此可以減少系统资源消耗。


为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简要介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域的普通技术人员来讲,在不付出创造性劳动性的 前提下,还可以根据这些附图获得其他的附图。图I为本发明实施例方法流程示意图;图2为本发明实施例装置结构示意图;图3为本发明实施例另ー装置结构示意图;图4为本发明实施例另ー装置结构示意图;图5为本发明实施例另ー装置结构示意图。
具体实施例方式为了使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明作进一步地详细描述,显然,所描述的实施例仅仅是本发明一部份实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。本发明实施例提供了ー种开放图形库的动画处理方法,如图I所示,包括101 :获取预定义的动画资源数据结构;动画资源数据结构包含纹理数据參数以及播放速度參数;后续实施例将就动画资源数据结构的定义给出具体举例说明。102 :从加载的源数据中获取源数据的纹理数据以及播放速度;源数据是图像帧数据可以有很多种类,可以为图像互換格式(GraphicsInterchange Format, GIF)文件或视频文件等均可,亦可为多巾贞相同大小的静态图像,本发明实施例对此并不予限定,通过对源数据的加载和解码就可以得到纹理数据以及播放速度,还可以得到图像的帧数等信息。103:将获取到的源数据的纹理数据以及播放速度分别赋值给上述动画资源数据结构中的纹理数据參数以及播放速度參数;104 :初始化开放图形库界面并启动开放图形库界面渲染进程;开放图形库的初始化在后续实施例中将给出具体举例说明。105:读取动画资源数据结构,并按照上述播放速度使用上述资源数据结构中的纹理数据对上述开放图形库界面的目标区域进行纹理贴图。采用本发明实施例方法,通过动画资源数据结构对图像帧进行渲染和控制,不需要为每ー个动态元素开ー个线程,因此可以減少系统资源消耗。需要说明的是上述目标区域为两个或者两个以上。目标区域也可以只有ー个。如果目标区域有两个或者两个以上,则使用一个动画资源数据结构就能实现多个动画的播放。源数据可以有很多,均可以采用以上方案,对于每个数据源的实现不再一一赘述。进ー步地,上述动画资源数据结构还包含巾贞数參数;上述方法还包括从加载的源数据中获取源数据的帧数;将获取到的帧数赋值给上述动画资源数据结构中的帧数參数。帧数參数可以用于对动画帧数的控制。进ー步地,动画资源数据结构还包含动画资源标识參数;上述方法还包括生成与源数据对应的动画资源标识;并将生成的动画资源标识赋值给上述动画资源数据结构中的动画资源标识參数。采用动画标识可以区分不同的动画,在同时控制多个动画的时候可以用于区分不同的动画。可选地,上述纹理数据參数为纹理数组;从加载的源数据中获取源数据的纹理数据包括从加载的源数据中获取源数据的图像帧;上述将获取到的源数据的纹理数据赋值给上述动画资源数据结构中的纹理数据參数包括按照上述源数据的图像帧的显示顺序存 入纹理数组。本实施例给出了使用数组来存放纹理数据的实现方式,需要说明的是纹理数据存放还可能有别的数据存储形式,本发明实施例对此不予限定。由于源数据的纹理数据是不定长的,纹理数组优选设置成不定长的数组。可选地,上述纹理数据图形与上述开放图形库界面的目标区域互为相似图形。相似图形可以实现动画的表现效果。进ー步地,上述方法还包括获取当前系统时间;依据上述当前系统时间以及播放速度为上述纹理数据建立纹理贴图索引;按照上述播放速度使用上述资源数据结构中的纹理数据对上述开放图形库界面的目标区域进行纹理贴图包括按照上述纹理贴图索引用上述资源数据结构中的纹理数据对上述开放图形库界面的目标区域进行纹理贴图。以上给出了播放速度的控制方案举例,需要说明的是使用系统时间结合源数据携带的速度信息建立纹理贴图索引并不是本发明实施例进行速度控制的唯一实现方式,本发明实施例对此不予限定。进ー步地,上述方法,还包括检测系统刷新频率,若系统刷新频率低于预定频率,则将开放图形库界面渲染进程休眠设定时间。由于图形图像程序的程序运行逻辑是渲染线程根据变量的变化不断的进行渲染,一般会导致系统的资源利用较高;因此,可在对系统的刷新频率要求不太苛刻的情况下(例如< 30fps),在渲染线程中加入休眠,如设置sleep (10),则可大大降低程序在系统中的资源利用。以源数据为GIF文件为例,对本发明实施例进行举例说明。本发明实施例只需要为每一类图像互换格式(Graphics Interchange Format, GIF)创建一个纹理数组资源,并把源数据载入到纹理数组资源中(可通过开源GIFA解码库提取其中的图像帧数据,亦可能采用其它方式提取其中的图像帧数据),载入的源数据视不同的数据格式不同而可能有所差别,如gif可以使用解码库解码成ー帧帧的图象帧数据,然后按播放顺序加载到纹理数 组中。然后,动画的播放和渲染处理只需通过几个动态的參数进行处理和控制,每ー份纹理资源数据可以渲染任意多个动态实例。可通过參数控制播放速度。具体实现如下一、动画资源数据初始化I、定义动画资源数据结构typedef struct textureArraylnfo {//树形结构纹理阵列信息
int id; //动画资源的标识符
int frame;//帧数
int speed;//帧播放速度
GLuint texture[]//纹理数组
}tex Ary Info;其中,id为动画的标识符,frame为动画的纹理的个数(纹理个数即动画的帧数),speed为此动画的显示速度,常速可设为I, texture []为纹理数组。其中,id字段的作用是说明数据结构中的数据可以作为唯一的资源存在,这样做 的好处是在多处创建或多处使用同一动画的数据时,只需指定使用的特定动画数据id,减少数据的重复创建和存储;在存在较多动画资源的情况下,可通过id进行资源的查找和调用。Speed字段是动画的播放速度,因每个资源中的动画的速度可能不同,可通过此參数进行调节。texture[]为纹理数据(纹理是指物体表面的纹理即使物体表面呈现凹凸不平的沟纹,同时也包括在物体的光滑表面上的彩色图案,通常我们更多地称之为花纹),它为不定长数组,在未对源数据进行解码之前,无法知道源数据中的的总帧数,在存放纹理数据前进行动态内存分配。这样做的优点是无论源数据中的帧数是否相同,均使用同一个数据结构,为管理大量的动画资源提供基础。2、创建动画资源实例创建动画资源实例texArylnfo giflnfo (该动画实例也可以直接采用动画资源数
据结构)
typedef struct texAry {
mt texia; mt frame; double speea;
GLuint texture [];
} stuTexAry;按照图像帧的显示顺序,将源数据图像帧加载到动画资源实例的结构中。本发明实施例对于源数据的类型,不做特别限制,如gif文件或视频文件等均可,亦可为多帧相同大小的静态图像,只需最终数据能够满足动画资源数据结构的要求就可以。3、动画资源实例參数赋值获取源数据的图像帧的帧数和显示速度(这里显示速度也可以是延迟时间,效果相同),赋值到动画资源实例的对应成员;其中动画资源的标识符的生成可通过递增的方式生成标识符,亦可使用其它方式生成只要保证标识在系统中的唯一性就可以了,然后将其赋值给纹理资源实例的id成员。ニ、opengl 窗ロ初始化I、opengl初始化,创建与动画相关的动态变量Opengl初始化,视具体环境而不同,此处以初始化glut窗ロ环境为例
glutlnit (&argc, argv); //初始化
glutlnitDisplayMode (GLUT DOUBLE); //初始化显示模式 glutlnitWindowSize (800, 800); //初始化窗 ロ 大小glutlnitWindowPosition (100, 100); //初始化窗 ロ 位置glutCreateWindow ("A Animation OpenGL Window”);//初始化创建窗ロ 一个动态的OpenGL窗ロ2、启动opengl渲染线程(即开始渲染,或绘图),此处以glut窗ロ环境为例glutDisplayFunc (display);display O为渲染回调函数。三、动画播放I、使用动画资源实例数据进行纹理贴图使用动画资源实例中的纹理数组中的数据成员对目标位置进行纹理贴图,具体可以是对目标区域的多边形进行纹理贴图,为创建正常的动画效果,目标区域的多边形的大小(长宽比)需要与纹理数据的宽高比成比例(即相似);目标区域亦可为其它类型的多边形,如三角形等,多种类型目标区域进行纹理贴图,可以得到特殊效果(如异形等)的动画效果。需要说明的是可以使用同一个动画资源实例为多个(不限)目标多边形进行纹理贴图,以得到在不同位置多个动画的效果。2、变更动画变量currentframe (当前系统时间,可以用于控制当前场景的当前所处的帧)动画变量currentframe,是动画的动的重要因素。在渲染结束时,会更新动画变量。动画速度的控制动画速度的控制相关的变量有可以有两个,动画变量currentframe,动画资源数据结构的成员speed ;其中currentframe的单位为微秒,可以换算成百分之一秒(与动画播放速度的单位一致)。在贴图的纹理中,此两个变量为纹理索引值index的因数,用于建立纹理索引。通过ー个动画变量控制多个不同帧数的动画播放,可以通过ー个重要的数据操作”摸”,又为mod,计算机语言中一般用” 来表示。帧纹理索引的变化Index = (currentframe*speed) % frame ;其中speed为GIF图像巾贞播放时间的倒数,在中贞播放过程中进行currentframe的更新。采用本实施例在姆次渲染后会更新纹理索引。其中渲染一般是指图像在显存中创建的过程,本发明实施例是指利用此动画资源中的纹理数据贴图的那个过程。对于其它过程不作限制。本发明实施例还提供了ー种开放图形库的动画处理装置,如图2所示,包括结构获取単元201,用于获取预定义的动画资源数据结构;动画资源数据结构包含纹理数据參数以及播放速度參数;数据获取単元202,用于从加载的源数据中获取源数据的纹理数据以及播放速度;赋值单元203,用于将获取到的源数据的纹理数据以及播放速度分别赋值给上述动画资源数据结构中的纹理数据參数以及播放速度參数;界面控制单元204,用于初始化开放图形库界面并启动开放图形库界面渲染进程;播放控制単元205,用于读取动画资源数据结构,按照上述播放速度使用上述资源数据结构中的纹理数据对上述开放图形库界面的目标区域进行纹理贴图。、采用本发明实施例装置,通过动画资源数据结构对图像帧进行渲染和控制,不需要为每ー个动态元素开ー个线程,因此可以減少系统资源消耗。进ー步地,上述动画资源数据结构还包含巾贞数參数;上述数据获取単元202,还用于从加载的源数据中获取源数据的帧数;将获取到的帧数赋值给上述动画资源数据结构中的帧数參数。进ー步地,如图3所示,动画资源数据结构还包含动画资源标识參数;上述装置还包括标识生成単元301,用于生成与源数据对应的动画资源标识;上述赋值单元203,还用于将生成的动画资源标识赋值给上述动画资源数据结构中的动画资源标识參数。可选地,上述纹理数据參数为纹理数组;上述数据获取単元202,用于从加载的源数据中获取源数据的纹理数据包括用于从加载的源数据中获取源数据的图像帧;上述赋值单元203,用于上述将获取到的源数据的纹理数据赋值给上述动画资源数据结构中的纹理数据參数包括按照上述源数据的图像帧的显示顺序存入纹理数组。进ー步地,如图4所示,上述装置,还包括索引建立単元401,用于获取当前系统时间;依据上述当前系统时间以及播放速度为上述纹理数据建立纹理贴图索引;上述播放控制単元205,具体用于按照上述纹理贴图索引用上述资源数据结构中的纹理数据对上述开放图形库界面的目标区域进行纹理贴图。进ー步地,如图5所示,上述装置,还包括休眠控制单元501,用于检测系统刷新频率,若系统刷新频率低于预定频率,则将开放图形库界面渲染进程休眠设定时间。值得注意的是,上述开放图形库的动画处理装置实施例中,所包括的各个单元只是按照功能逻辑进行划分的,但并不局限于上述的划分,只要能够实现相应的功能即可 ’另夕卜,各功能単元的具体名称也只是为了便于相互区分,并不用于限制本发明的保护范围。另外,本领域普通技术人员可以理解实现上述各方法实施例中的全部或部分步骤是可以通过程序来指令相关的硬件完成,相应的程序可以存储于ー种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。以上仅为本发明较佳的具体实施方式
,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明实施例揭 露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应该以权利要求的保护范围为准。
权利要求
1.一种开放图形库的动画处理方法,其特征在于,包括 获取预定义的动画资源数据结构;动画资源数据结构包含纹理数据参数以及播放速度参数; 从加载的源数据中获取源数据的纹理数据以及播放速度; 将获取到的源数据的纹理数据以及播放速度分别赋值给所述动画资源数据结构中的纹理数据参数以及播放速度参数; 初始化开放图形库界面并启动开放图形库界面渲染进程; 读取动画资源数据结构,并按照所述播放速度使用所述资源数据结构中的纹理数据对所述开放图形库界面的目标区域进行纹理贴图。
2.根据权利要求I所述方法,其特征在于,所述动画资源数据结构还包含帧数参数和动画资源标识参数; 所述方法还包括从加载的源数据中获取源数据的帧数;将获取到的帧数赋值给所述动画资源数据结构中的帧数参数; 生成与源数据对应的动画资源标识;并将生成的动画资源标识赋值给所述动画资源数据结构中的动画资源标识参数。
3.根据权利要求I所述方法,其特征在于,所述纹理数据图形与所述开放图形库界面的目标区域互为相似图形。
4.根据权利要求I至3任意一项所述方法,其特征在于,还包括获取当前系统时间;依据所述当前系统时间以及播放速度为所述纹理数据建立纹理贴图索引; 按照所述播放速度使用所述资源数据结构中的纹理数据对所述开放图形库界面的目标区域进行纹理贴图包括 按照所述纹理贴图索引用所述资源数据结构中的纹理数据对所述开放图形库界面的目标区域进行纹理贴图。
5.根据权利要求I至3任意一项所述方法,其特征在于,还包括 检测系统刷新频率,若系统刷新频率低于预定频率,则将开放图形库界面渲染进程休眠设定时间。
6.一种开放图形库的动画处理装置,其特征在于,包括 结构获取单元,用于获取预定义的动画资源数据结构;动画资源数据结构包含纹理数据参数以及播放速度参数; 数据获取单元,用于从加载的源数据中获取源数据的纹理数据以及播放速度; 赋值单元,用于将获取到的源数据的纹理数据以及播放速度分别赋值给所述动画资源数据结构中的纹理数据参数以及播放速度参数; 界面控制单元,用于初始化开放图形库界面并启动开放图形库界面渲染进程; 播放控制单元,用于读取动画资源数据结构,按照所述播放速度使用所述资源数据结构中的纹理数据对所述开放图形库界面的目标区域进行纹理贴图。
7.根据权利要求6所述装置,其特征在于,所述动画资源数据结构还包含帧数参数和动画资源标识参数; 所述数据获取单元,还用于从加载的源数据中获取源数据的帧数;将获取到的帧数赋值给所述动画资源数据结构中的帧数参数;所述装置还包括 标识生成单元,用于生成与源数据对应的动画资源标识; 所述赋值单元,还用于将生成的动画资源标识赋值给所述动画资源数据结构中的动画资源标识参数。
8.根据权利要求6所述装置,其特征在于,所述纹理数据参数为纹理数组; 所述数据获取单元,用于从加载的源数据中获取源数据的纹理数据包括用于从加载的源数据中获取源数据的图像帧; 所述赋值单元,用于所述将获取到的源数据的纹理数据赋值给所述动画资源数据结构中的纹理数据参数包括按照所述源数据的图像帧的显示顺序存入纹理数组。
9.根据权利要求6至8任意一项所述装置,其特征在于,还包括 索引建立单元,用于获取当前系统时间;依据所述当前系统时间以及播放速度为所述纹理数据建立纹理贴图索引; 所述播放控制单元,具体用于按照所述纹理贴图索引用所述资源数据结构中的纹理数据对所述开放图形库界面的目标区域进行纹理贴图。
10.根据权利要求6至8任意一项所述装置,其特征在于,还包括 休眠控制单元,用于检测系统刷新频率,若系统刷新频率低于预定频率,则将开放图形库界面渲染进程休眠设定时间。
全文摘要
本发明实施例公开了一种开放图形库的动画处理方法和装置,本发明实施例方法包括获取预定义的动画资源数据结构;动画资源数据结构包含纹理数据参数以及播放速度参数;从加载的源数据中获取源数据的纹理数据以及播放速度;将获取到的源数据的纹理数据以及播放速度分别赋值给所述动画资源数据结构中的纹理数据参数以及播放速度参数;初始化开放图形库界面并启动开放图形库界面渲染进程;读取动画资源数据结构,并按照所述播放速度使用所述资源数据结构中的纹理数据对所述开放图形库界面的目标区域进行纹理贴图。通过动画资源数据结构对图像帧进行渲染和控制,不需要为每一个动态元素开一个线程,因此可以减少系统资源消耗。
文档编号G06T13/00GK102663796SQ20121011205
公开日2012年9月12日 申请日期2012年4月16日 优先权日2012年4月16日
发明者郑凤朝 申请人:广东威创视讯科技股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1