Domanda

Ecco il mio codice:

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

Il problema è che questi due punti appaiono identici (anche quando ho impostato l'alfa su 0). C'è qualcosa che mi è sfuggito per abilitare la trasparenza alfa?

È stato utile?

Soluzione

Solo un'ipotesi, ma potrebbe essere che tu non abbia un colore di sfondo? Quindi, quando si esegue il rendering del secondo vertice che ha alpha 0.1, non c'è sfondo per calcolare il colore giusto? Solo una supposizione, sono passati anni da quando ho usato l'opengl.

Altri suggerimenti

hai glEnable'd alfa blending? E hai impostato i parametri di fusione? Non puoi semplicemente impostare l'alfa di cui hai bisogno per impostare vari altri parametri in OpenGL.

glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
glEnable( GL_BLEND );
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top