设置opengl透视投影

设置opengl透视投影,opengl,glulookat,Opengl,Glulookat,我在设置查看投影时遇到问题。我正在绘制一个顶点为0,0,0,0,0,10,1,10,1,01,0,01,01,01,01,1,1和1,0,1的立方体。以下是我初始化视图的方式: 无效初始闪烁x,int y,int w,int h { glutInitDisplayModeGLUT|U SINGLE | GLUT|RGB | GLUT|U DEPTH; 位置x,y; w,h; glutCreateWindow CSE328项目1; GLUT绘制; glFrontFaceGL_前_和_后; glMa

我在设置查看投影时遇到问题。我正在绘制一个顶点为0,0,0,0,0,10,1,10,1,01,0,01,01,01,01,1,1和1,0,1的立方体。以下是我初始化视图的方式:

无效初始闪烁x,int y,int w,int h { glutInitDisplayModeGLUT|U SINGLE | GLUT|RGB | GLUT|U DEPTH; 位置x,y; w,h; glutCreateWindow CSE328项目1; GLUT绘制; glFrontFaceGL_前_和_后; glMatrixModeGL_投影; glFrustum-10.0,10.0,-10.0,10.0,2.0,40.0; glMatrixModeGL_模型视图; gluLookAt10,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之间,并位于剪裁平面中,但它给出了类似的结果。

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


我建议缩小平截头体,例如+/-2.0f,并将相机移近;4.0f,4.0f,4.0f

通过更改gluLookAt的前3个参数,将眼睛位置移离立方体更远,应该会使立方体更小


您还可以将对glFrustum的调用替换为对glupperspective的调用,这样可以更容易地根据您的喜好配置透视投影

在OpenGL中,不进行初始化。你设定状态。在initGL中执行的大部分操作实际上都属于图形代码;设置您缺少的矩阵重置为标识顺便说一句。谢谢,我的问题是由于没有重置为标识造成的。