2016-03-22 11 views
0

私はOpenGLに非常に新しいので、なぜコードが機能しないのか理解できません。 3軸:x yとzを描画することになっています。しかし、xとyだけが表示されます。OpenGL z軸を描くことができません

メインint型()

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

ボイドリシェイプ()

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

のボイドディスプレイ()

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

誰かが、助けてくださいもらえますか?

+1

デフォルトでは、z軸を見ています。したがって、カメラの位置を変更していない(または線を回転させていない)場合、z線は1つの単一ピクセルだけになります。これが問題でない場合は、スクリーンショットを追加し、青い線がどこにあるのかを記述してください。 – BDL

+0

ありがとうございました! – qazerty23

答えて

3

Axiz Zが描かれていますが、カメラのデフォルト位置のため、1つのピクセルだけが描画されます。

カメラのデフォルト位置は、XY平面に垂直なZ方向です。カメラを別の場所に置くにはgluLookAtを、別の表示ボリューム(glOrthoより3Dレンダリングでよく使用されます)の場合はgluPerspectiveを調べるとよいでしょう。

+0

ああ、大丈夫、ありがとう! – qazerty23

+0

@ qazerty23ああ、ところで、私はあなたに最新のOpenGLの勉強を始めることを強く勧めます。それは長期的にはるかに有用です。 – aslg

関連する問題