2016-03-22 16 views
0

Ich bin sehr neu zu OpenGL und kann nicht verstehen, warum mein Code nicht funktioniert. Es soll 3 Achsen zeichnen: x y und z. Aber nur x und y werden angezeigt.OpenGL Kann keine Z-Achse zeichnen

int main()

int main(int argc, char * argv[]) 
{ 
    glutInit(&argc, argv); 
    glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGBA); 

    glutInitWindowSize(800, 600); 
    glutCreateWindow("OpenGL lesson"); 

    glutReshapeFunc(reshape); 
    glutDisplayFunc(display); 
    glutMainLoop(); 

    return 0; 
} 

Leere reshape()

void reshape(int w, int h) 
{ 
    glViewport(0, 0, w, h); 

    glMatrixMode(GL_PROJECTION); 
    glLoadIdentity(); 
    glOrtho(-15, 15, -15, 15, -15, 15); 
    glMatrixMode(GL_MODELVIEW); 
    glLoadIdentity(); 
    glClearColor(1, 1, 1, 0); 
} 

Leeranzeige()

void display() 
{ 
    glClear(GL_COLOR_BUFFER_BIT); 
    glColor3f(1.0, 0.0, 0.0); 

    glBegin(GL_LINES); 
    // draw line for x axis 
    glColor3f(1.0, 0.0, 0.0); 
    glVertex3f(0.0, 0.0, 0.0); 
    glVertex3f(10.0, 0.0, 0.0); 
    // draw line for y axis 
    glColor3f(0.0, 1.0, 0.0); 
    glVertex3f(0.0, 0.0, 0.0); 
    glVertex3f(0.0, 10.0, 0.0); 
    // draw line for Z axis 
    glColor3f(0.0, 0.0, 1.0); 
    glVertex3f(0.0, 0.0, 0.0); 
    glVertex3f(0.0, 0.0, 10.0); 
    glEnd(); 

    glutSwapBuffers(); 
} 

Könnte jemand bitte helfen?

+1

Standardmäßig sehen Sie entlang der z-Achse. Wenn Sie also die Kameraposition nicht geändert haben (oder die Linien gedreht haben), ist die Z-Linie nur ein einzelnes Pixel. Wenn dies nicht das Problem ist, fügen Sie bitte einen Screenshot hinzu und beschreiben Sie, wo die blaue Linie sein soll. – BDL

+0

Hab es, danke! – qazerty23

Antwort

3

Axiz Z wird gezeichnet, aber aufgrund der Standardposition der Kamera wird nur ein einzelnes Pixel gezeichnet.

Die Standardposition der Kamera befindet sich in Z-Richtung, senkrecht zur XY-Ebene. Vielleicht möchten Sie in gluLookAt Ihre Kamera woanders hinlegen oder gluPerspective für ein anderes Betrachtungsvolumen (häufiger für 3D-Rendering als glOrtho).

+0

Ohh, okay, vielen Dank! – qazerty23

+0

@ qazerty23 Oh, und übrigens, ich schlage vor, dass Sie lernen, moderne OpenGL zu lernen. Es ist auf lange Sicht viel nützlicher. – aslg