glColor4f() - alpha值的影响

Ice*_*man 8 c opengl opengl-es

我正在使用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);
Run Code Online (Sandbox Code Playgroud)

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

Tim*_*Tim 14

如果要使用透明度,则需要启用混合:

glEnable(GL_BLEND);

另请参阅glBlendFunc以设置混合功能.

  • 很好的答案,@Tim。它的用法在 OpenGL wiki 上有很好的记录,但这里有一个示例混合函数,以防万一:`glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);` (2认同)