Hi ,
I need to dissolve ‘Polygon A’ into the ‘Polygons B’. What does glDepthMask(False) do and how is it different than glDisable(GL_DEPTH_TEST) ?
Below is what I am doing. I am working on Delphi, hence the source is in pascal. If I use gldepthMask(False) then it blends ok, otherwise it does not. Why ?
Additionally could someone point me to white paper on how stencil buffer work?
CONST
zval = 0.0;Procedure DrawB;
Begin
glColor4f(1,1,0,0.7);
glBegin(GL_POLYGON);
glVertex3d(-2.0,-0.8,zval);
glVertex3d(-2.0,-2.0,zval);
glVertex3d(2.0,-2.0,zval);
glVertex3d(2.0,-0.8,zval);
glEnd();glColor4f(1,0,1,0.6);
glBegin(GL_POLYGON);
glVertex3d(-2.0,0.0,zval);
glVertex3d(2.0,0.0,zval);
glVertex3d(2.0,1.0,zval);
glVertex3d(-2.0,1.0,zval);
glEnd();
End;Procedure DrawA;
Const
outside : Array [0…6] of TCoordArray = ( ( 0.0, 2.0, zval ),
( -1.0, -2.0, zval ),
( -0.8, -2.0, zval ),
( -0.4, -0.4, zval ),
( 0.4, -0.4, zval ),
( 0.8, -2.0, zval ),
( 1.0, -2.0, zval ));
Begin
glColor4f(1,0,0,0.5);
glBegin(GL_POLYGON);
glVertex3dv(@outside[0]);
glVertex3dv(@outside[1]);
glVertex3dv(@outside[2]);
glVertex3dv(@outside[3]);
glVertex3dv(@outside[4]);
glVertex3dv(@outside[5]);
glVertex3dv(@outside[6]);
glEnd;
End;procedure PaintGL;
begin
glViewport(0,0,Width,Height);
glMatrixMode(GL_PROJECTION);
glLoadIdentity;
glortho(-3.0, 3.0, -3.0, 3.0, -6.0, 6.0);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity;
glEnable(GL_BLEND);
glBlendFunc(GL_ONE,GL_ONE_MINUS_SRC_ALPHA);
glClearColor(1.0,1.0,1.0,0.0);
glClear(GL_COLOR_BUFFER_BIT Or GL_DEPTH_BUFFER_BIT or GL_STENCIL_BUFFER_BIT);
glClearStencil(0);
glEnable(GL_DEPTH_TEST);glEnable(GL_STENCIL_TEST); gldepthmask(false); glStencilOp(GL_KEEP, GL_KEEP, GL_INCR); glStencilFunc(GL_EQUAL, 0,1); Drawb; glStencilFunc(GL_GEQUAL, 1,1); glColorMask( GL_FALSE, GL_FALSE, GL_FALSE, GL_FALSE ); Drawa; glColorMask( GL_TRUE, GL_TRUE, GL_TRUE, GL_TRUE ); glStencilOp(GL_KEEP, GL_KEEP, GL_REPLACE); glStencilFunc( GL_EQUAL, 0, 1 ); Drawa; glDisable(GL_STENCIL_TEST); glDisable(GL_BLEND); glDisable(GL_DEPTH_TEST); SwapBuffers(SDC);
end;
DPS