我在设置查看投影时遇到问题。我正在绘制一个顶点为(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方法的值,并且立方体根本不可见,或者它填充整个视口。在glLook中我假设'眼睛'位于(10,10,10)并且看着立方体表面上的点(0.5,0.5,0)。我认为这会给出足够的距离,因此可以看到整个立方体。我是以错误的方式思考这个问题吗?我也尝试在z方向上移动立方体,使其从z = 10到z = 11,因此在剪裁平面中,但是它给出了类似的结果。
答案 0 :(得分:0)
立方体长度为1,观察体积在x和y维度上跨越20个单位。即使使用正交投影,立方体也占据了中间的一些像素; 除非在绘图过程中应用了其他一些转换。
我建议将视锥体缩小(例如+/- 2.0f
)并将相机移近; (4.0f, 4.0f, 4.0f)
。
答案 1 :(得分:0)
通过更改gluLookAt()
的前3个参数,使眼睛位置远离立方体,应该使其更小。
您还可以通过调用glFrustum()
来取代对gluPerspective()
的来电,这样可以更轻松地根据自己的喜好配置透视投影。