Wieder ein positions problem
Befinde mich innerhalb der RenderAlbum
Delphi-Quellcode:
if i = CurrentQuad then
begin
// Blendung einschalten
glEnable(GL_BLEND);
// Blend Funktion setzen
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
glColor4f(1, 1, 1, 0.7);
// Texture nach vorne holen
StayOnTop; //<<-----
// Info Fenster anzeigen
Win.IMGTexture := quadTexture[i];
Win.bRenderGUI := True;
end else
begin
// Original Farben setzen
glColor4f(1, 1, 1, 1);
// Blenden ausschalten
glDisable(GL_BLEND);
end;
würde ich jetzt
Delphi-Quellcode:
procedure StayOnTop;
begin
// Depth-Buffer auf Read-Only setzen
glDepthMask(ByteBool(False));
// Depth-Buffer deaktivieren
glDisable(GL_DEPTH_TEST);
// Polygon Zeichnen , Quader funtion zum zeichen befindet sich hier
RenderAlbum(QuadSpeed / 1000.0);
// und nun den Depth-Buffer reaktivieren
glEnable(GL_DEPTH_TEST);
glDepthMask(ByteBool(True));
end;
aufrufen dann wäre das recursiv führt unweigerlich zum
AV
Das ist eigentlich mein problem mit
OpenGl da man manchmal nicht weiss
an welcher stelle man eine funktion ausführen soll ohne mit anderen zu kollidieren.
EDIT:
Habs mal umgestellt
StayOnTop(aPos, QuadSize);
Delphi-Quellcode:
procedure StayOnTop(aPos: TGLVectord3; QuadSize: single);
begin
// Depth-Buffer auf Read-Only setzen
glDepthMask(ByteBool(False));
// Depth-Buffer deaktivieren
glDisable(GL_DEPTH_TEST);
// Quad zeichnen
glBegin(GL_QUADS);
glTexCoord2f(0, 1); glVertex3f(aPos[0] - QuadSize, aPos[1] + QuadSize*2, aPos[2]);
glTexCoord2f(0, 0); glVertex3f(aPos[0] - QuadSize, aPos[1] , aPos[2]);
glTexCoord2f(1, 0); glVertex3f(aPos[0] + QuadSize, aPos[1] , aPos[2]);
glTexCoord2f(1, 1); glVertex3f(aPos[0] + QuadSize, aPos[1] + QuadSize*2, aPos[2]);
glEnd();
// und nun den Depth-Buffer reaktivieren
glEnable(GL_DEPTH_TEST);
glDepthMask(ByteBool(True));
end;
setzt sich aber nicht OnTop
gruss Emil