Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi [OpenGL] Darstellung mit FBO auf dem Kopf (https://www.delphipraxis.net/109935-%5Bopengl%5D-darstellung-mit-fbo-auf-dem-kopf.html)

igel457 10. Mär 2008 13:25


[OpenGL] Darstellung mit FBO auf dem Kopf
 
Hallo,

ich bin gerade dabei mehrere Surfaces in meine 2D-Engine einzubauen. Dazu verwende ich unter OpenGL ein Framebufferobject.
Mein Problem dabei ist jedoch, das alles, was ich auf eine Textur zeichne am Ende auf dem Kopf steht.

Folgenden Code verwende ich zum einstellen der Kamera. Solange ich nicht auf ein FBO zeichne habe ich auch keine Probleme damit.
Delphi-Quellcode:
glViewport(0,0,AWidth,AHeight);

glMatrixMode(GL_PROJECTION);

glLoadIdentity;
glOrtho(0,AWidth,AHeight,0,0,100);

glMatrixMode(GL_MODELVIEW);
glLoadIdentity;
Es liegt auch definitiv nicht an meinen Texturkoordinaten und ich möchte diese auch nicht umdrehen.

Hat jemand vielleicht eine Idee woran mein Problem liegen könnte?

Wenn noch Code benötigt wird, fragt einfach danach.

Schon einmal Danke,
Andreas

PS: Crosspost zur DGL, http://www.delphigl.com/forum/viewto...?p=60897#60897

3_of_8 10. Mär 2008 14:01

Re: [OpenGL] Darstellung mit FBO auf dem Kopf
 
Dann mach doch einfach ein glScalef(1, -1, 1); vor dem Zeichnen in den Framebuffer und nach dem Zeichnen setzt du das ganze wieder zurück.

igel457 10. Mär 2008 15:23

Re: [OpenGL] Darstellung mit FBO auf dem Kopf
 
Hallo,

danke für deine Antwort,
mit folgendem Code in der Szeneneinstellung scheint es zu funktionierten:
Delphi-Quellcode:
procedure TOGLApplication.Setup2DScene(AWidth, AHeight: integer);
begin
  glViewport(0,0,AWidth,AHeight);

  glMatrixMode(GL_PROJECTION);

  glLoadIdentity;
  if FRenderingToFBO then
    glOrtho(0,AWidth,0,AHeight,0,100)
  else
    glOrtho(0,AWidth,AHeight,0,0,100);


  glMatrixMode(GL_MODELVIEW);
  glLoadIdentity;
end;
Nochmal Danke,
Andreas

3_of_8 10. Mär 2008 15:36

Re: [OpenGL] Darstellung mit FBO auf dem Kopf
 
Klar, so geht es natürlich auch. Macht aber kaum einen Unterschied, ob du es jetzt mit scale machst oder gleich die gesamte Projektionsmatrix änderst.


Alle Zeitangaben in WEZ +1. Es ist jetzt 17:41 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz