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!


Anmelden zum Antworten