Переделаю уж и первый пост
В общем есть проблема. Рисуются 2 объекта, потом есть потребность в изменении прозрачности этих объектов и возникает проблема, через 2-ой объект 1-ый виден, а наоборот нет.
Все объекты это поверхности второго порядка, либо просто плоскости. Рисуются 4-угольниками с помощью glBegin(GL_QUADS), далее SwapBuffers(DC).
Например:
Код:
procedure PlosX(r1,r2,r3:GLFloat);
...
Begin
glBegin(GL_QUADS);
...
if i:=-d to d-1 then
begin
y1:=...;
y2:=...;
z1:=...;
z2:=...;
x1:=...;
x2:=...;
x3:=...;
x4:=...;
glVertex3f( x1, y1, z1);
glVertex3f( x4, y2, z1);
glVertex3f( x2, y2, z2);
glVertex3f( x3, y1, z2);
end;
glEnd;
End;
И в итоге получается:
Код:
glColor4f(1,0,0,Blend1);
PlosX(a1,b1,c1);
glColor4f(0,1,0,Blend2);
PlosX(a2,b2,c2);
SwapBuffers(DC);
Ну там перед этим инициализация графики, цвета, глубины и т.д., но она вроде стандартная, но все же:
Код:
glMatrixMode(GL_PROJECTION);
glLoadIdentity;
gluPerspective(45.0, PanelGraph.Width/PanelGraph.Height, 0.1, 500);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity;
glClearColor(BackC.R, BackC.G, BackC.B, 1.0);
glClear(GL_COLOR_BUFFER_BIT or GL_DEPTH_BUFFER_BIT);
glShadeModel(GL_SMOOTH);
glClearDepth(1.0);
glEnable(GL_DEPTH_TEST);
glDepthFunc(GL_LESS);
glHint(GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST);
glEnable(GL_COLOR_MATERIAL);
glLightModelfv(GL_LIGHT_MODEL_AMBIENT, @ambient);
glMaterialfv(GL_FRONT_AND_BACK, GL_AMBIENT, @ambient);
glEnable(GL_LIGHTING);
glEnable(GL_LIGHT0);
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
glEnable(GL_BLEND);
glEnable(GL_LINE_SMOOTH);
glEnable(GL_POINT_SMOOTH);
Вот еще две картинки, на первой плоскость, которая дальше видна сквозь ту, которая ближе, а на второй картинке собственно нет, в этом и проблема:
