Verständnisproblem mit glTranslatef



  • Hallo zusammen ich habe ein kleines Verständigungsproblem mit glTranslatef.
    Und zwar habe ich folgenden Code:

    #include <GL/gl.h>
    #include <GL/glut.h>
    
    void display(void)
    {
    	/* clear all pixels */
    	glClear (GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
    	/* draw white polygon (rectangle) with corners at
    	 * (0.25, 0.25, 0.0) and (0.75, 0.75, 0.0)
    	 */
    	glLoadIdentity();
    	glTranslatef(-0.0f,0.0f,1.0f);
    	glBegin( GL_TRIANGLES );
    		glColor3f(1.0,0.0,0.0);
    		glVertex3f( -0.5f, 0.0f, 0.0f);
    		glVertex3f( 0.5f, 0.0f, 0.0f);
    		glVertex3f( 0.0f, 0.5f, 0.0f);
    	glEnd();
    	/* don't wait!
             * start processing buffered OpenGL routines
             */
    	glFlush ();
    }
    
    void init (void)
    {
    	/* select clearing (background) color */
    	glClearColor (0.0f, 0.0f, 0.0f, 0.0f);
    	/* initialize viewing values */
    	glMatrixMode(GL_MODELVIEW);
    	glLoadIdentity();
    	glOrtho(0.0, 1.0, 0.0, 1.0, -1.0, 1.0);
    }
    
    int main (int argc, char *argv[])
    {
    	glutInit(&argc, argv);
    	glutInitDisplayMode (GLUT_SINGLE | GLUT_RGB);
    	glutInitWindowSize (500, 500);
    	glutInitWindowPosition (100, 100);
    	glutCreateWindow ("hello");
    	init ();
    	glutDisplayFunc(display);
    	glutMainLoop();
    	return 0; /* ISO C requires main to return int. */
    }
    

    Und das fumktioniert auch wunderbar, zeichnet mir ein grosses rotes Dreieck auf rotem Grund. Nur wenn ich in die Funktion glTranslatef auf der Z-Achse einen Wert höher als 1 eingebe, sehe ich gar nichts mehr. Dabei ist es egal ob der Wert negativ oder positiv ist (-1.1f 1.1f) das Fenster ist komplett schwarz!
    Im nehe.gamedev-Tutorial ist im Beispiel 2 jedoch ein Beispiel auch mit zwei einfachen 2-dimensionalen Formen und da wird vom dem Zeichen der ersten Figur eine Translation durchgeführt

    glTranslatef(-1.5f,0.0f,-6.0f);					// Move Left 1.5 Units And Into The Screen 6.0
    

    und dort funktioniert es. Wo ist der Unterschied zu meiner Lösung? Ich find's einfach nicht.

    Danke vorab...

    Gruss Christian



  • glOrtho(0.0, 1.0, 0.0, 1.0, -1.0, 1.0);
    

    du initialisierst eine 2D projektionsmatrix mit dem z near clipping plane -1.0
    und z far clipping plane 1.0. demnach wird auch nüx gerendered (zomg dieses deutsch :P) was nicht innerhalb dieser 2 planes liegt 🙂

    edit:
    google mal nach glFrustum oder gluPerspective. dies sollte dir weiterhelfen 🙂


Anmelden zum Antworten