30

这是我的代码:

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 透明度吗?

4

2 回答 2

70

你有 glEnable'd alpha 混合吗?你设置好混合参数了吗?您不能只设置在 OpenGL 中设置各种其他参数所需的 alpha。

glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
glEnable( GL_BLEND );
于 2009-10-24T08:37:55.843 回答
20

只是一个猜测,但可能是你没有背景颜色吗?那么,当您渲染具有 alpha 0.1 的第二个顶点时,没有背景来计算正确的颜色?只是一个猜测,自从我使用opengl以来已经有好几年了。

于 2009-10-24T08:46:13.567 回答