我正在研究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作为包装器。
答案 0 :(得分:4)
您对此有何看法:
glOrtho(-width, +width, -1.0, 1.0, -2, 2);
要做什么?做这样的事情会不会更有意义:
glOrtho(-width, +width, -height, height, -2, 2);