SDL:调用SDL_CreateRenderer Segfaults

时间:2016-09-26 08:18:44

标签: c++ segmentation-fault sdl-2

当我在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。

有人知道可能导致这种情况的原因吗?以前有人经历过这样的事吗?

1 个答案:

答案 0 :(得分:1)

SDL_GetWindowSurace文档说明您可能无法在此窗口中将其与3D或渲染API结合使用。。自己生成表面和更新窗口表面(并忘记硬件加速)或使用SDL_Renderer并且从不触摸窗口表面(它甚至不存在加速后端)。