C++ 如何在OpenGL中使用alpha透明度?
这是我的密码:C++ 如何在OpenGL中使用alpha透明度?,c++,opengl,transparency,alpha,C++,Opengl,Transparency,Alpha,这是我的密码: void display(void); int main(int argc, char** argv) { glutInit(&argc, argv); glutInitDisplayMode(GLUT_SINGLE|GLUT_RGBA); glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); glEnable( GL_BLEND ); glutInitWindowSize(600,
void display(void);
int main(int argc, char** argv)
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_SINGLE|GLUT_RGBA);
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
glEnable( GL_BLEND );
glutInitWindowSize(600,600);
glutInitWindowPosition(200,50);
glutCreateWindow("glut test");
glutDisplayFunc(display);
glutMainLoop();
return 0;
}
void display()
{
glClear(GL_COLOR_BUFFER_BIT);
glPointSize(8);
glBegin(GL_POINTS);
glColor4f(.23,.78,.32,1.0);
glVertex2f(0,0);
glColor4f(.23,.78,.32,0.1);
glVertex2f(0.1,0);
glEnd();
glFlush();
}
问题是这两个点看起来完全相同(即使我将alpha设置为0)。启用alpha透明功能时,我是否遗漏了一些内容?您是否有glEnable的alpha混合功能?您是否设置了混合参数?您不能只设置alpha,而需要在OpenGL中设置其他各种参数
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
glEnable( GL_BLEND );
只是一个猜测,但可能是你没有背景色吗?那么,在渲染第二个顶点(alpha为0.1)时,是否没有背景来计算正确的颜色?只是一个猜测,我使用opengl已有多年了。opengl需要启用大部分功能。一个开始寻找的好地方。(在不同的时间禁用和启用不同的操作可能会产生最有趣的效果。)谢谢,我添加了它们,但我忘了设置背景颜色这对初学者很有帮助,谢谢~初始化顺序也很重要。似乎在设置glEnable()和glBlendFunc()之前必须初始化窗口。@user3078414需要创建上下文,但(严格地说)不能附加到窗口。OpenGL只关心上下文,一个离屏的就可以了。是的,就是这样。我应该加上:
glBlendFunc(GL_SRC_ALPHA,GL_ONE_减去grc_ALPHA);glEnable(GL_混合物);glClearColor(0.0,0.0,0.0,0.0)代码>但仅在创建窗口()之后