Re: [程式] DirectX有做object culling嗎?
※ 引述《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
討論串 (同標題文章)
GameDesign 近期熱門文章
PTT遊戲區 即時熱門文章