2012-02-03 190 views
0

首先要做的事:平臺是Windows 7 64位,語言是VC++,IDE是VS2010。顯卡是nVidia GTX 460,驅動程序版本是290.53。OpenGL停止渲染

所以這裏的情況。我目前使用Glew 1.7和Glut在OpenGL中工作。我前幾天設置了一切,併成功地爲我的課程編寫了代碼並完成了作業。這份任務運行得非常漂亮,並且顯示出來並且完成了它應有的一切。那太棒了。所以我提交了我的任務,直到今晚纔再次觸碰它。

現在,今晚我試着再次運行代碼,而不是我精美的棋盤格多邊形,我得到一個普通的白色窗口。據我所知,自從我上次運行代碼以來,沒有任何與OpenGL相關的更改在我的系統上發生了變化。我根本沒有改變代碼,我沒有改變圖形驅動程序,我沒有改變任何我知道的東西。我似乎無法找到與此類問題有關的任何事情,而且我可能會導致問題的解決。我甚至嘗試過重新編譯Glew,但它沒有改變任何東西。我知道這不是一個代碼問題,因爲它幾天前工作正常,沒有任何改變,所以它必須是一個配置問題。

難道有人請指點我正確的方向嗎?

編輯
還有一件事要補充。當我最初正在執行有問題的項目時,試圖運行它會生成錯誤消息「無法找到glew32d.dll」,直到我將glew32d.dll和glut32.dll放到我的項目的源文件夾中。

現在,我不記得從我的項目文件夾中刪除它們,但是當我昨晚試圖調試它時,我注意到它們都從我的項目文件夾中消失了。但是,我沒有得到任何.dll丟失的錯誤。將它們替換爲文件夾並不能解決問題,但我想知道它們的消失是否與此有關。它們也位於VS2010安裝路徑的VC/bin /目錄中,並且從兩個位置刪除它們都會產生錯誤消息,但現在已經足夠用於構建和運行,因爲之前我在兩者中都需要它們。

+0

只是盲注,但你嘗試重新安裝顯卡驅動程序..?其他OpenGL渲染效果很好..? – Sorceror 2012-02-03 07:44:21

+0

我只是想重新安裝顯卡驅動程序。不幸的是,它沒有解決這個問題。據我所知,其他OpenGL渲染似乎沒有問題。 – AboutAverage 2012-02-03 08:26:27

+0

所以它似乎在你的代碼然後;] ..你有一些舊版本的代碼..?嘗試一下.. – Sorceror 2012-02-03 10:17:31

回答

0

一種可能性是,您正在通過無限值(1.#INF)進行縮放,或者是某種類型的東西。我遇到了一個非常相似的情況,結果這是問題所在。但是,如果您沒有更改代碼,那麼您可以排除這一點。你是否嘗試過投入一些代碼來渲染一個簡單的四邊形或三角形到屏幕上?至於.dlls,我建議將它們放在C:/ Windows/SysWOW64和C:/ Windows/System32文件夾中。 SysWOW64特別容納所有的32位.dll,但將它們放在兩個位置是安全的。 Visual Studio會在您的項目文件夾和這些系統文件夾中查找必要的動態庫。將它們放入系統文件夾的好處是,它們可用於您編寫的所有OpenGL應用程序。

可能有助於發現問題的最後一件事是利用OpenGL的錯誤報告。您可以使用功能,如:

void HandleGLError() 
{ 
    GLenum error; 
    int i = 0; 
    while ((error = glGetError()) != GL_NO_ERROR) { 
     printf("GL ERROR(%d) %s\n",i,gluErrorString(error)); 
     i++; 
    } 
} 

嘗試調用,在你的渲染功能的開始和結束,並在你想到的任何其他地方可能會引起問題。