1我們可以在Global進行alpha測試嗎?OpenGL,關於alpha測試並繪製高效位圖
glEnable(GL_ALPHA_TEST);
glAlphaFunc(GL_EQUAL, 0.7);
使用這兩個功能,我們可以得出一個紋理並顯示該圖像,其中的α> = 0.7。我的問題是如果我繪製2紋理的某些部分重疊,他們的alpha總和爲0.7,如何顯示這部分?
2如何繪製位圖更有效
關於問題1,我嘗試一些功能在OpenGL中,並沒有達到。所以我嘗試另一種方式。我設置了map[512][512]
。我首先在該地圖上繪製所有紋理並自己累積阿爾法。如果一個像素alpha> = 0.7,我設置它的顏色,如果沒有,我設置白色。最後,我將整個地圖作爲紋理繪製到窗口中。使用這種方法,我可以在全球範圍內實現alpha測試。但它非常非常慢。
(此方法來自鮑爾泰克Banachewicz在計算器)
這裏是我的功能:
初始化
map[512][512]
全部設置爲零繪製這張地圖上的每一件事情,並積累阿爾法
循環地圖上的每個像素,根據那裏設置它們的顏色alpha
使用
glTexImage2D()
生成的紋理(我想這可能是緩慢的)使用glTexCoord2f
和glVertex3f
得出這個窗口上。
使用這種方法,我得出100的事情,它變得非常緩慢(約20 FPS)
我能做些什麼來優化這種方法還是有另一個成就是什麼?
既然你引用了我 - 這只是一種方法。如果您使用軟件(基於CPU)處理實施它,它當然會很慢。關鍵是在兩個過程中都使用着色器(甚至是普通紋理/測試)。嘗試使用FBO而不是'map [512] [512]'。 –
無論如何,相關http://stackoverflow.com/q/11915548/752976 –
大聲笑,你幫我很多 – vvilp