2011-10-07 35 views
0

我正在研究一個Qt編程書籍中的OpenGL示例。幾乎一切工作正常,但默認規模似乎沒有辦法。我應該看到一個非常標準的立方體,但是我看到了這一點。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

反正我做這個抽獎()函數時:

glScalef(275, 0.5, 0.5); 

我看到這個(看起來是正確的):

proper cube

有誰知道爲什麼X規模可能非常小 默認?我正在做這本書所說的,但我真的很困惑。我之前(使用Glut)已經完成了很多OpenGL,但這是我第一次使用Qt作爲包裝。

回答

4

究竟你想到這個:

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

辦?難道這樣做更有意義:

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

哦,哦。你是部分正確的。它實際上應該是glOrtho(-m_width,m_width,-1.0,1.0,-2,2);我使用的是像素寬度,而不是寬高比。 –