Registriert: Do Dez 05, 2002 10:35 Beiträge: 4234 Wohnort: Dortmund
Nein. Das musst du nicht in eine Textur rendern. Würde auch nichts bringen, denn die OpenGL Flächen sind schon so flach wie eine Textur. Sind ja auch nichts anderes. Mit glOrtho stellst du lediglich eine andere Ansicht ein. Also wie folgt (pseudo code).
Code:
procedure render;
begin
// render blah blah blah blah
glMatrixMode(GL_PERSPECTIVE);
glPushMatrix;
glOrtho();
glMatrixMode(GL_MODELVIEW);
render gui
glMatrixMode(GL_PERSPECTIVE);
glPopMatrix;
glMatrixMode(GL_MODELVIEW);
end;
Wichtig dabei. Mit glOrtho sorgst du üblichweise dafür, dass deine OpenGL Koordinaten sich wie 2D Koordinaten verhalten. Und du hast trotzdem noch eine Tiefe inklusive Tiefenbuffer etc. Also musst du darauf achten, dass es nicht durch andere Sachen verdeckt wird etc.
Registriert: Do Sep 02, 2004 19:42 Beiträge: 4158
Programmiersprache: FreePascal, C++
Wobei ich bei der GUI eher empfehlen würde, auf Tiefenpuffer zu verzichten, also den Tiefentest auszuschalten und selber für die Sortierung zu sorgen. Weil je nach dem wieviele Schichten man in der GUI hat, ist das schwierig zu verteilen.
Außerdem, beim arbeiten mit glOrtho beachte auch, dass die Koordinaten ganz andere sind als in glPerspective. Soll heißen: Bei glPerspective arbeitest du mit Weltkoordinaten. Bei glOrtho arbeitest du (bei richtiger einstellung, also wenn du bei höhe und breite exakt die größe deines Viewports angibst) mit Pixelkoordinaten. Das ist für eine GUI meistens auch viel einfacher. Beachte zu den Koordinaten auch diesen Thread.
Gruß Lord Horazont
_________________ If you find any deadlinks, please send me a notification – Wenn du tote Links findest, sende mir eine Benachrichtigung. current projects: ManiacLab; aioxmpp zombofant network • my photostream „Writing code is like writing poetry“ - source unknown
„Give a man a fish, and you feed him for a day. Teach a man to fish and you feed him for a lifetime. “ ~ A Chinese Proverb
aber sobald ich ne textur binde, dann wird zwar das GUI-Quad gerendert, aber der Hintergrund is schwarz. Also meine 3D-Szene wird sozusagen gelöscht/ausgeblendet. Und ich hab keine Ahnung woran das liegt...
Registriert: Do Sep 02, 2004 19:42 Beiträge: 4158
Programmiersprache: FreePascal, C++
Unbindest du die Textur danach wieder bzw deaktivierst du die Texturunit wieder? Sonst wird in deiner 3D-Szene (sofern du da keine Texturen benutzt) an den nicht vorhandenen Texturkoordinaten beziehungsweise der unerwartet gebundenen Textur leiden.
Unbinden:
Code:
glBindTexture(GL_TEXTURE_2D,0);
Deaktivieren (besser):
Code:
glDisable(GL_TEXTURE_2D);
Gruß Lord Horazont
_________________ If you find any deadlinks, please send me a notification – Wenn du tote Links findest, sende mir eine Benachrichtigung. current projects: ManiacLab; aioxmpp zombofant network • my photostream „Writing code is like writing poetry“ - source unknown
„Give a man a fish, and you feed him for a day. Teach a man to fish and you feed him for a lifetime. “ ~ A Chinese Proverb
Registriert: Di Apr 29, 2008 18:56 Beiträge: 1213
Programmiersprache: Delphi/FPC
OK, so gehts...Danke!
€: noch ein Problem, meine Selektion funzt net mehr. Hab die Quads an 2D angepasst und jetzt bekomm ich als rückgabewert dauer 0 (GUI selektiert). normalerweiße müsste ich wenn ich nix auswähl -1 haben!
Code:
procedure TGameScene.RenderSelection;
begin
glClearColor(0,0,1,0);
glClear(GL_COLOR_BUFFER_BIT or GL_DEPTH_BUFFER_BIT);
Registriert: Do Sep 02, 2004 19:42 Beiträge: 4158
Programmiersprache: FreePascal, C++
Für 2D-GUIs bietet sich das Implementieren einer eigenen Selektion über Koordinaten eher an. Die OpenGL-Selektion ist langsam und veraltet. Da du in 2D arbeitest sollte es aber kein Problem sein, die Mausposition auf die einzelnen GUI-Elemente zu übertragen und zu schauen, ob du nen treffer hast.
Gruß Lord Horazont
_________________ If you find any deadlinks, please send me a notification – Wenn du tote Links findest, sende mir eine Benachrichtigung. current projects: ManiacLab; aioxmpp zombofant network • my photostream „Writing code is like writing poetry“ - source unknown
„Give a man a fish, and you feed him for a day. Teach a man to fish and you feed him for a lifetime. “ ~ A Chinese Proverb
Mitglieder in diesem Forum: 0 Mitglieder und 3 Gäste
Du darfst keine neuen Themen in diesem Forum erstellen. Du darfst keine Antworten zu Themen in diesem Forum erstellen. Du darfst deine Beiträge in diesem Forum nicht ändern. Du darfst deine Beiträge in diesem Forum nicht löschen. Du darfst keine Dateianhänge in diesem Forum erstellen.