Files |  Tutorials |  Articles |  Links |  Home |  Team |  Forum |  Wiki |  Impressum

Aktuelle Zeit: Mo Jul 21, 2025 21:14

Foren-Übersicht » Programmierung » Einsteiger-Fragen
Unbeantwortete Themen | Aktive Themen



Ein neues Thema erstellen Auf das Thema antworten  [ 3 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags:
BeitragVerfasst: Mo Mai 12, 2003 07:51 
Offline
DGL Member
Benutzeravatar

Registriert: Mi Feb 05, 2003 11:48
Beiträge: 7
Hallo Leute,

nachdem ich nun endlich (hoffentlich stabil) mein Delphi- Progrämmchen wieder in mehreren Fenstern am Laufen habe (habe mich von den div. Fenster- Komponenten verabschiedet und das Code- Template von hier als Basis genommen), habe ich nun eine Einsteiger- Frage:

Mit welchem OGL- Befehl versetze ich die State- Machine von OpenGl wieder in den Basis- Zustand, d.h wieder in den Zustand direkt nach der Initialisierung?
Hintergrund:
Da ich mit OpenGl in mehreren Forms arbeite, und in diesen zwischen 2d (Ortho) und 3d (Projection) hin- und herwechsele, suche ich einen einfachen Befehl um z.B. beim OnShow, bzw. innerhalb des OnIdle wieder alles aus dem anderen Fenster 'aufzuräumen' ohne mir alles merken zu müssen und entsprechend wieder zurückzusetzen.

Gibt es da einen Befehl? Habe bisher in den Büchern nicht so recht 'was finden können (Vielleicht bin ich auch einfach nur zu blöde es zu finden ;-) ).

Gruss Cliff


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Mai 12, 2003 07:58 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Sep 23, 2002 19:27
Beiträge: 5812
Programmiersprache: C++
Um die Statemachine wieder in ihren "Urzustand" zurück zuversetzen, mußt du direkt nach der Initialisierung alle Attribute mittels glPushAttrib(GL_ALL_ATTRIB_BITS) auf den Attributstack legen.Danach kannst du alle gesicherten Attribute wieder mittels glPopAttrib vom Stack herunterholen.Funktioniert also genauso wie das sichern bzw. laden einer Matrix.
Welche Attribute genau gesichert werden steht hier : <a href='http://www.3dlabs.com/support/developer/GLmanpages/glpushattrib.htm' target='_blank'>http://www.3dlabs.com/support/developer/GL...lpushattrib.htm</a>

Aber noch ein Hinweis im Bezug auf das Sichern aller Attribute : Je nach Grafikkarte (auf meiner 9700er Radeon ists z.B. recht langsam) ist das pushen bzw. popen aller Attribute sehr langsam, weshalb du es nicht unbedingt in jedem Frame machen solltest!

_________________
www.SaschaWillems.de | GitHub | Twitter | GPU Datenbanken (Vulkan, GL, GLES)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Mai 13, 2003 10:43 
Offline
DGL Member
Benutzeravatar

Registriert: Fr Dez 13, 2002 12:18
Beiträge: 1063
Du kannst sämtliche Befehle, die du für einen definierten Ausgangszustand brauchst, in eine Displaylist legen und die halt immer wieder aufrufen (dann sparst du dir das ständige neue "pushen" der Attribute - außerdem ist es schneller, weil du z.B. die Attribute von Textureinheiten, die du eh nicht verwendest, auch nicht berücksichtigen. musst). In deinem Fall wären es zwei Displaylisten: eine initialisiert den Ortho-Modus, die andere die perspektive Darstellung.

Für eine "richtige" Neuinitialisierung (also auch das frei geben sämtliche Displaylisten und Texturobjekte) bleibt dir aber nur das Auflösen und Wiederherstellen des Renderkontextes, wenn du nicht immer brav mitprotokolliert hast.

_________________
Viel Spaß beim Programmieren,
Mars
http://www.basegraph.com/


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 3 Beiträge ] 
Foren-Übersicht » Programmierung » Einsteiger-Fragen


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 4 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.

Suche nach:
Gehe zu:  
  Powered by phpBB® Forum Software © phpBB Group
Deutsche Übersetzung durch phpBB.de
[ Time : 0.006s | 14 Queries | GZIP : On ]