DraKKaR
08-07-2003, 01:36 PM
every frame I execute these:
glEnable(GL_BLEND);
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glLoadIdentity();
glTranslatef(-1.5f,0.0f,-6.0f);
glBlendFunc(GL_ONE,GL_ZERO);
// glBlendFunc(GL_SRC_ALPHA,GL_ONE_MINUS_SRC_ALPHA);
glBegin(GL_TRIANGLES);
glColor4f(1.0f,0.0f,0.0f,0.0f);
glVertex3f( 0.0f, 1.0f, 0.0f);
glColor4f(0.0f,1.0f,0.0f,1.0f);
glVertex3f(-1.0f,-1.0f, 0.0f);
glColor4f(0.0f,0.0f,1.0f,0.5f);
glVertex3f( 1.0f,-1.0f, 0.0f);
glEnd();
glBlendFunc(GL_DST_ALPHA,GL_ZERO);
glColor3f(1,1,1);
glBegin(GL_TRIANGLES);
glVertex3f( 0.0f, 1.0f, 0.0f);
glVertex3f(-1.0f,-1.0f, 0.0f);
glVertex3f( 1.0f,-1.0f, 0.0f);
glEnd();
The result is a white triangle. But I do not understand why! each color of second triangule should be multiplied by the alpha of the first triangle, but it doesn't.
glEnable(GL_BLEND);
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glLoadIdentity();
glTranslatef(-1.5f,0.0f,-6.0f);
glBlendFunc(GL_ONE,GL_ZERO);
// glBlendFunc(GL_SRC_ALPHA,GL_ONE_MINUS_SRC_ALPHA);
glBegin(GL_TRIANGLES);
glColor4f(1.0f,0.0f,0.0f,0.0f);
glVertex3f( 0.0f, 1.0f, 0.0f);
glColor4f(0.0f,1.0f,0.0f,1.0f);
glVertex3f(-1.0f,-1.0f, 0.0f);
glColor4f(0.0f,0.0f,1.0f,0.5f);
glVertex3f( 1.0f,-1.0f, 0.0f);
glEnd();
glBlendFunc(GL_DST_ALPHA,GL_ZERO);
glColor3f(1,1,1);
glBegin(GL_TRIANGLES);
glVertex3f( 0.0f, 1.0f, 0.0f);
glVertex3f(-1.0f,-1.0f, 0.0f);
glVertex3f( 1.0f,-1.0f, 0.0f);
glEnd();
The result is a white triangle. But I do not understand why! each color of second triangule should be multiplied by the alpha of the first triangle, but it doesn't.