查看: 2438|回复: 0
打印 上一主题 下一主题

三维渲染程序有如下结构【转载】

[复制链接]

220

主题

3

听众

2871

积分

中级设计师

Rank: 5Rank: 5

纳金币
2618
精华
14

最佳新人 活跃会员 热心会员 灌水之王 突出贡献

跳转到指定楼层
楼主
发表于 2013-5-21 22:15:46 |只看该作者 |倒序浏览
一个典型的三维渲染程序有如下结构:



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

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

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

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

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

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

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

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

分享到: QQ好友和群QQ好友和群 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
转播转播0 分享淘帖0 收藏收藏0 支持支持0 反对反对0
踏踏实实做人,老老实实做事!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

手机版|纳金网 ( 闽ICP备2021016425号-2/3

GMT+8, 2024-11-28 07:32 , Processed in 0.086662 second(s), 32 queries .

Powered by Discuz!-创意设计 X2.5

© 2008-2019 Narkii Inc.

回顶部