SDL_CreateRenderer() 与 SDL_CreateSoftwareRenderer()

nny*_*yby 2 c graphics sdl renderer sdl-2

使用该标志创建的渲染器的行为与使用该标志创建的渲染器的行为是否有SDL_CreateSoftwareRenderer()任何不同?SDL_CreateRenderer()SDL_RENDERER_SOFTWARE

kel*_*tar 5

这两者的操作方式甚至预期用途都存在差异。SDL_CreateSoftwareRenderer创建软件渲染器绘图到给定的表面。不要求该表面是窗口表面,您可以绘制到后台缓冲区,将其转换为纹理并将结果提供给 d3d 或 opengl 渲染器。

SDL_CreateRenderer为给定窗口创建渲染器,这意味着它应该绘制到该窗口 - 通过一些检查,例如 opengl 或 vulkan 要求使用特定标志创建窗口。flags它会遍历可用渲染后端列表,并尝试找到最适合您的渲染后端。最终,如果它决定使用软件渲染器(要么不支持其他任何东西,要么明确请求软件,尽管有不止一种方法可以这样做 - 请参阅最后一段),它会调用more-or less SDL_CreateSoftwareRenderer(SDL_GetWindowSurface(window))(不完全如此,但如果您将跟踪代码,它是相同的)。

flags不是SDL_CreateRenderer绝对的;如果提示说使用 direct3d 或 opengl,您的提示SDL_RENDERER_SOFTWARE将被忽略。SDL_CreateSoftwareRenderer始终是软件。