閱讀46 返回首頁    go 阿裏雲 go 技術社區[雲棲]


depth test與blend(深度測試與混合)

    OpenGL中的blend在開啟後,可以讓開啟後繪製的圖形與已經繪製在幀緩存中的圖形做混合,例如,先繪製a,然後開啟混合,定義混合方式為使用各自的alpha,然後繪製b,那麼結果應該是a與b重合的地方為兩者的顏色融合效果。

   但是我今天在這個地方犯了一個錯誤,我先繪製一個a,然後開啟混合,然後在a的後麵繪製了b,結果沒有出現混合效果,而隻是繪製了a。我後來才明白原來在opengl中深度測試發生於混合之前,也就是繪製結束後,首先進行深度測試,這是b繪製在a後麵,已經不能通過深度測試,所以渲染管線已經放棄繪製b,自然就無法走到後麵階段的混合。要想混合隻有在繪製b前將深度測試關閉,或者先繪製b,再繪製a。

   總之一句話,在渲染管線中,顯示頂點處理,再是片段處理,然後是各種測試,最後才是混合、邏輯操作等幀緩存的操作。在開啟深度測試時,隻有後繪製在前麵一些的圖形才會將其與被它遮蓋的圖形混合.

最後更新:2017-04-02 03:42:38

  上一篇:go JavaScript程序編碼規範 中文版本
  下一篇:go 3d圖形渲染中表層GUI製作的一種方法