Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/128.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/opengl/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何在OpenGL中使用alpha透明度?_C++_Opengl_Transparency_Alpha - Fatal编程技术网

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)但仅在创建窗口()之后