SDL:调用 SDL_CreateRenderer 段错误

SDL: Calling SDL_CreateRenderer Segfaults

当我在我的 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);

我知道我的 window 的设置方式是正确的,因为 运行 带有软件渲染 SDL_Renderer 的程序工作正常,并且不会产生 SEGFAULT。

有人知道是什么原因造成的吗?以前有人经历过这样的事情吗?

SDL_GetWindowSurace 文档说 您不能将此与 3D 或渲染 API 结合在此 window. 上。要么自己生成表面并更新 window 表面(忘记硬件加速),要么使用 SDL_Renderer 并且永远不要接触 window 表面(加速后端甚至不存在)。