2012-03-28 3 views
0

Wenn ich rufeOpenGL Matrix-Stack

float before[16]; 
float during[16]; 
float after[16]; 
glGetFloatv(GL_MODELVIEW_MATRIX, before); 
glPushMatrix(); 
glGetFloatv(GL_MODELVIEW_MATRIX, during); 
glPopMatrix(); 
glGetFloatv(GL_MODELVIEW_MATRIX, after); 

Die Werte vor und nach unterschiedlich sind. Habe ich etwas vermisst, hatte ich gedacht, dass keine dieser Funktionen die Matrix verändern sollte. Es scheint, dass Pop der Übeltäter ist, wie während vorher gleich ist.

+1

Das klingt nicht richtig. Was sind die Werte von vorher/nachher? Erkennst du sie? Mein einziger anderer Gedanke war es glGetError zu überprüfen, falls etwas anderes schief gegangen ist. – Tim

+0

Eigentlich sollten die Werte für alle 3 abgerufenen Matrizen identisch mit diesem Code sein. Wie auch immer, der Matrix-Stack ist veraltet und wurde vollständig aus OpenGL-3 und höher entfernt. – datenwolf

+0

"Die Werte von Vorher und Nachher sind unterschiedlich." Wie "anders" sind sie? Machst du einen '==' Test für sie, oder machst du einen richtigen Gleitkomma-Gleichheitstest? –

Antwort

0

Sie sollten gleich sein. glPushMatrix schiebt eine Kopie der aktuellen Matrix, danach sollte die vorherige nicht betroffen sein und wird nach glPopMatrix wieder aktuell.

Überprüfen Sie glGetError. Wenn der Matrixstapel überläuft, könnte etwas Schlimmes passieren.