推 Bencrie: depth test 不是本來就應該開嗎? 08/18 12:33
→ Bencrie: 沒開就看誰後畫誰就會在上層 08/18 12:34
現在是用SetRenderState中設定
D3DRS_ZEnable→true //啟動Zbuffer
D3DRS_ZWriteEnable→true //Zbuffer可寫
D3DRS_ZFunc→lessequal //留下小於等於的值
我想這樣設應該沒錯?
如果在D3DPresentParameter裡設定
EnableAutoDepthStencil→True
AutoDepthStencilFormat→D3DFMT_D24X8
這樣反而繪製不出物件
→ Bencrie: 然後如果 model 沒位移,兩個 polygon 疊在一起可能會 08/18 12:35
→ Bencrie: 有 z fighting 08/18 12:35
目前是格線的Y值是原始資料+1讓他飄在曲面上
推 cjcat2266: depth test沒設定對吧,多檢查一下,跟DrawPrim應該沒 08/18 12:57
→ cjcat2266: 有關係 08/18 13:06
※ 編輯: commandoEX (140.115.66.73), 08/18/2017 14:26:35
推 cjcat2266: 或許這是個蠢問題,不過還是小心為上,你一開始有 08/18 14:33
→ cjcat2266: 創造z buffer嗎? 設定都正確,一開始沒有創造和連結 08/18 14:33
→ cjcat2266: 還是一樣不會有效果 08/18 14:34
感謝提點!
剛剛檢查程式碼還真的漏了CreateDepthStencilSurface來創造Zbuffer...
畫出來的格線終於正常了
http://imgur.com/FqRZh6I
※ 編輯: commandoEX (140.115.66.73), 08/18/2017 15:08:32
推 cjcat2266: 可喜可賀 08/18 15:30
推 cjcat2266: 另外不建議用Y+1這種作法讓格線畫在曲面上 08/18 16:03
→ cjcat2266: 因為只要繪製尺寸一改,有機會明顯漏餡 08/18 16:04
→ cjcat2266: 其實你這張圖已經有點露餡了,近看可以看到格線浮空 08/18 16:05
→ cjcat2266: 建議用內建z bias或在pixel shader裡面自己實作z bias 08/18 16:05
→ cjcat2266: 繪製格線的時候,在normalized device coordinate 08/18 16:06
→ cjcat2266: 做最終Z值微調,移到曲面正前方,且沒有任何視覺誤差 08/18 16:07
→ Schottky: 原來還有最終 Z 值微調這招 08/18 16:40
謝謝您的建議
大概就是把偏移方向改到視線向量來會比較適當?
※ 編輯: commandoEX (140.115.220.131), 08/18/2017 22:29:22
推 hodsala: 好懷念 題外問一下? DirectX9是我那個年代的主流 後期 09/06 05:09
→ hodsala: 我印象到了DX11 現在開發3D還是用DX9嗎?@@ 我那年代指的 09/06 05:10
→ hodsala: 是十二年前左右 現在沒有其它主流SDK了嗎@@? 09/06 05:10
推 cjcat2266: 最新圖像API是DX12, OpenGL 4.6, 和Vulkan 09/06 06:35
→ cjcat2266: Windows 7以後都不能用DX9 09/06 06:36