[程式]為曲面加上格線問題(DirectX 9)

看板GameDesign (遊戲設計)作者 (卡曼都)時間8年前 (2017/08/18 11:00), 8年前編輯推噓7(7015)
留言22則, 4人參與, 最新討論串1/1
各位先進好,雖然我沒打算走遊戲設計,不過這裡跟DirectX比較有關聯 所以過來這求助 簡單來說我要用DirectX 繪製一個曲面加上格線以及座標軸 目前的做法是座標軸、曲面、格線分3個物件各用DrawPrimitive畫出來 成果如下圖 http://imgur.com/KoN7YqY
問題在紅圈處有些預想應該被白色曲面遮住的格線顯示了出來 看起來比較像白色曲面畫完的平面被格線疊上去 之後我有試著打開Z-buffer但狀況沒改善 所在這種狀況下不適合用DrawPrimitive繪製物件? 因為我只靠google+MSDN自幹找不到好的解決方法 希望可以有人指點一二 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 140.115.66.73 ※ 文章網址: https://www.ptt.cc/bbs/GameDesign/M.1503025224.A.B1A.html ※ 編輯: commandoEX (140.115.66.73), 08/18/2017 11:01:12

08/18 12:33, , 1F
depth test 不是本來就應該開嗎?
08/18 12:33, 1F

08/18 12:34, , 2F
沒開就看誰後畫誰就會在上層
08/18 12:34, 2F
現在是用SetRenderState中設定 D3DRS_ZEnable→true //啟動Zbuffer D3DRS_ZWriteEnable→true //Zbuffer可寫 D3DRS_ZFunc→lessequal //留下小於等於的值 我想這樣設應該沒錯? 如果在D3DPresentParameter裡設定 EnableAutoDepthStencil→True AutoDepthStencilFormat→D3DFMT_D24X8 這樣反而繪製不出物件

08/18 12:35, , 3F
然後如果 model 沒位移,兩個 polygon 疊在一起可能會
08/18 12:35, 3F

08/18 12:35, , 4F
有 z fighting
08/18 12:35, 4F
目前是格線的Y值是原始資料+1讓他飄在曲面上

08/18 12:57, , 5F
depth test沒設定對吧,多檢查一下,跟DrawPrim應該沒
08/18 12:57, 5F

08/18 13:06, , 6F
有關係
08/18 13:06, 6F
※ 編輯: commandoEX (140.115.66.73), 08/18/2017 14:26:35

08/18 14:33, , 7F
或許這是個蠢問題,不過還是小心為上,你一開始有
08/18 14:33, 7F

08/18 14:33, , 8F
創造z buffer嗎? 設定都正確,一開始沒有創造和連結
08/18 14:33, 8F

08/18 14:34, , 9F
還是一樣不會有效果
08/18 14:34, 9F
感謝提點! 剛剛檢查程式碼還真的漏了CreateDepthStencilSurface來創造Zbuffer... 畫出來的格線終於正常了 http://imgur.com/FqRZh6I
※ 編輯: commandoEX (140.115.66.73), 08/18/2017 15:08:32

08/18 15:30, , 10F
可喜可賀
08/18 15:30, 10F

08/18 16:03, , 11F
另外不建議用Y+1這種作法讓格線畫在曲面上
08/18 16:03, 11F

08/18 16:04, , 12F
因為只要繪製尺寸一改,有機會明顯漏餡
08/18 16:04, 12F

08/18 16:05, , 13F
其實你這張圖已經有點露餡了,近看可以看到格線浮空
08/18 16:05, 13F

08/18 16:05, , 14F
建議用內建z bias或在pixel shader裡面自己實作z bias
08/18 16:05, 14F

08/18 16:06, , 15F
繪製格線的時候,在normalized device coordinate
08/18 16:06, 15F

08/18 16:07, , 16F
做最終Z值微調,移到曲面正前方,且沒有任何視覺誤差
08/18 16:07, 16F

08/18 16:40, , 17F
原來還有最終 Z 值微調這招
08/18 16:40, 17F
謝謝您的建議 大概就是把偏移方向改到視線向量來會比較適當? ※ 編輯: commandoEX (140.115.220.131), 08/18/2017 22:29:22

09/06 05:09, , 18F
好懷念 題外問一下? DirectX9是我那個年代的主流 後期
09/06 05:09, 18F

09/06 05:10, , 19F
我印象到了DX11 現在開發3D還是用DX9嗎?@@ 我那年代指的
09/06 05:10, 19F

09/06 05:10, , 20F
是十二年前左右 現在沒有其它主流SDK了嗎@@?
09/06 05:10, 20F

09/06 06:35, , 21F
最新圖像API是DX12, OpenGL 4.6, 和Vulkan
09/06 06:35, 21F

09/06 06:36, , 22F
Windows 7以後都不能用DX9
09/06 06:36, 22F
文章代碼(AID): #1PbbX8iQ (GameDesign)
文章代碼(AID): #1PbbX8iQ (GameDesign)