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

Aktuelle Zeit: Do Jul 17, 2025 02:56

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



Ein neues Thema erstellen Auf das Thema antworten  [ 9 Beiträge ] 
Autor Nachricht
BeitragVerfasst: Di Dez 21, 2004 20:47 
Offline
DGL Member

Registriert: Di Dez 21, 2004 20:39
Beiträge: 20
hi.

Ich bin noch nicht so in der Materie, also entschuldigt mir diese Frage und beantwortet sie einfach ;)

Mir ist aufgefallen, das wenn ich eine Matrix auf den Stack "pushe" und danach wieder aufrufe, diese
automatisch vom Stack gelöscht wird.
Wenn ich jetzt diese Matrix für mehrere Transformationen benutzen möchte, ist es recht unhandlich,
Code:
  1.  Bsp.:
  2.       glTranslate(x, y, z);                                              
  3.       glrotate(angle, x, y, z);                                            
  4.       glPushMatrix;                                                        
  5.       glPushMatrix;                                                          
  6.       glPushMatrix; ...
  7.  

zu schreiben, um dreimal
Code:
  1.  
  2.     glPopMatrix;
  3.      .
  4.      .
  5.     glPopMatrix;
  6.      .
  7.      .
  8.      .
  9.  

aufrufen zu können.
Gibt es also eine Möglichkeit das löschen vom Stack zu verhindern oder nur dann auszulösen wenn ICH es möchte,
und nicht nach jedem glPopMatrix ?

danke im vorraus - ;)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Dez 21, 2004 20:55 
Offline
Guitar Hero
Benutzeravatar

Registriert: Do Sep 25, 2003 15:56
Beiträge: 7810
Wohnort: Sachsen - ERZ / C
Programmiersprache: Java (, Pascal)
Der Übersichthalber kenn ich es so:
Code:
  1. glPushMatrix;
  2.   [glCode]
  3. glPopMatrix;
  4. glPushMatrix;
  5.  [glCode]
  6. glPushMatrix;
  7. ...
  8.  


Is das selbe aber einfacher nachzuvollziehen. Man muss net den ganzen Code durchsucher um das zugehörige Push zu finden.

_________________
Blog: kevin-fleischer.de und fbaingermany.com


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Dez 21, 2004 21:01 
Offline
DGL Member

Registriert: Di Dez 21, 2004 20:39
Beiträge: 20
ja, ob ich die Schreibweise evtl veränder, hab ich mir auch schon überlegt...
Ist ja auch sinnvoll, vorallem wenn man kurzzeitig was manipulieren möchte...
Trotzdem beantwortet das meine Frage nicht,
aber danke :D


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Dez 21, 2004 21:14 
Offline
DGL Member
Benutzeravatar

Registriert: Mi Jul 17, 2002 12:07
Beiträge: 976
Wohnort: Tübingen
Naja, wenn ich das richtig sehe, dann sin glPush und glPop ja gerade dazu erschaffen und ersonnen worden, das das eine was auf den Stack schreibt, das andere dann das ganze seit dem Pushen wieder "löscht".
Wenn ich dein Problem richtig versteh, dann kann ich des ned ganz nachvollziehen, wenn du also dir das Poppen sparen willst, dann wäre ein Pushen ja sinnlos. dann lass es doch einfach weg!

_________________
"Du musst ein Schwein sein in dieser Welt, sangen die Prinzen, das ist so 1.0. Du musst auf YouTube zeigen, dass dir dein Schweinsein gefällt, das ist leuchtendes, echtes Web 2.0."
- Hal Faber

Meine Homepage: http://laboda.delphigl.com


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Dez 21, 2004 21:42 
Offline
DGL Member

Registriert: Di Dez 21, 2004 20:39
Beiträge: 20
Nein...da hast du mich falsch verstanden.
Ich finde die Funktionen ja sehr sinnvoll, etc. etc. .

...

Was ich bräuchte / haben möchte wäre in etwa folgende Procedure
Code:
  1.  
  2. procedure glPopMatrix(delete: Boolean);
  3.  

die, wenn \"delete\" den Wert True annimmt, den aktuellen Stack löscht, und ansonsten nix macht,
ausser den Stack zu laden, ihn aber nicht löscht.
Das hätte den Vorteil, das ich nicht jedesmal
Code:
  1.  
  2. glPopMatrix;
  3. glPushMatrix;
  4. //mein toller Code hier....
  5. glPopMatrix;
  6. glPushMatrix;
  7. //schonwieder mein toller Code
  8.  

schreiben müsste;

Ansonsten schreib ich mir diese Procedure einfach selbst nach dem Schema
Code:
  1.  
  2. procedure glPPOwnMatrix(const del: Bool);
  3. begin
  4.   if del then
  5.     glPopMatrix
  6.   else
  7.     begin
  8.       glPopMatrix;
  9.       glPushMatrix
  10.     end
  11. end;
  12.  


Das würde ich nur sehr "unschick" finden, wenn so eine Möglichkeit in OGL schon implentiert wäre - und
eben dies war meine Frage - ob s sowas schon gibt ;)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Dez 21, 2004 22:10 
Offline
Guitar Hero
Benutzeravatar

Registriert: Do Sep 25, 2003 15:56
Beiträge: 7810
Wohnort: Sachsen - ERZ / C
Programmiersprache: Java (, Pascal)
Du kannst die aktuelle Matrix glaub ich via glGet holen und in einer Variable speichern. Per glLoadMatrix oder so kannste die dann selber wieder setzen wie du willst.

Bin mir net sicher obs glGet war. Musst mal im Wiki unter glMatrixMode gucken...vielleicht weis ein anderer wie der Befehl heißt.

_________________
Blog: kevin-fleischer.de und fbaingermany.com


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Dez 22, 2004 13:35 
Offline
DGL Member

Registriert: Di Dez 21, 2004 20:39
Beiträge: 20
sowas ähnliche sagt auch WiKi dazu...
Ich probiers mal mit glGet aus !

Thx @ Flash, La_Boda;
doppeltes Thx für den Hinweis auf WiKi;
Scheint eine sehr große DB mit allerhand nützlicher Infos zu sein !


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Dez 22, 2004 15:18 
Offline
Guitar Hero
Benutzeravatar

Registriert: Do Sep 25, 2003 15:56
Beiträge: 7810
Wohnort: Sachsen - ERZ / C
Programmiersprache: Java (, Pascal)
Ja...is es. Man kann nur hoffen dass je mehr es nutzen hin und wieder auch paar neue Helfer mitmachn. Wie man an den roten Links sieht: Es ist noch nicht ganz vollständig.

_________________
Blog: kevin-fleischer.de und fbaingermany.com


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Dez 22, 2004 18:26 
Offline
DGL Member

Registriert: Di Dez 21, 2004 20:39
Beiträge: 20
Ja, ich würde bei solchen Aktionen gerne helfen, nur leider reicht mein Wissen auf dem Gebiet OpenGl bei weitem noch nicht ;o)

Wer weiß, vielleicht, wenn ich so demnächst gut in dem Zeug bin, werde ich mal probieren mich da zu reduplizieren... :lol:


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


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 13 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:  
cron
  Powered by phpBB® Forum Software © phpBB Group
Deutsche Übersetzung durch phpBB.de
[ Time : 0.008s | 14 Queries | GZIP : On ]