Pergunta

Aqui está o meu código:

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

O problema é que esses dois pontos parecem idênticos (mesmo quando eu defino o alfa como 0). Há algo que perdi para ativar a transparência da Alpha?

Foi útil?

Solução

Apenas um palpite, mas poderia ser que você não tenha uma cor de fundo? Então, quando você está renderizando o segundo vértice que tem alfa 0,1, não há plano de fundo para calcular a cor adequada? Apenas um palpite, há anos desde que eu usei o OpenGL.

Outras dicas

Você já glenable Alpha Blending? E você configurou seus parâmetros de mistura? Você não pode simplesmente definir o alfa que precisa configurar vários outros parâmetros no OpenGL.

glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
glEnable( GL_BLEND );
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top