我在顯示功能下面的OpenGL代碼:爲什麼我的glutWireCube不在原點?
glLoadIdentity();
gluLookAt(eyex, eyey, eyez, atx, aty, atz, upx, upy, upz);
// called as: gluLookAt(20, 5, 5, -20, 5, 5, 0, 1, 0);
axis();
glutWireCube (1.);
glFlush();
axis()
繪製線條從(0,0,0)至(10,0,0),(0,10,0)和(0 ,10,0),加上從(1,0,0)到(1,3,0)的一行。
我重塑功能包含以下內容:
glViewport (0, 0, (GLsizei) w, (GLsizei) h);
glMatrixMode (GL_PROJECTION);
glLoadIdentity();
gluPerspective(45.0, (GLsizei) w/(GLsizei) h, 1.0, 100.0);
glMatrixMode (GL_MODELVIEW);
此圖片顯示了1.
作爲參數運行程序glutWireCube
結果:
正如你所看到的,立方體不是以(0,0,0)爲中心,因爲文檔說它應該是:
立方體是在造型 中心座標原點(...)(source)
如果我5.
運行該程序作爲參數,立方體甚至進一步移位:
爲什麼會這樣,以及如何將立方體放在(0,0,0)左右?
更多信息請
如果切換的axis()
和glutWireCube
順序沒關係。圍繞axis()
與glPushMatrix()
和glPopMatrix()
也不修復它。
SOLUTION
我修改gluPerspective
開始尋找遠離相機,現在的Z緩衝正常工作,所以很清楚的是,冰塊放置在原點附近。
不幸的是,這也不會改變結果。 :( – jumoel 2009-12-03 11:20:28
我認爲我有啓用了'glEnable(GL_DEPTH_TEST)'和'glDepthMask(GL_TRUE)'的Z緩衝,結果是相同的,如果行存在與否 – jumoel 2009-12-03 12:21:44
其實,你是對的如果我查看圖像與'glOrtho'而不是'gluLookAt'和'gluPerspective'立方體以原點爲中心 我該如何正確啓用z緩衝? – jumoel 2009-12-03 12:29:38