glReadPixels ist zu lammmmmmmmmmmmmmmmmm
-
hi
kann mir vieleicht jemand helfen. Ich würde gerne den Depth Buffer auslesen. Und dann später anzeigen lassen. Gibt es da nicht schnellere Methoden als
glReadPixels und glDrawPixels????void glDraw( void ) { glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT ); glLoadIdentity(); glTranslatef( 0.0, 0.0, -1.0 ); glPopMatrix(); glRotatef( 1, 1.0, 1.0, 0.0 ); glColor3f( 1.0, 0.0, 0.0 ); glutSolidTorus( 0.1, 0.2, 25, 25); glPushMatrix(); glFlush(); if( globDrawDepth ) { glReadPixels( 0, 0, globWidth, globHeight, GL_DEPTH_COMPONENT, GL_FLOAT, &pZBuffer); glDisable(GL_DEPTH_TEST); glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT ); glLoadIdentity(); glDrawPixels( globWidth, globHeight, GL_LUMINANCE, GL_FLOAT, &pZBuffer); glFinish(); glEnable(GL_DEPTH_TEST); } SwapBuffers( globHDC ); }
habe mal den Quellcode gepostet. Kann ja sein das ich was falsch gemacht habe
gruß
de_Bert
-
Die Pixeloperationen sind leider bei Consumer-Karten extrem langsam. IMHO wird jeder Pixel beim Auslesen transformiert.. bei High-End Karten soll das schneller gehen, habe ich gehoert.
Um den Depth-Buffer ansatzweise zu visualisieren koenntest Du doch einfach Vollbild-Quads bei verschiedenen Z-Positionen rendern, von Hinten nach vorne und mit verschiedenen Graustufen.
-Gunnar
-
linear fog an und dann siehst du den zbuffer verlauf.
rapso->greets();
-
hi
das mit dem sehen ist ja klar. Aber ich habe einen anderen schnelleren Lösungsansatz gefunden. Das geht mit dem PBuffer auf den nVidia Karten. Bin mir aber jetzt mehr so sicher ob es diesen auch auf anderen Karten gibt.
gruß
de_Bert