0

我正在研究 Qt 编程书中的 OpenGL 示例。几乎一切正常,但默认比例似乎很遥远。我应该看到一个非常标准的立方体,但我看到了这个。

奇怪的立方体

我的多维数据集代码如下所示:

glBegin(GL_QUADS);

//top face
qglColor(m_faceColors[0]);
glVertex3f(-m_cubeSize, m_cubeSize, -m_cubeSize);
glVertex3f(m_cubeSize, m_cubeSize, -m_cubeSize);
glVertex3f(m_cubeSize, m_cubeSize, m_cubeSize);
glVertex3f(-m_cubeSize, m_cubeSize, m_cubeSize);

// left face
qglColor(m_faceColors[1]);
glVertex3f(-m_cubeSize, -m_cubeSize, -m_cubeSize);
glVertex3f(-m_cubeSize, m_cubeSize, -m_cubeSize);
glVertex3f(-m_cubeSize, m_cubeSize, m_cubeSize);
glVertex3f(-m_cubeSize, -m_cubeSize, m_cubeSize);

等等...

我没有调用任何奇怪的 glScalef。我的 resizeGL() 看起来像这样:

void GLWidget::resizeGL(int width, int height)
{
    glViewport(0, 0, width, height);
    glMatrixMode(GL_PROJECTION);
    glLoadIdentity();
    m_width = (height>0) ? (GLfloat)width/height : 1;
    glOrtho(-width, +width, -1.0, 1.0, -2, 2);
    glMatrixMode(GL_MODELVIEW);
    glLoadIdentity();
}

m_cubeSize 为 1.0

无论如何,当我在 draw() 函数中执行此操作时:

glScalef(275, 0.5, 0.5);

我看到了这个(看起来正确):

适当的立方体

有谁知道为什么默认情况下 x 比例会这么小?我正在按照书上所说的去做,但我真的很困惑。我之前做过很多 OpenGL(使用 Glut),但这是我第一次使用 Qt 作为包装器。

4

1 回答 1

4

您对此有何期待:

glOrtho(-width, +width, -1.0, 1.0, -2, 2);

去做?做这样的事情不是更有意义吗:

glOrtho(-width, +width, -height, height, -2, 2);
于 2011-10-07T20:35:16.047 回答