我冒昧地糾正了我所看到的一個巨大的障礙,讓這段代碼的行爲可預見。 gluPerspective (...)
應該用於設置投影矩陣,有時可以將每個方向都填充到一個矩陣中,但這並沒有多大意義。
void GLWidget::paintGL(){
glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);
/* Original code that does really bad things ...
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
gluPerspective(60.0f,(GLfloat)width/(GLfloat)height,0.01f,650.0f);
*/
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluPerspective(60.0f,(GLfloat)width/(GLfloat)height,0.01f,650.0f);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
gluLookAt(0.0, cam_radius, cam_radius,
0.0, 0.0, 0.0,
0.0, 0.0, 1.0);
glViewport(0, 0, width, height);
glRotatef(rotate_x, 1.0, 0.0, 0.0);
glRotatef(rotate_y, 0.0, 0.0, 1.0);
...
}
至於調試東西,你不能重現,第一步是考慮每一個國家(或多個)可能產生一個類似於你(或者更確切地說,是別人)經歷的影響。這是我在StackOverflow上大部分時間執行的操作,當有人提供隨機代碼和屏幕截圖時。通常他們最初提供的代碼是無益的,但是問題的屏幕截圖和描述導致了正確的解決方案;幸運的是評論部分允許我們在提交答案之前要求更具體的代碼。
我聽到你的問題時首先想到的是投影和視口映射,這導致我在qglwidget.cpp
的地方發現了一些頑皮的代碼。它可能不一定是你的整個問題,但它肯定是有問題,它符合所有的標準。
您確定您的客戶機上安裝了最新的圖形驅動程序嗎?另外,他有沒有使用過時的編譯器? –
我不太確定,但它應該在那裏工作。你的意思是也許我打電話給一些新的功能?但是,那我怎麼猜? – MaiaVictor
發表了一個答案 - 不能真正想到一個更簡單的方法來處理這個問題。 –