基于OpenGL ES3D图形绘制管线优化问题.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
基于OpenGL ES3D图形绘制管线优化问题

基于OpenGL ES3D图形绘制管线优化问题   摘要:目前,在嵌入式设备上(如手机)的3D游戏开发总是基于一定的图形API来进行的。OpenGL ES是为嵌入式系统而开发的3D图形绘制编程接口。在基于嵌入式的3D游戏开发过程中,由于硬件资源的相对不足,要得到绘制效果较理想的图形,就需要优化3D图形绘制过程。采用最新的图形管线理论,将OpenGL ES的3D图形管线绘制过程划分为七个管线绘制部分(这七个部分归属于三个绘制阶段),分析每个绘制部分的主要工作,在此基础上针对各个阶段提出了相应的优化方法。   关键词:OpenGL ES; 图形管线 ; 嵌入式3D游戏   中图法分类号:TP391.4文献标识码:A   文章编号:1001-3695(2007)01-0215-03      目前,在嵌入式设备上(如手机)的3D游戏开发总是基于一定的图形API来进行的,OpenGL ES是其中性能卓越的一种API,它被广泛地使用在许多手机3D游戏中,如MotoGP2,SpeedGun Stadium,GalacticRealms等。由于当前手机硬件性能相对较低,游戏总是会受到一些软硬件的限制,影响游戏画面的绘制效果和表现力。为了增强游戏的表现力,有必要对图形绘制过程的优化方法进行研究。本文在分析OpenGL ES图形管线绘制过程的基础上总结了3D游戏开发过程中相应的优化方法。??      1OpenGL ES 3D图形管线绘制过程??      在现实世界中,管线概念的表现方式非常多,如输油管道、车间流水线、缆车等。一条管线通常包括多个阶段,无论其中某个阶段速度有多快,管线的整体快慢程度是由管线中最慢的那个阶段决定的。在图形绘制中也存在这种管线结构,最慢的管线阶段决定绘制速度,即图像更新速度。最慢的管线阶段称为瓶颈。瓶颈阶段会限制绘制过程中的整个吞吐量,从而影响总体绘制性能,因此它成为优化的主要对象。??   图1是OpenGL ES 3D图形管线的绘制过程[1]。图中顶点部分是3D几何学所处理的顶点世界,像素部分是存储在帧缓冲里的像素世界。??   CPU部分负责图形管线绘制过程中几何数据进出的转换。几何存储部分是连接设备驱动内存和图形内存的桥梁,它负责在处理过程中临时保存顶点的几何数据,为后面的处理作准备。OpenGL ES的几何存储支持的数据类型有Byte,Short,Fixed,Float[2]。几何处理器部分负责顶点和纹理坐标的对应转换。几何处理器与光栅器之间存在着一种称之为浮点型数据处理管线的结构,通过它把各种数据类型的坐标值转换成内部浮点数形式。光栅器要将每一个三角形的边及其内部区域光栅化,同时要负责图形管线的像素插值。片段处理器就是分析像素片段的阴影、着色,然后把这些结果放入帧缓冲。纹理存储就是采用某种格式保存纹理数据。OpenGL ES支持的格式有每像素8位,16位和32位[2]。纹理过滤采用LOD驱动。帧缓冲所处理的图形数据直接提供给LCD显示设备所用。外置存储芯片用于帧缓冲、VBO(Vertex Buffer Object)和纹理数据。OpenGL ES的驱动程序为这三者在外置存储芯片上分配空间。??      23D图形管线绘制的优化??      3D图形管线绘制的优化包含两个主要步骤:①对管线的瓶颈位置进行定位;②以某种方式对该瓶颈阶段进行优化处理后,如果没有达到预期的性能目标,就继续重复步骤①。需要注意的是,瓶颈位置在优化之后有可能还处于优化前的位置。比较理想的状况是尽可能对瓶颈进行优化,保证瓶颈位置能够转移到另外一个阶段。在这个阶段再次成为瓶颈之前,必须对其他阶段进行优化处理。??      2.1瓶颈定位??   由于优化过程非常耗时,因此要对图形管线中的每个阶段进行最优化处理,这在实际操作中是不可行的。如果对每个阶段均进行优化,虽然可以提高一定的性能,但同时会花费开发人员大量的时间,甚至还可能牺牲绘制质量;此外对每个阶段都进行优化的另一个缺点,那就是不知道管线的哪个阶段是瓶颈。实际上可以通过对瓶颈阶段进行优化处理来大幅度提高绘制质量而不影响总体性能。??   一种瓶颈定位的方法是进行大量的阶段测试。阶段测试的一个方法是每测试一次只影响一个阶段,如果总的绘制时间受到影响,就可以找到瓶颈位置;阶段测试还有一个方法,就是在保持被测阶段工作负载的情况下,减少其他阶段的工作量,如果性能没有变化,那么瓶颈所在的位置就是工作量没有改变的阶段。??   因此瓶颈定位的方法可转换为阶段测试问题。为了阐述方便,将图1的七个管线阶段粗略划分为三个阶段,即CPU阶段(CPU部分)、几何阶段(几何存储、几何处理器部分)和光栅阶段(光栅器、片段处理器、纹理存储和过滤、帧缓冲部分)

文档评论(0)

3471161553 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档