首页 > 解决方案 > SDL_CreateRenderer() 与 SDL_CreateSoftwareRenderer()

问题描述

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

标签: cgraphicssdlsdl-2renderer

解决方案


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

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

flagsSDL_CreateRenderer不是绝对的;如果提示说要使用 direct3d 或 opengl,您SDL_RENDERER_SOFTWARE将被忽略。SDL_CreateSoftwareRenderer永远是软件。


推荐阅读