Ren*_*ger 2 opengl perspectivecamera perspective
我想知道是否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);
}
Run Code Online (Sandbox Code Playgroud)
然后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);
}
Run Code Online (Sandbox Code Playgroud)
红球应该在原点和周围红圈的中心绘制.但看着它只是感觉很奇怪,并且让我觉得绿球根本不在中心.
此外,粉红色的球应该被绘制成一个完美的圆形,而不是椭圆形.
所以,我错了,图片绘制正确,还是我设置错了?