以下代码段绘制了一个灰色正方形。

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,并将第4个参数设置为所需的不透明度级别。
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/

10-10 12:24