私はメインループのいくつかの繰り返しを続けてきた非常に基本的なSDLアプリケーションを作成しましたが、クラッシュしました。私はSDL_GL_SwapWindowにあるエラーを見つけました。これは最初の2回動作し、クラッシュします。これは私が実際に試した非常に単純化されたバージョンであり、同じことをしました。3回目の呼び出しで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;
最初の2回の呼び出しは正常に機能し、3番目の呼び出しはプログラムをクラッシュさせます。奇妙なことに、クラッシュがigd10umd32.dllで発生し、デバッガでそのファイルを読み取れませんでした。私はそれをインターネット上で見たが、図書館を修復しようとする試みは一切できなかった。さらに、問題がこの図書館にあれば、おそらくこのような不思議な状況のもとでは出現しないでしょう。
さらに面白いのは、プログラムが2台目のノートパソコンで正常に動作することです。そして、私がそこでそれを編集してこのノートパソコンで走ったとき、それはうまくいった。
私はWindows 10を使用しています。私はSDL/OpenGLを何度も使ってきましたが、このようなことはまったくありませんでした。何がこの非常に混沌とした行動を引き起こす可能性があるアイデア?
* igd10umd32.dll *はグラフィックスドライバの一部です。お使いのSDLのバージョンが間違ったことをしてクラッシュを引き起こしている可能性があります。この実行可能ファイルを別のグラフィックスアダプタ/マシンで試してみましたか?あなたはどのバージョンのSDLを使用していますか?どのライブラリをリンクしていますか? – Ani
@ananthonline:そう思わない。 SDL_GL_SwapWindowは非常に簡単なコードパスです。また、そのDLLのクイックグーグルは、多くのクラッシュ(MS Officeなどの高プロファイルプログラム)に巻き込まれていることを示しています。私はこれがドライバーのバグだと言いたい。 – datenwolf
私は最初に自分のコードを疑ってから、ドライバの疑惑に移ります。私はCarmackではありません:)いずれにしても、OPは他のOpenGLテストアプリケーションを実行しようとします。動作している場合、アプリケーションが取得しているコードパス(ドライバおよび/またはユーザコード)の問題 – Ani