PDA

View Full Version : Transparency / Blending Problem



mphanke
04-22-2002, 03:44 AM
Hi,

I have a problem with my semi-transparent planes. If I draw the red one first, then the blue one, the blue one is not drawn where they overlap.



My DrawFunc
GLvoid MyClass: :DrawMyStuff()
glEnable(GL_DEPTH_TEST);
glMaterialfv(GL_FRONT_AND_BACK,GL_AMBIENT_AND_DIFF USE,mat_ambient);
if(drawPoly)
ObjList->Draw(GL_TRIANGLE_STRIP);

if(drawConnected)
ObjList->Draw(GL_LINE_STRIP);
glMaterialfv(GL_FRONT_AND_BACK,GL_AMBIENT_AND_DIFF USE,mat_ones);
if(drawPoints)
{
glPointSize(2.0f);
ObjList->Draw(GL_POINTS);
}

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

if(VPlane1)
DrawVPlane(VPlane1Pos);

if(VPlane2)
DrawVPlane(VPlane2Pos);

if(HPlane1)
DrawHPlane(HPlane1Pos);

if(HPlane2)
DrawHPlane(HPlane2Pos);

glDisable(GL_BLEND);
}

GLvoid MyClass: :DrawHPlane(int pos)
{
GLfloat mat[] = { 1.0, 0.0, 0.0, 0.5 };
glBegin(GL_QUADS);
glColor3d(0.75f, 0.0f, 0.25);
glMaterialfv(GL_FRONT_AND_BACK,GL_AMBIENT_AND_DIFF USE,mat);
glVertex3d(-400.0, pos, -300.0);
glVertex3d(-400.0, pos, 300.0);
glVertex3d(400.0, pos, 300.0);
glVertex3d(400.0, pos, -300.0);
glEnd();
}

GLvoid MyClass: :DrawVPlane(int pos)
{
GLfloat mat[] = { 0.0, 0.0, 1.0, 0.75 };
glBegin(GL_QUADS);
glColor3d(0.25f, 0.0f, 0.75);
glMaterialfv(GL_FRONT_AND_BACK,GL_AMBIENT_AND_DIFF USE,mat);
glVertex3d( pos,-10.0, -300.0);
glVertex3d( pos,-10.0, 300.0);
glVertex3d( pos, 1200.0, 300.0);
glVertex3d( pos, 1200.0, -300.0);
glEnd();
}


Could you guys tell me what's wrong about this??

Thanks,

Martin

[This message has been edited by mphanke (edited 04-22-2002).]

Nutty
04-22-2002, 04:11 AM
You need to disable Z-writes when drawing semi-transparent polys, so that one poly doesn't prevent another one from drawing if it's behind or equal in depth.

Use glDepthMask(GL_FALSE); before drawing transparent stuff.

Restore it again afterwards.. with glDepthMask(GL_TRUE);

Nutty

niko
04-22-2002, 04:13 AM
Draw your transparent objects from back to front (farthest first) with depth writing disabled.

/niko

mphanke
04-22-2002, 04:13 AM
Thanks Nutty!

Martin

niko
04-22-2002, 04:15 AM
Gee, Nutty, you're fast http://www.opengl.org/discussion_boards/ubb/smile.gif

/Niko

mphanke
04-22-2002, 04:18 AM
Thanks to you Niko, too!
Do you know of any good Tutorial on materials and stuff?? I'm fighting as sh** with this stuff!

Martin

[This message has been edited by mphanke (edited 04-22-2002).]

niko
04-22-2002, 04:26 AM
Originally posted by mphanke:
Do you know of any good Tutorial on materials and stuff??

Nehe comes to mind. Still, I think the tips Nutty and I gave to you are the essentials you need to know to make your blending thingies work.

/Niko