2016-05-13 62 views
0

我做了一個非常基本的SDL應用程序,它繼續進行主循環的幾次迭代,但之後崩潰了。我找到錯誤在SDL_GL_SwapWindow,它工作在前兩次,然後崩潰。這是一個非常簡化的版本,我已經嘗試過,它也做了同樣的事情。SDL_GL_SwapWindow在第三次調用時崩潰

SDL_Init(SDL_INIT_EVERYTHING); 
SDL_Window* SDLWindow = SDL_CreateWindow("Balls", SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED, 800, 600, SDL_WINDOW_OPENGL | SDL_WINDOW_SHOWN); 
SDL_GLContext SDLGLContext = SDL_GL_CreateContext(SDLWindow); 
glewInit(); 

glViewport(0, 0, 800, 600); 

SDL_GL_SwapWindow(SDLWindow); 
SDL_GL_SwapWindow(SDLWindow); 
SDL_GL_SwapWindow(SDLWindow); //crashes here 

return 0; 

前兩個調用工作得很好,第三個調用崩潰了程序。奇怪的是,崩潰發生在igd10umd32.dll和調試器不允許我讀取該文件。我在網上查了一下,但沒有嘗試修復這個庫。此外,如果問題出現在這個庫中,它可能不會出現在這種奇怪的情況下。

還有什麼更奇怪的是,該程序在我的第二臺筆記本電腦上工作正常。當我編譯它並在這檯筆記本電腦上運行它時,它也運行良好。

我使用的是Windows 10.我曾與SDL/OpenGL多次合作過,並且從未遇到類似這樣的事情。任何想法可能會導致這種非常混亂的行爲?

+0

* igd10umd32.dll *是圖形驅動程序的一部分。您的SDL版本很可能做錯了某些事情並導致崩潰。你是否在不同的圖形適配器/機器上試過這個可執行文件?你使用的是什麼版本的SDL?你鏈接了哪些庫? – Ani

+0

@ananthonline:不太可能。 SDL_GL_SwapWindow是一個非常簡單的代碼路徑。此外,該DLL的快速Google表明它很快陷入崩潰(也是像MS Office這樣的高調程序)。我會說這是一個驅動程序錯誤。 – datenwolf

+0

我首先懷疑我的代碼,然後繼續懷疑驅動程序。我不是Carmack :)在任何情況下,OP應該嘗試運行其他OpenGL測試應用程序。如果他們工作,那麼這是應用程序正在使用的代碼路徑(驅動程序和/或用戶代碼)的問題 – Ani

回答

0

已解決。這只不過是一個NVIDIA的錯誤。更新驅動程序擺脫了所有問題。

+1

NVIDIA®(英偉達™)NVIDIA®(英偉達™)公司的故障很可能是因爲_intel_驅動程序崩潰。可能出現這種情況,您之前正在使用集成GPU,現在您正在使用離散GPU,但實際上並未解決原始問題。 – derhass