作者ppaass (Qoo~)
看板GameDesign
标题Re: [程式] DirectX有做object culling吗?
时间Sun Feb 25 15:15:10 2007
※ 引述《littleshan (我要加入剑道社!)》之铭言:
: 因为你的视角会变 也就是 viewing frustum 会变
: 所以事先对 model 做 clipping 没办法得到什麽好处
: 每次视角改变你都要重新 clip 一次
: 这和丢给 GPU 做 clipping 没什麽不同
ㄟ...原提问者可能把 clipping 跟 object culling (或称 visibility culling)搞
混了。
clipping: 在 rendering pipeline 中,在 vertex transform 之後,把 viewport
外的 polygon 部份切除掉。
object culling: 在 rendering pipeline 之前,预先把看不见的物体整个地(或部
分地)过滤掉,该物体就不进 rendering pipeline 去描绘了。
就描绘来说,用对方法和地方的话,object culling 会有很大的效能提升,前提是
用对方法和地方,并没有一个通用的方法对所有的场景都得到最好的效果,例如:
对於室内场景,有很多墙壁去遮挡住另一个房间的物体,可以考虑用遮挡测试的方法
来做 object culling。
对於飞行模拟,物体分散地来自四面八方,用 frustum culling 或 octree 或许会
得到最好的效果。
对於地图式游戏,物体平铺在某个平面上,直接检查座标范围就好。
然而对於所有物体紧密排列,或观察范围遍及整个场景,使得 object culling 几乎
没有效果的场景,对这种场景做 object culling 反而是伤害效能。
因为没有通用的 object culling 方法,必须因时因地制宜采用不同方法,所以
DirectX 没有内建 object culling 机制。
--
/* 免费软体与视窗程式设计教学:
*
http://shukaiyang.myweb.hinet.net/indextc.htm */
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 122.124.101.93