OpenGl Tiefenwert auslesen
-
Hi leute habe ein Problemchen.
static public bool IsOccludet(double x,double y,double z) { int[] viewport = new int[4]; double[] mvmatrix = new double[16]; double[] projm = new double[16]; double winx, winy, winz; double flareZ; float bufferz=0; Gl.glGetIntegerv(Gl.GL_VIEWPORT, viewport); Gl.glGetDoublev(Gl.GL_MODELVIEW_MATRIX, mvmatrix); Gl.glGetDoublev(Gl.GL_PROJECTION_MATRIX, projm); Glu.gluProject(x, y, z, mvmatrix, projm, viewport, out winx, out winy, out winz); flareZ = winz; Gl.glReadPixels((int)winx,600-(int)winy, 1, 1, Gl.GL_DEPTH_COMPONENT, Gl.GL_FLOAT, bufferz); if (bufferz < flareZ) return true; else return false; }
Ich habe das aus dem Tutorial für einen Lensflareffekt von Codeworx.org -> Tut 44.
Mein Problem liegt bei Read Pixels.
Ich möchte den Tiefenwert für den angegebenen Pixel auslesen.
Ich bekomme immer 0 zurück. Hat jemand damit Erfahrung?
-
glReadPixels( ... , **&**bufferz);
-
Hallo Saibot1988,
wie sieht denn deine Szene aus? Testest du evtl. einen Pixel, vor dem sich nichts befindet?
Noch ein Hinweis: Der letzte Parameter von
glReadPixels
müsste
&bufferz
sein.
Viele Grüße,
MaBa
-
Hi Leute danke für die hilfe aber habe es bereits gelöst.
Die funktion hat ein float array als bufferz benötigt nicht einfach ein float.
Übrigens ist das ganze in C# da sieht das ganze etwas anders aus.
Trotzdem danke!