Qt OpenGL的默认比例真的很奇怪

时间:2011-10-07 20:30:25

标签: qt opengl qglwidget

我正在研究Qt编程书中的OpenGL示例。几乎所有东西都运行良好,但默认的比例似乎很遥远。我应该看到一个非常标准的立方体,但我看到了这一点。

wierd cube

我的立方体代码如下所示:

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);

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

proper cube

有没有人知道为什么默认情况下x刻度会如此之小?我正在做这本书的内容,但我真的很困惑。我以前做了很多OpenGL(使用Glut),但这是我第一次使用Qt作为包装器。

1 个答案:

答案 0 :(得分:4)

您对此有何看法:

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

要做什么?做这样的事情会不会更有意义:

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