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 表面(加速后端甚至不存在)。
当我在我的 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 表面(加速后端甚至不存在)。