纳金网

标题: 三维渲染程序结构【转载】 [打印本页]

作者: 王者再临    时间: 2014-8-29 14:17
标题: 三维渲染程序结构【转载】

    外部应用模块根据渲染引擎的要求,将三维数据组织成其识别的数据结构,然后传递给渲染引擎;渲染引擎根据需要调用设备管理模块;最后由对DirectX、OpenGL等硬件API进行了封装的虚拟设备将三维图形绘制在屏幕上。

    其中渲染引擎的作用就是提供高效的显示大型场景的能力;其目的在是最小化处理过程,让GPU花费的时间和内存最小,同时还要在有限的时间范围内满足我们对图形质量的要求。为了达到这些目的,渲染引擎常常使用如下的一些技术:

l 平截体拣切,将屏幕之外的物体去掉

l 遮挡拣切,将被其他物体遮挡的物体去掉

l LOD选择,将远处的物体使用较少的三角面片来显示

l 由前至后渲染,这样就可以将需要着色的像素的数目减小到最小

    对于某一个渲染引擎来说,这些技术并不一定都需要。渲染引擎的目的是加速遍历和显示三维物体,但是对于一些包含物体并不多的小场景来说,逐个遍历和显示所有物体也是可以接受的。比如说,一个地形渲染系统就不同于二维图形系统,同时它们跟CAD建模系统也不同。所以,我们需要根据所处理的场景来选择使用哪些渲染引擎技术。

    设备管理模块维护着渲染引擎传过来的三维数据,比如网格、纹理。它是能够调用虚拟设备的唯一方式。虚拟设备是对DirectX、OpenGL等图形API的封装,一般都要求短小高效。而设备管理模块对向虚拟设备传递什么样的渲染数据是有策略的,比如说,如果两个要渲染的对象有相同的材质,那么设备管理模块就不会在渲染这两个对象之间重新设置材质数据,因为状态切换是非常消耗GPU资源的;另外,设备管理模块还能将很多小的对象合并成一个对象,从而提高GPU的效率。设备管理模块还有管理GPU资源,释放内存等功能。


作者: hyui    时间: 2014-8-29 16:58
Good to know !




欢迎光临 纳金网 (http://c-www.narkii.com/club/) Powered by Discuz! X2.5