首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >设置opengl透视投影

设置opengl透视投影
EN

Stack Overflow用户
提问于 2012-05-06 04:56:35
回答 2查看 1.2K关注 0票数 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)的立方体。这就是我初始化视图的方式:

代码语言:javascript
复制
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();
}

由于某些原因,立方体填满了整个屏幕。我尝试更改了frustum和lookAt方法的值,结果要么立方体根本不可见,要么它填充了整个视口。在glLookAt中,我假设“眼睛”的位置是(10,10,10),并看着立方体表面上的点(0.5,0.5,0)。我认为这将提供足够的距离,以便整个立方体将是可见的。我是不是想错了?我还尝试在z方向上移动立方体,使其位于z= 10到z= 11之间,因此在裁剪平面上也是如此,但它给出了类似的结果。

EN

回答 2

Stack Overflow用户

发布于 2012-05-06 14:13:38

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

我建议将截体变小(例如+/- 2.0f),并将相机移动到更近的位置;(4.0f, 4.0f, 4.0f)

票数 0
EN

Stack Overflow用户

发布于 2012-05-09 08:31:38

通过更改gluLookAt()的前3个参数,将眼睛位置从立方体进一步移动,应该会使立方体变小。

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10465926

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档