web-dev-qa-db-ja.com

OpenGLでアルファ透明度を使用する方法?

これが私のコードです:

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();
}

問題は、これらの2つのポイントが同一に見えることです(アルファを0に設定した場合でも)。アルファ透過を有効にするために見逃したものはありますか?

26
H-H

単なる推測ですが、背景色がない可能性がありますか?したがって、アルファ0.1を持つ2番目の頂点をレンダリングする場合、適切な色を計算するための背景はありませんか?ただの推測ですが、openglを使用してから何年も経っています。

18
Andrew Keith

あなたはglEnableのアルファブレンディングをしましたか?また、ブレンドパラメータを設定しましたか? OpenGLで他のさまざまなパラメーターを設定するために必要なアルファを設定することはできません。

glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
glEnable( GL_BLEND );
60
Goz