我想知道如果gluLookAt
連同glFrustum
扭曲渲染的圖片。gluLookAt是否與glFrustum一起使渲染失真?
這是一個場景的呈現方式:
及這裏的渲染它的代碼。
InitCamera
稱爲一次和應作爲我現在明白它,建立一個矩陣,以便如果我從位置搜索2個單位以上和3個單位在朝向原點的原點的前面。另外glFrustum
用於創建透視圖。
void InitCamera() {
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
gluLookAt (
0, 2 , 3,
0, 0 , 0,
0, 1 , - 0
);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glFrustum (- 1, 1,
- 1, 1,
1,1000.0);
glMatrixMode(GL_MODELVIEW);
}
然後TheScene
是實際作畫:
void TheScene() {
glClear(
GL_COLOR_BUFFER_BIT |
GL_DEPTH_BUFFER_BIT
);
glMatrixMode(GL_MODELVIEW);
// Draw red circle around origin and radius 2 units:
glColor3d(1,0,0);
glBegin(GL_LINE_LOOP);
for (double i = 0; i<=2 * M_PI; i+=M_PI/20.0) {
glVertex3d(std::sin(i) * 2.0, 0, std::cos(i) * 2.0);
}
glEnd();
// draw green sphere at origin:
glColor3d(0,1,0);
glutSolidSphere(0.2,128, 128);
// draw pink sphere a bit away
glPushMatrix();
glColor3d(1,0,1);
glTranslated(8, 3, -10);
glutSolidSphere(0.8, 128, 128);
glPopMatrix();
SwapBuffers(hDC_opengl);
}
紅球應在起源和它周圍的紅色圓圈的中心繪製。但看着它只是感覺很奇怪,並給了我一個綠色的球根本不在中心的印象。
此外,粉紅色的球,應該被畫成一個完美的圓,而不是一個橢圓。
那麼,我錯了,畫面是否正確繪製,還是我設置了錯誤?
它可能只是觀看方向。從另一個角度檢查場景。 – ChrisF 2011-02-06 21:40:44