2016-03-22 13 views
0

OpenGL'ye çok yeni geldim ve kodumun neden çalışmadığını anlamıyorum. 3 eksen çizmesi gerekiyor: x y ve z. Ancak sadece x ve y görüntülenir.OpenGL Z ekseni çizilemiyor

int ana()

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; 
} 

geçersiz yeniden şekillendirme()

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); 
} 

boş gösterge()

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(); 
} 

birisi yardımcı olabilecek, lütfen?

+1

Varsayılan olarak z eksenini inceliyorsunuz. Bu yüzden kamera konumunu değiştirmediyseniz (veya hatları döndürdüyseniz), z-çizgisi sadece tek bir piksel olacaktır. Sorun bu değilse lütfen bir ekran görüntüsü ekleyin ve mavi çizginin nerede olması gerektiğini açıklayın. – BDL

+0

Anladım, teşekkürler! – qazerty23

cevap

3

Axiz Z çizilir, ancak kameranın varsayılan konumu nedeniyle, sadece tek bir piksel çizilir.

Fotoğraf makinesinin varsayılan konumu, XY düzlemine dik olan Z yönüne bakmaktadır. Kameranızı başka bir yere yerleştirmek için gluLookAt'a veya farklı bir görüntüleme hacmi için gluPerspective'a bakmak isteyebilirsiniz (daha çok glOrtho'dan daha 3D render için kullanılır).

+0

Ohh, tamam, çok teşekkür ederim! – qazerty23

+0

@ qazerty23 Oh, ve bu arada, modern OpenGL'yi öğrenmeye başlamanızı şiddetle tavsiye ediyorum. Uzun vadede çok daha kullanışlı. – aslg