【问题标题】:OpenGL scene centering problemsOpenGL场景居中问题
【发布时间】:2016-05-28 16:54:41
【问题描述】:

我正在尝试制作一个场景,让我看着 XY 平面,Z 朝向和远离相机视图。我想看到比我面前的对象更远且大小不同的对象,所以我想我应该为此使用 gluPerspective。我的屏幕上应该有一些轴来自原点,但是,我什么都看不到。我让它与一堆翻译一起工作,但我想确保我理解如何正确操作它,因为这都是猜测和检查。

void resizeWindow(GLint newWidth, GLint newHeight)
{
    glViewport(0, 0, newWidth, newHeight);
    glMatrixMode(GL_PROJECTION);
    glLoadIdentity();
    gluPerspective(60.0f, (GLfloat)newWidth / (GLfloat)newHeight, 0.1f, 100.0f);
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
    glMatrixMode(GL_MODELVIEW);
    glLoadIdentity();
    gluLookAt(0.0, 0.0, -1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0);
}

glPushMatrix();
glColor4ub(0, 120, 20, 255);
glBegin(GL_LINE_STRIP);
glVertex3f(0.0f, 0.0f, 0.0f);
glVertex3f(3.0f, 0.0f, 0.0f);
glVertex3f(2.85f, 0.10f, 0.0f);
glVertex3f(2.85f, -0.10f, 0.0f);
glVertex3f(3.0f, 0.0f, 0.0f);
glVertex3f(2.85f, 0.0f, 0.10f);
glVertex3f(2.85f, 0.0f, -0.10f);
glVertex3f(3.0f, 0.0f, 0.0f);
glEnd();
glBegin(GL_LINE_STRIP);
glVertex3f(0.0f, 0.0f, 0.0f);
glVertex3f(0.0f, 3.0f, 0.0f);
glVertex3f(0.0f, 2.85f, 0.10f);
glVertex3f(0.0f, 2.85f, -0.10f);
glVertex3f(0.0f, 3.0f, 0.0f);
glVertex3f(0.10f, 2.85f, 0.0f);
glVertex3f(-0.10f, 2.85f, 0.0f);
glVertex3f(0.0f, 3.0f, 0.0f);
glEnd();
glBegin(GL_LINE_STRIP);
glVertex3f(0.0f, 0.0f, 0.0f);
glVertex3f(0.0f, 0.0f, 3.0f);
glVertex3f(0.10f, 0.0f, 2.85f);
glVertex3f(-0.10f, 0.0f, 2.85f);
glVertex3f(0.0f, 0.0f, 3.0f);
glVertex3f(0.0f, 0.10f, 2.85f);
glVertex3f(0.0f, -0.10f, 2.85f);
glVertex3f(0.0f, 0.0f, 3.0f);
glEnd();

【问题讨论】:

    标签: opengl 3d glut


    【解决方案1】:

    没有尝试运行代码,而是快速浏览了一下:

    • 删除 glPushMatrix()。你不会在任何地方弹出它......也不会修改它们
    • 您的“眼睛”坐标(0.0、0.0、-1.0)似乎有点太接近原始坐标了,因为您的轴长度为 3.0 单位。试试 (0.0, 0.0, -20.0) 左右。

    【讨论】:

    • 我不应该至少看到行首吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-10
    • 1970-01-01
    • 1970-01-01
    • 2016-09-29
    • 2021-06-25
    • 1970-01-01
    相关资源
    最近更新 更多