Pixel auf Bildschrimausschnitt rendern



  • Hi, ich verwende folgenden Code um mit OpenGL 2D-Objekte zu rendern. Nun möchte ich aber, dass nur auf Teilen des Bidschirms gerendert wird. Wie erreiche ich das am besten? Clipping oder einen Stencil Buffer? Hat dazu jemand einen Beipiel Code? Ich möchte z.B. sagen können dass auf dem Bidschirm mit Auflösung von z.B. 640x480 nur Pixel gerendert werden die im Rechteck 100/100, 540/100, 540/380 und 100/380 liegen.

    glMatrixMode(GL_PROJECTION);
    	glPushMatrix();
    	glLoadIdentity();
    	glOrtho(0, Width().ToInt32(), Height().ToInt32(), 0, -1.0, 256.0);
    	glMatrixMode(GL_MODELVIEW);
    	glPushMatrix();
    	glLoadIdentity();
        //Render
    	glMatrixMode(GL_PROJECTION);
    	glPopMatrix();
    	glMatrixMode(GL_MODELVIEW);
    	glPopMatrix();
    


  • Schau dir mal, an was glViewport und glScissor tun. 😉



  • Super, das habe ich gesucht, allerdings bin ich scheinbar zu blöd die Koordinaten richtig umzurechnen. Was ist denn an folgendem Code falsch?

    glEnable(GL_SCISSOR_TEST);
    	GLint viewport[4];
    	glGetIntegerv(GL_VIEWPORT, viewport);
    	Rect finalRect(rect.X(), viewport[3] - rect.Top(), rect.Width(), rect.Bottom() - rect.Y());
    	glScissor(finalRect.X(), finalRect.Y(), finalRect.Width(), finalRect.Height());
    


  • Habe mich von einem anderen Fehler irritieren lasen. Das Top() muss natürlich ein Bottom() sein.


Anmelden zum Antworten