2012-04-16 75 views
7

我正在使用glColor4f()。令人驚訝的是,改變阿爾法即第四個參數不會導致透明度的任何變化。代碼段是:glColor4f() - alpha值的影響

const GLfloat squareVertices[] = { 
0.5, 0.5, 0.0, 
-0.5, 0.5, 0.0, 
0.5, -0.5, 0.0, 
-0.5, -0.5, 0.0}; 

glEnableClientState (GL_VERTEX_ARRAY); 
glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT); 
glColor4f (1.0, 0.0, 0.0, 0.5); 
glLoadIdentity();  
glTranslatef(0, 0, -5); 
glVertexPointer(3, GL_FLOAT, 0, squareVertices); 
glDrawArrays(GL_TRIANGLE_STRIP, 0, 4); 

任何指向我可能會出錯的地方?

回答

13

您需要啓用混合,如果你想使用透明度:

glEnable(GL_BLEND);請參閱glBlendFunc設置混合功能。

+0

感謝您的指針。 – Iceman 2012-04-16 21:58:12

+0

好的答案,@Tim。它的用法在OpenGL wiki上有很好的記錄,但這裏有一個示例混合函數,以防萬一:'glBlendFunc(GL_SRC_ALPHA,GL_ONE_MINUS_SRC_ALPHA);' – Fernando 2017-03-15 17:30:02