我想了解OpenGL座標系。我看到的所有地方都被描述爲右撇子,但與我的經驗不符。我試圖繪製一些形狀和三維物體,我發現顯然z軸指向「進入屏幕」(而x指向右側,y起始 - 這是對左手座標系的描述)。我錯過了什麼?哪裏指向OpenGL z軸?
編輯: 例如:
http://img576.imageshack.us/img576/9234/triangles.jpg
如果+ Z點瀏覽器,爲什麼綠色三角形,其Z座標越大,背後是紅色的嗎?
initializeGL:
qglClearColor(Qt::darkGray);
glClearDepth(1.0);
glEnable(GL_DEPTH_TEST);
glDepthFunc(GL_LEQUAL);
glEnable(GL_COLOR);
resizeGL:
glViewport(0, 0, width, height);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glOrtho(-50.0f, 50.0f, -50.0f, 50.0f, 50.0, -50.0);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
paintGL:
glClear (GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glLoadIdentity();
glRotatef (-30.0, 1.0, 0.0, 0.0);
glRotatef (20.0, 0.0, 1.0, 0.0);
glColor3f(1.0, 0.0, 0.0);
glBegin(GL_LINES);
glVertex3f(45.0, 0.0, 0.0);
glVertex3f(-45.0, 0.0, 0.0);
glVertex3f(0.0, 45.0, 0.0);
glVertex3f(0.0, -45.0, 0.0);
glVertex3f(0.0, 0.0, 45.0);
glVertex3f(0.0, 0.0, -45.0);
glEnd();
glBegin(GL_TRIANGLES);
//Red triangle:
glColor3f(1.0, 0.0, 0.0);
glVertex3f(0.0, 0.0, 1.0);
glVertex3f(0.0, 20.0, 1.0);
glVertex3f(20.0, 0.0, 1.0);
//Green triangle:
glColor3f(0.0, 1.0, 0.0);
glVertex3f(-15.0, 0.0, 20.0);
glVertex3f(0.0, 25.0, 20.0);
glVertex3f(15.0, 0.0, 20.0);
glEnd();
「如果+ Z點查看器,爲什麼綠色三角形(z座標較大)在紅色背後? 您旋轉了整個場景兩次。在渲染三角形之前爲模型視圖矩陣調用glLoadIdentity,然後比較結果。 – SigTerm 2010-08-08 03:27:34