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

Aktuelle Zeit: Fr Jul 18, 2025 21:11

Foren-Übersicht » Programmierung » OpenGL
Unbeantwortete Themen | Aktive Themen



Ein neues Thema erstellen Auf das Thema antworten  [ 6 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: Stack underflow unter Win2000?
BeitragVerfasst: Fr Sep 01, 2006 20:52 
Offline
DGL Member

Registriert: Fr Aug 12, 2005 21:35
Beiträge: 42
Hallo,

Ich habe hier nen ganz komisches prob. Ich habe unter Win2000 an verschiedenen stellen meines OpenGL codes Stack underflow´s, unter WinXP jedoch garnicht.
Es ist auch nicht eine bestimmte stelle des codes.
Woran kann denn sowas liegen?

Danke schon mal.

Nico


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Sep 01, 2006 23:56 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Sep 23, 2002 19:27
Beiträge: 5812
Programmiersprache: C++
Stack underflow bedeutet dass du irgendwo versuchst Matrizen vom Stack zu holen, obwohl da keine mehr drauf sind. V.a. Projektionsmatrizen können bei den meisten OpenGL-Implementationen nur wengie (oft nur 4) auf den Stack gelegt werden, und wenn mann dann z.B. 5 auf den Stack legt und auch 5 mal glPop aufruft, dann entstehr ein Stack underflow. Wenns unter XP geht und unter 2k nicht, dann werden wohl verschiedene Treiber bzw. Grafikkarten genutzt, mittels glGet kann man aber leicht herausfinden wie viele Matrizen auf den Stack passen.

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


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: So Sep 03, 2006 14:53 
Offline
Guitar Hero
Benutzeravatar

Registriert: Do Sep 25, 2003 15:56
Beiträge: 7810
Wohnort: Sachsen - ERZ / C
Programmiersprache: Java (, Pascal)
Das ist ja mal ein doller Fehler. Mit der Erklärung von Sascha wirds zwar schnell klar wie sowas zustande kommt, aber ich wäre bei so nem Fehler sicherlich auch erstmal ungläubig gewesen.
Aber das das teilweise so wenige Matrizen sind... Nagut, die Projektionsmatrix sollte nicht soooo häufig gewechselt werden.

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


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: So Sep 03, 2006 15:17 
Offline
DGL Member

Registriert: Fr Aug 12, 2005 21:35
Beiträge: 42
HI und danke erstmal für die antworten.

Was ich jetzt nicht ganz verstehe ist das wenn ich nach jedem Push auch nen Pop aufrufe der stack voll ist.
Pop nimmt doch die Matrix wieder vom Stack und das geht ja bei WinXP auch ohne probs, nur unter Win2k anscheinend nicht.

Genaus wird mein Text unter WinXP einwandfrei gerendert doch unter Win2k nicht. Da wird der text einfach nicht dargestellt.

Muß man da unter Win2k bestimmte dinge anders machen als unter XP?

Danke und gruß,
Nico


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: So Sep 03, 2006 15:22 
Offline
Guitar Hero
Benutzeravatar

Registriert: Do Sep 25, 2003 15:56
Beiträge: 7810
Wohnort: Sachsen - ERZ / C
Programmiersprache: Java (, Pascal)
Also eigentlich sollte der effekt den Sascha erklärt nur auftreten, wenn du 5x hintereinander pushst, und dann 5x pops. Bei 5x (push, ..., pop) sollte nix passieren.

Was aber sein kann ist foglendes. Im Selektion tutorial schreibt Phobeus, dass man einen Namen auf den leeren Stack legen muss, damit man nicht beim ersten poppen nen fehler bekommt. Abeitest du mit Selektion? Wenn ja, könnte es sein, dass dein XP treiber durch zufall dieses Verhalten nicht hat, dein Win2000er Treiber aber schon.

Is aber Spekulation....

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


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: So Sep 03, 2006 18:01 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Sep 23, 2002 19:27
Beiträge: 5812
Programmiersprache: C++
Wahrscheinlich liegen in deinem Falle unter Win2k und XP jeweils unterschiedliche OpenGL-Implementationen vor, also entweder andere Treiber oder Grafikkarten. Und da kann es schonmal vorkommen dass man nen Treiber hat der nur (hab ich jedenfalls schonmal erlebt) 2 Projektionsmatrizen auf den Stack legen kann, und wenn man da verschachtelt was auf den Stack legt und wieder runterholen will ist man schnell übers Limit und bekommt nen Stackunderflow. Am einfachsten schreibt man sich dann nen eigenen Stack, der dann ja nix weiter als ein Matrizenarray ist, dann muss man sich nicht mit solchen Sachen rumplagen.

An sich sollte es mit gleichem Treiber und gleicher Grafikkarte aber keine Unterschiede zwischen 2k und XP geben, da (zumindest bei NVidia und ATI) die Treiber unifiziert sind, also z.B. gleiche nvoglnt.dll für 2k und XP.

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


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


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 2 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.007s | 15 Queries | GZIP : On ]