SDL2 / SFML2中的软件和硬件渲染

时间:2016-04-02 13:48:20

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

首先,我对此比较陌生。我期待为游戏开发者提供SDL2和SFML2库。 (和其他东西)。

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

但是在网上,我已经阅读了人们对某些内容说了些什么的讨论; SDL 1.2是软件加速的,SDL2和SFML2默认是硬件加速的#34;。我知道软件渲染是仅使用CPU的图形。硬件渲染使用图形卡/管道。

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

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

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

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

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

1 个答案:

答案 0 :(得分:0)

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

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

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