OpenGL OpenGL下的alpha融合

2021-06-22 21:00:19 字數 691 閱讀 3827

alpha混合理論見前一篇部落格:

alpha融合必須對物體設定不同的z值,可以通過glvertex3*繪製指定不同z值;或者通過glvertex2*繪製,呼叫gltranslate3f/d設定不同的z值。

opengl繪製二維圖形,進行alpha融合時候,如果所有二維圖形具有相同的zvalue=0.0f,即使進行了正確的alpha融合設定,最終每個圖形只是和視窗背景進行融合,圖形間的融合並不會融合。

圖1:扇形的alpha  = 0.4f,矩形的alpha = 0.2f,二者的zvalue = 0.0f。觀察可以發現他們都跟背景灰色進行了正確的alpha融合,但是二者間沒有融合。

圖2:扇形的alpha = 0.4f,zvalue = 0.0f;矩形的alpha = 0.2f,zvalue = 0.1f。此時融合正確!

其實就是一堆廢話,但是就因為乙個z值導致alpha混合失敗,這個問題困擾了我好久~

-ryf 2011/4/16

繪製的時候,對所有的圖形按照z值從小到大排序,順序繪製,這樣才能正確融合!!

-ryf 2012/3/3

謝謝gamemagic的指教,繪製2d禁掉深度測試,設定alpha值,可以達到預期的效果;或者開啟深度測試模式下,所有圖元必須按照深度值排序,從後往前繪製,,這個做法主要針對3d空間中。。。

深入了解OpenGL OpenGL的演化

因為在opengl2.0之前,opengl基本的設計是作為固定功能狀態機,所以要修改opengl的唯一方法是對它定義擴充套件。這樣,在各種opengl實現中,要通過擴充套件的形式來暴露新的功能,從而有了大量可用的擴充套件。opengl有乙個定義良好的擴充套件機制,並且硬體製造商可以自由地定義並實現新...

diskpart 下的clean下的恢復資料

非常不小心,執行了diskpart 下的clean 結果250g的硬碟就成了乙個未使用的磁碟。如何恢復遭diskpart clean清除的硬碟分割槽?回答 1.diskgen手動掃瞄應該是可以的,如果不行那就只能找專業公司了,我沒見過比這個更厲害的軟體 恢復分割槽 還有就是你知道原分割槽大小和個數,...

linux下解壓windows下的rar檔案

1 在windows平台下生成的rar壓縮檔案,在linux平台下預設不支援,所以要想在linux下解壓windows下的rar檔案,需要安裝linux版本的rar軟體。tar zxvf rarlinux 4.2.0.tar.gz 解壓之後生成rar目錄 3 進入rar目錄,執行make命令進行安裝...