私は、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 スケールが非常に小さい理由を知っている人はいますか? 私は本に書かれていることを正確にやっていますが、本当に混乱しています。以前に (Glut を使用して) OpenGL をかなり使用したことがありますが、Qt をラッパーとして使用するのはこれが初めてです。