图形渲染优化技巧

1.淘汰

    最好的增加每秒钟描画到屏幕上的次数的方法是在每次迭代中都减少描画在屏幕上的数目的总量。你的场景可能同时拥有成百上千的物体,但是如果你只需要描述其中的一小部分,你仍然可以将屏幕渲染得很快。

    淘汰是从描画路径上移除不必要的物体。你可以在多层次上同时进行淘汰。例如,在一个高层次,一个用户在一间关闭了门的房间里面是看不到隔壁房间的物体的,所以你不必描画出隔壁其他物体。

    在一个低层次,3D图像引擎会经常移除部分你让它们描画的网格。例如,在任意合适的给定时间点,半数的网格几何体在摄影机背面,你从摄像机中看不到这些网格,看到的只是摄影机前方的网格,因此,当网格被渲染时,所有的在摄影机背后的网格都会被忽略。这叫做背面淘汰(背面消隐)。

2.纹理排序
    每次当一个物体被渲染到屏幕上时,图形硬件都会将纹理源文件载入到内存中。这是被称作上下文交换(context switching)的一部分。

    如果要将三幅图片描画到屏幕上,而其中两幅图片共用同一个纹理资源,有两种办法来处理纹理排序:高效的方法是连续的渲染两幅共享资源的图片,这样只需要以此上下文交换,而低效的方法则需要两次上下文交换。你不应该将第三幅图片放在共享纹理的两幅图片之间描画。

    在渲染处理过程中,通过排列共享纹理的物体可以减少上下文交换的次数,从而提高渲染速度。

3.使用智能纹理文件
    在一开始就计划好纹理组织结构可以帮助你以最优化方式排列你的纹理。假设你准备在你的游戏中描画几何体,一个主角和一些生物。

    如果前两个关卡是草地,接下来的关卡是沙漠,你可以将所有的树木、草、灌木、岩石以及花儿的图片来放到一起来渲染前两关,并将沙子图片放在另外一个纹理文件中用来渲染第三关。同样的,你可以将玩家虚拟人偶放到一个纹理中。如果所有的生物在所有关卡中都用到了,最优的方式可能是将它们放在一个纹理文件中。但是,如果第一关有吼猴与鼯鼠,而第二关只有森林鼠与苏里南蛤蟆,你可以将第一次前两种动物放在一个纹理中,将后两种放在一个纹理中。

4.资源管理
    大部分的视频游戏在一个时间点只会渲染它们所有图片内容的一小部分。将所有纹理同时载入内存是非常低效的。

    幸运的是,游戏设计通常决定了哪些资源在游戏的各个章节是可见的。通过保留必须的纹理为载入状态并卸载不使用的纹理,可以最有效的利用有限的内存资源。

    还是使用前一节的例子,当游戏引擎载入第一关时,资源管理代码必须确保 吼猴与鼯鼠的纹理被载入到内存中。当程序进行到下一关时,资源管理代码会卸载那些纹理,因为它已经知道它们不会在第二关被使用。

5.细节层次
    另外一个优化技巧,尤其是对3D图像,叫做细节层次。考虑当一个物体远离摄像机时,它看起来非常小,而且大部分细节都丢失了。你可以描画一个同样大小,却仅拥有简单网格的物体,或者甚至一张平面贴图。

    通过保留不同细节层次的物体的副本在内存中,图像引擎可以根据与摄像机的距离决定使用哪个副本。

 

 (摘自http://blog.csdn.net/weiqubo/article/details/7523651)

 

你可能感兴趣的:(优化,图形渲染)