显然我没有足够的声誉来发表评论,所以我会发布这个作为答案。
我也有同样的问题。我还从 Windows 7 升级到了 10。我的笔记本电脑有集成显卡和专用显卡,但首选显卡是 NVIDIA GeForce 710m。我以为我只需要升级我的驱动程序,但是将我的驱动程序从340.52升级到最新的(353.62)后,我的问题仍然存在。
下面是一个示例“hello world”程序,它可以在我的机器上重现该程序。这似乎是随机的 - 它可能发生在第 2 个循环或第 279 个循环中。
#include "sdl/SDL.h"
#include "sdl/SDL_syswm.h"
int main( int argc, char*argv[] )
{
if( SDL_Init( SDL_INIT_VIDEO ) < 0 )
return 1;
SDL_GL_SetAttribute( SDL_GL_CONTEXT_MAJOR_VERSION, 4 );
SDL_GL_SetAttribute( SDL_GL_CONTEXT_MINOR_VERSION, 4 );
SDL_GL_SetAttribute( SDL_GL_DOUBLEBUFFER, 1 );
SDL_GL_SetAttribute( SDL_GL_DEPTH_SIZE, 24 );
SDL_GL_SetAttribute( SDL_GL_FRAMEBUFFER_SRGB_CAPABLE, 0 );
SDL_Window* sdlWindow = SDL_CreateWindow(
"tac",
30, 60,
1366, 768,
SDL_WINDOW_OPENGL | SDL_WINDOW_SHOWN );
if( !sdlWindow )
return 1;
SDL_GLContext mainContext = SDL_GL_CreateContext( sdlWindow );
if( !mainContext )
return 1;
while( true )
{
SDL_Event mySDLevent;
while( SDL_PollEvent( &mySDLevent ) )
{
}
SDL_GL_SwapWindow( sdlWindow ); // <-- it crashes here
}
SDL_GL_DeleteContext( mainContext );
SDL_DestroyWindow( sdlWindow );
SDL_Quit();
return 0;
}
MyGame.exe 中 0x5ECB9958 (igd10iumd32.dll) 的第一次机会异常:0xC0000005:访问冲突写入位置 0x77007B85。
tacMain.exe 中 0x5ECB9958 (igd10iumd32.dll) 处未处理的异常:0xC0000005:访问冲突写入位置 0x77007B85。
我的调用堆栈来自这些 dll
igd10iumd32.dll
nvoglv32.dll
kernel32.dll
ntdll.dll
所以我认为这是驱动程序问题?...