glGetPixels Funktioniert irgendwie nicht



  • Hi leute habe da n problem mit dem Auslesen der Pixel Farbwerte.
    Ich bekomme immer nur = von glReadPixels zurück.

    Hier Initialiesier ich OpenGl

    //Tiefenpuffer säubern
                Gl.glClearDepth(1.0);
                Gl.glClearColor(0,0,0,0);
    
                //Tiefenpuffer einstellen
                Gl.glEnable(Gl.GL_DEPTH_TEST);
                Gl.glDepthMask(Gl.GL_TRUE);
    
                Gl.glViewport(0, 0, widht, height);
    
                // Perspektive einstellen
                Gl.glMatrixMode(Gl.GL_PROJECTION);
                Gl.glLoadIdentity();
    
                Glu.gluPerspective(45.0f, (double)widht / (double)height, 0.1f, 
                1000.0f);
                Gl.glEnable(Gl.GL_CULL_FACE);
                Gl.glCullFace(Gl.GL_BACK);
    

    Das hier ist die Renderschleife
    render wird von aussen durch ein Mausklick auf false gesetzt.

    //Zeitmessung starten
                Stopuhr = DateTime.Now;
    
                #region Scenenausrichtung
                //Fenster für nächstes Bild löschen
                Gl.glClear(Gl.GL_DEPTH_BUFFER_BIT | Gl.GL_COLOR_BUFFER_BIT);
    
                Gl.glMatrixMode(Gl.GL_MODELVIEW);
                Gl.glLoadIdentity();
    
                //Diese Einstellugn wird genutzt um die Scene zu Rotieren
                Gl.glTranslated(xpos, ypos, zpos);
                Gl.glRotated(xrot, 1, 0, 0);
                Gl.glRotated(yrot, 0, 1, 0);
                Gl.glRotated(zrot, 0, 0, 1);
                #endregion
    
                Gl.glInitNames();
                Gl.glPushName(0);
    
                Gl.glColor3ub(100, 0, 0);            
                Gl.glBegin(Gl.GL_TRIANGLES);
                Gl.glVertex3d(-0.5, 1, 0);
                Gl.glVertex3d(0.5, 1, 0);
                Gl.glVertex3d(0, 2, 0);
                Gl.glEnd();
    
                Gl.glColor3ub(200, 0, 0);            
                Gl.glBegin(Gl.GL_QUADS);
                Gl.glVertex3f(-1, 0, 0);
                Gl.glVertex3f(-2, 0, 0);
                Gl.glVertex3f(-2, -1, 0);
                Gl.glVertex3f(-1, -1, 0);
                Gl.glEnd();
    
                Gl.glColor3ub(150, 0, 0);
                Gl.glBegin(Gl.GL_TRIANGLES);
                Gl.glVertex3d(2, 0, 0);
                Gl.glVertex3d(1, 0, 0);
                Gl.glVertex3d(1.5, -1, 0);
                Gl.glEnd();
    
                Gl.glBegin(Gl.GL_TRIANGLES);
                Gl.glVertex3d(1, -0.65, 0);
                Gl.glVertex3d(2, -0.65, 0);
                Gl.glVertex3d(1.5, 0.35, 0);
                Gl.glEnd();
    
                //Frames Ermitteln
                #region
                    try
                    {
                        Gemessenezeit = DateTime.Now - Stopuhr;
                        frames = 1000 / (uint)Gemessenezeit.TotalMilliseconds;
                    }
                    catch
                    {
                        frames = 1000;
                    }
                #endregion
    
                    if (render == false)
                    {
                        render = true;
                        byte zuletzt=0;
                        Gl.glReadBuffer(Gl.GL_FRONT);
                        Gl.glReadPixels(y,600- x, 1, 1, 
                        Gl.GL_UNSIGNED_BYTE,Gl.GL_RED, zuletzt);
    
                        MessageBox.Show(zuletzt.ToString());
    
                    }
    

    Kann mir jemand helfen?


Anmelden zum Antworten