当我在SDL2项目中使用软件渲染时,一切都按预期工作。 例如,当创建SDL_Renderer的代码如下所示:
this->renderer = SDL_CreateRenderer(this->window, -1, SDL_RENDERER_SOFTWARE);
当我使用硬件渲染时,例如当创建SDL_Renderer的代码如下所示:
this->renderer = SDL_CreateRenderer(this->window, -1, SDL_RENDERER_ACCELERATED);
出于某种原因,调用SDL_UpdateWindowSurface会导致SEGFAULT。我以标准方式调用SDL_UpdateWindowSurface:
// Update window surface
SDL_UpdateWindowSurface(window);
我知道我的窗口设置方式是正确的,因为使用软件渲染SDL_Renderer运行程序效果很好,并且不会产生SEGFAULT。
有人知道可能导致这种情况的原因吗?以前有人经历过这样的事吗?
答案 0 :(得分:1)
SDL_GetWindowSurace文档说明您可能无法在此窗口中将其与3D或渲染API结合使用。。自己生成表面和更新窗口表面(并忘记硬件加速)或使用SDL_Renderer并且从不触摸窗口表面(它甚至不存在加速后端)。