Re: [程式] 請教DirectX 後面的牆壁會透過去
※ 引述《chchwy (mat)》之銘言:
: 自問自答
: 雖然我不知道為什麼 不過這個問題跟near plane有關
: 似乎near plane太小 Z-Buffer就會失效
: 我自己實驗near plane的距離
: 0.5 => Z-Buffer有開等於沒開
: 1.0 => 狀況大有改善,只剩牆壁邊緣一小塊有問題
: 1.5 => 問題完全消失
: 問題是解決了...不過為什麼 就有待高人指點了orz..
其實是z buffer解析度的問題.
想像成從near plane到far plane被分成固定的解析度0 ~ 1.0 (可以先想像它分成256段)
(其實靠近near plane的地方分到的解析度比較多)
當near與far相對於物體極端的大的時候.(也就是近的太近,遠的太遠)
(這是新手常犯的錯誤,以為range設大一點可以涵蓋比較多)
物體的前後的深度就因為浮點數精度的關係被視為相等,(被放在256段裡面的同一段)
會發生後面的三角面反比前面的三角面來的前面的錯誤結果.
通常會造成物體的閃爍(一下後面的三角面跳到前面,一下又躲回去)
(通常是多層正面的物體)
正確的做法之一是分析場景中的所有物體,適當的給予正確的near與far.
讓所有的物體暨可以都看得見,又同時共享最大的深度資源.
正確的做法之二是使用z-bias這個功能,確保後畫的比較靠近.(特殊狀況會這樣用)
--
"May the Balance be with U"(願平衡與你同在)
視窗介面遊戲設計教學( http://0rz.tw/V28It ),討論,分享。歡迎來信。
視窗程式設計(Windows CLR Form)遊戲架構設計(Game Application Framework)
遊戲工具設計(Game App. Tool Design )
電腦圖學架構及研究(Computer Graphics)論文代讀(含投影片製作)
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.96.77.176
推
12/23 23:38, , 1F
12/23 23:38, 1F
→
12/23 23:41, , 2F
12/23 23:41, 2F
推
12/26 22:52, , 3F
12/26 22:52, 3F
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 3 之 3 篇):
GameDesign 近期熱門文章
PTT遊戲區 即時熱門文章
32
53