以下代码片段绘制了一个灰色方 block 。
glColor3b(50, 50, 50);
glBegin(GL_QUADS);
glVertex3f(-1.0, +1.0, 0.0); // top left
glVertex3f(-1.0, -1.0, 0.0); // bottom left
glVertex3f(+1.0, -1.0, 0.0); // bottom right
glVertex3f(+1.0, +1.0, 0.0); // top right
glEnd();
在我的应用程序中,这个正方形后面有一个彩色立方体。
我应该使用什么函数使正方形(并且只有这个正方形)不透明?
最佳答案
在 init 函数中,使用这两行:
glEnable(GL_BLEND);
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
并且在您的渲染函数中,确保使用 glColor4f
而不是 glColor3f
,并将第四个参数设置为所需的不透明度级别。
glColor4f(1.0, 1.0, 1.0, 0.5);
glBegin(GL_QUADS);
glVertex3f(-1.0, +1.0, 0.0); // top left
glVertex3f(-1.0, -1.0, 0.0); // bottom left
glVertex3f(+1.0, -1.0, 0.0); // bottom right
glVertex3f(+1.0, +1.0, 0.0); // top right
glEnd();
关于c++ - 如何在 OpenGL 中设置顶点的不透明度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/721705/