1

我在设置观看投影时遇到问题。我正在绘制一个顶点为 (0, 0, 0) (0, 0, 1) (0, 1, 1) (0, 1, 0) (1, 0, 0) (1, 1, 0) 的立方体(1, 1, 1) 和 (1, 0, 1)。这就是我初始化视图的方式:

void initGL(int x,int y, int w, int h)
{
    glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB | GLUT_DEPTH );
    glutInitWindowPosition( x, y );
    glutInitWindowSize( w, h );
    glutCreateWindow( "CSE328 Project 1" );

    glutDisplayFunc(draw);
    glFrontFace(GL_FRONT_AND_BACK);
    glMatrixMode(GL_PROJECTION);
    glFrustum(-10.0, 10.0, -10.0, 10.0, 2.0, 40.0);
    glMatrixMode(GL_MODELVIEW);
    gluLookAt(10, 10, 10, 0.5, 0.5, 0, 0, 1.0, 0);
    glutMainLoop();
}

出于某种原因,立方体填满了整个屏幕。我尝试更改截锥体和lookAt 方法的值,并且立方体根本不可见,或者它填充了整个视口。在 glLookAt 中,我假设“眼睛”位于 (10, 10, 10) 并注视着立方体表面上的点 (0.5, 0.5, 0)。我认为这将提供足够的距离,以便整个立方体可见。我是否以错误的方式思考这个问题?我还尝试在 z 方向上移动立方体,使其位于 z = 10 到 z = 11 之间,在剪切平面中也是如此,但它给出了类似的结果。

4

2 回答 2

0

Moving the eye position further from the cube by changing the first 3 parameters of gluLookAt() should make it smaller.

You could also replace your call to glFrustum() with a call to gluPerspective() which would make it easier to configure the perspective projection to your liking.

于 2012-05-09T00:31:38.283 回答
0

立方体的长度为 1,查看体积在 x 和 y 维度上跨越 20 个单位。即使是正交投影,立方体也会在中间占据一些像素;除非在绘图期间应用了其他一些变换。

我建议缩小截头锥体(例如+/- 2.0f)并将相机移近一些;(4.0f, 4.0f, 4.0f).

于 2012-05-06T06:13:38.200 回答