【问题标题】:Software and Hardware rendering in SDL2/SFML2SDL2/SFML2 中的软件和硬件渲染
【发布时间】:2016-04-02 13:48:19
【问题描述】:

首先,我对此比较陌生。我期待着为游戏开发同时选择 SDL2 和 SFML2 库。 (和其他东西)。

现在我知道 SDL2 和 SFML2 都能够创建启用 OpenGL 的上下文,通过它可以完成 OpenGL 图形编程。

但在网上,我读过一些讨论,其中有人说“SDL 1.2 是软件加速,SDL2 和 SFML2 默认是硬件加速”。我知道软件渲染是仅使用 CPU 的图形。而硬件渲染使用显卡/管道。

所以我的问题是,关于这些游戏库:

第 1 部分:当有人说一个是软件/硬件默认情况下,他是什么意思?如果说SFML2是硬件acc,是不是(我的猜测)。默认情况下,即使是基本的 2d 图形也是由它使用硬件渲染作为后端管道来完成的,即使我没有在代码中明确地进行任何硬件渲染编程?

第 2 部分:如果这是真的,这些库中是否有任何选项可以将其设置为软件加速/渲染?

第 3 部分:这 2 个库(SDL2 与 SFML2)中哪一个具有更好的整体性能/速度?

如果您发现问题很愚蠢,请提前感谢您的任何回答和道歉。

【问题讨论】:

    标签: opengl sdl sfml sdl-2 hardware-acceleration


    【解决方案1】:

    关于 SFML 不能说什么(但几乎可以肯定事情非常接近),但对于 SDL,正如你所说的那样。在 SDL1 2d 绘图中,直接在显示表面上实现 blitting,然后将此表面发送到显示 - 所以主要是软件(尽管仍然可以进行轻微的硬件加速)。 SDL2 具有SDL_Renderer 和纹理(它们是 GPU 端图像或渲染目标)和任何使用渲染器的基本绘图可能由一个或另一个后端加速。将选择哪个后端取决于您的程序运行的系统和用户设置 - 例如。它会默认为 linux 的 opengl、windows 的 d3d(但仍然可以使用 opengl)、android/ios 的 opengles 等。

    您可以通过显式调用SDL_CreateSoftwareRendererhint SDL 来使用软件渲染器来使用software 驱动程序,甚至可以通过设置SDL_RENDER_DRIVER 环境变量来覆盖它。

    如果您打算将 opengl 用于 3d 图形 - 那么您只需忽略所有这些并像往常一样使用 opengl 上下文创建窗口,并且永远不要使用 SDL_Renderer。

    【讨论】:

    • 通过“提示”和“SDL_RENDER_DRIVER”部分,您的意思是简单地使用软件渲染替代品,用于在该系统上进行软件渲染 OpenGL/D3D 调用(例如,用于 OpenGL 的 Mesa 驱动程序,用于 D3D 的 Swiftshader )?
    • 对不起,我无法理解您的评论。基本上它要求 SDL 对所有渲染函数使用不同的实现(例如SDL_RenderDrawLine)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多