我正在glColor4f中测试alpha,但是使用glColor4f(1.0, 1.0, 0, 0);
的结果与使用glColor4f(1.0, 1.0, 0, 1)相同;
。
我尝试将 glClearColor(0.0, 0.0, 0.0, 0.0);
更改为 glClearColor(0.0, 0.0, 0.0, 1.0);
,但它没有任何改变。
这是我的代码:
#include <GL/glut.h>
void init();
void display();
int main(int argc, char* argv[])
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_RGB | GLUT_SINGLE);
glutInitWindowPosition(0, 0);
glutInitWindowSize(300, 300);
glutCreateWindow("OpenGL 3D View");
init();
glutDisplayFunc(display);
glutMainLoop();
return 0;
}
void init()
{
glClearColor(0.0, 0.0, 0.0, 0.0);
glMatrixMode(GL_PROJECTION);
glOrtho(-5, 5, -5, 5, 5, 15);
glMatrixMode(GL_MODELVIEW);
gluLookAt(0, 0, 10, 0, 0, 0, 0, 1, 0);
}
void display()
{
glClear(GL_COLOR_BUFFER_BIT);
glColor4f(1.0, 1.0, 0, 0.01);
glutWireTeapot(3);
glFlush();
}
我想知道透明度是如何运作的。谢谢~
最佳答案
所以我看到的第一件事是您没有初始化显示以使用混合。这是通过以下方式完成的:
glEnable(GL_BLEND);
默认情况下,GL 混合处于禁用状态。请参阅此处的描述: http://lmb.informatik.uni-freiburg.de/people/reisert/opengl/doc/glBlendFunc.html
下一步是设置你的混合模式。上面的链接显示了设置混合函数的例程。
此外,如果您查看此处的 glutInitDisplayMode
例程描述:
https://www.opengl.org/resources/libraries/glut/spec3/node12.html
它显示“请注意,GLUT_RGBA 选择 RGBA 颜色模型,但它不请求分配任何 alpha 位(有时称为 alpha 缓冲区或目标 alpha)。要请求 alpha,请指定 GLUT_ALPHA。相同适用于 GLUT_LUMINANCE。”
关于opengl - OpenGL color4 alpha 是如何工作的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22265356/