Re: [分享] 用緩存mesh和vert shader實作debug draw
→
10/01 12:04,
10/01 12:04
→
10/01 12:07,
10/01 12:07
Gizmos應該不太一樣
主要能夠在畫面上動態繪製的方法有三種:
1. Debug.DrawLine
2. Gizmos.Draw*
3. Graphics.Draw*
(GL.* 因為是效能不佳的immediate mode所以就不考慮了)
三者各有不同,以下分辨一下
Debug.DrawLine
顧名思義,就是debug draw線條
預設只有editor mode的時候會顯示,play mode的時候要額外打開gizmos選項才會顯示
不會被編譯進build輸出的執行檔,所以不會在成品中顯示
Gizmos.Draw*
需要跟物件的OnDrawGizmos綁定才有辦法發揮作用
在物件的OnDrawGizmos中繪製的圖形會成為物體點選區域的一部份
(原理該是繪製時額外在stencil buffer上寫入物件ID,再藉由滑鼠點選像素取樣)
可透過Gizmos.color更改整體圖形繪製的顏色,除此之外無法客製渲染方法
Gizmos.DrawMesh可繪製任意圖形,但是仍有單色且無法客製渲染方法的限制
只有editor mode才會顯示,無法在play mode中當debug draw用
而且不會被編譯進build輸出的執行檔,所以也不會在成品中顯示
Graphics.Draw*
這是泛用型繪製指令,所有mode之下都可以顯示
也無需跟物件綁定,任何script都可以用Graphics.Draw*任意繪製或視覺化資料
可用mesh繪製任意圖形,且可以用客製vertex/fragment/surface shader
效能高、可用shader客製、又各mode可用,所以是我debug draw的首選
唯一做不到的就是像Gizmos一樣可以擴增物件點選區域
但如果有需要的話,把我的cached mesh邏輯抽離出來就可以和Gizmos共用了
以上是我的個人理解
但最近才剛開始研究Unity,可能有搞錯什麼細節
有錯煩請指正
--
Web http://AllenChou.net
Twitter http://twitter.com/TheAllenChou
LinkedIn http://linkedin.com/in/MingLunChou
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 104.174.112.138
※ 文章網址: https://www.ptt.cc/bbs/GameDesign/M.1506833439.A.F5A.html
※ 編輯: cjcat2266 (104.174.112.138), 10/01/2017 13:05:11
→
10/01 13:05,
6年前
, 1F
10/01 13:05, 1F
→
10/01 13:11,
6年前
, 2F
10/01 13:11, 2F
→
10/01 13:12,
6年前
, 3F
10/01 13:12, 3F
→
10/01 13:13,
6年前
, 4F
10/01 13:13, 4F
→
10/01 13:14,
6年前
, 5F
10/01 13:14, 5F
→
10/01 13:15,
6年前
, 6F
10/01 13:15, 6F
※ 編輯: cjcat2266 (104.174.112.138), 10/01/2017 14:51:29
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 3 之 3 篇):