Danke habe es genau nach deiner anweisung gemacht funktioniert nicht.
Da kommt sich irgendwas in die quere.
Sieht aus als wenn sich das mit dem quader nicht verträgt auf dem die spiegelung ausgeführt wird.
Delphi-Quellcode:
procedure BeginStayOnTop;
begin
// Depth-Buffer auf Read-Only setzen
glDepthMask(ByteBool(False));
// Depth-Buffer deaktivieren
glDisable(GL_DEPTH_TEST);
end;
procedure EndStayOnTop;
begin
// und nun den Depth-Buffer reaktivieren
glEnable(GL_DEPTH_TEST);
glDepthMask(ByteBool(True));
end;
procedure RenderAlbum(aDeltaTime: single);
const
QuadSize = 1.5; // die Größe der Quader
// Diese Funktion zeichnet die Quader. ColorScale skaliert dabei die Farbwerte der oberen beiden Ecken
procedure DrawQuads();
var i : integer; // index der for-schleife
QuadAngle : single; // die Rotation des aktuellen Quads
aPos : TGLVectord3; // die finale Position des aktuellen Quads [aPos = array[0..2] of single]
begin
glEnable(GL_TEXTURE_2D);
glInitNames;
glPushName(0);
// alle Quads durchgehen
for i := 0 to QuadCount - 1 do
begin
// Position initialisieren (aPos[0] = 0, aPos[1] = 0, aPos[2] = 10)
aPos := Vector_Make3f(0, 0, 12);
// Die Rotation des Quads (um den Mittelpunkt des Kreises, der durch die Quads gebildet wird)
// + ListAnge, also die Rotation, die mit der Maus gemacht wird
QuadAngle := DegToRad( 360 / (QuadCount) * i) + ListAngle;
// Den Positionvektor um den Mittelpunkt des Kreises um die Y-Achse rotieren
aPos := Vector_Rotatef3(aPos, Vector_Make3f(0, 0, 0), QuadAngle, False, True, False);
glBindTexture(GL_TEXTURE_2D, quadTexture[i]);
if i = CurrentQuad then
begin
// Jetzt brauchen wir Blending
glEnable(GL_BLEND);
// nun die Blending-Funktion setzen
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
glColor4f(1, 1, 1, 0.7);
BeginStayOnTop;
Win.IMGTexture := quadTexture[i];
Win.bRenderGUI := True;
end else
begin
// Original Farben setzen
glColor4f(1, 1, 1, 1);
// Blenden ausschalten
glDisable(GL_BLEND);
end;
// 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();
if i = CurrentQuad then
EndStayOnTop;
QuadName[i] := IntToStr(i + 1);
glLoadName(i + 1);
end;
glPopName;
end;
muss mal schaun was da jetzt wieder querschießt.
PS: Das mit dem Speicher funktioniert jetzt ordnungsgemäß
Du hattest recht habe die Texturen doppelt eingeladen...
Macht sich schon beim start bemerkbar dauert nicht mehr so lange bis die Vis aktiviert ist.
EDIT:
Hmm jo hab mich schon gewundert das es nicht gehen soll..
Ich habe ja den Coverkreis in dem die Texturen hintereinander angeordnet werden
Ich wollte nichts anderes die Texture welche von einer anderen verdeckt wird nachvorne holen
Nicht vergrößern..
EDIT2
Jetzt gehts allerdings nur die rechte seite .. das sollte reichen
Danke
gruss Emil