以下代码段绘制了一个灰色正方形。
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/