首先,我对这件事还比较陌生。我期待着获得游戏开发的SDL2和SFML2库。(还有其他的东西)。
现在我知道一个事实: SDL2和SFML2都能够创建启用OpenGL的上下文,通过它们可以完成OpenGL图形编程。
但在网上,我读到了一些讨论,人们说过“SDL1.2是软件加速的,SDL2和SFML2默认是硬件加速的”。我知道软件渲染是只使用CPU的图形。而硬件渲染则使用显卡/流水线。
所以我的问题是,关于这些游戏库:
第1部分:当有人说一个是软件/硬件acc.by默认值时,他是什么意思?如果说SFML2是硬件acc的话(我猜)是这样吗?默认情况下,即使是基本的2d图形也是由它使用硬件渲染作为后端管道来完成的,即使我没有在代码中显式地执行任何硬件渲染编程?
第2部分:如果这是真的,那么在这些库中是否有任何选项可以将其设置为软件加速/呈现?
第3部分:这两个库中哪一个(SDL2和SFML2)具有更好的总体性能/速度?
如果你觉得这个问题很蠢,请提前感谢你的回答和道歉。
发布于 2016-04-04 12:47:42
不能说任何关于SFML的信息(但几乎可以肯定事情非常接近),但是对于SDL来说,正如您所说的那样。在SDL1 2d绘图中,实现为在显示表面上直接闪烁,然后将这个曲面发送到显示-所以大部分是软件(虽然微小的hw加速仍然是可能的)。SDL2有SDL_Renderer和纹理(这是GPU侧的图像或渲染目标),任何使用渲染器的基本绘图都可以由一个或另一个后端加速。选择哪个后端取决于您的程序运行的系统和用户设置--例如,对于linux默认为opengl,对于windows仍可以使用d3d (但仍然可以使用opengl),对于android/ios则是开放的等等。
您可以通过显式调用CreateSoftwareRenderer或提示 SDL来使用软件驱动程序,甚至可以通过设置SDL_RENDER_DRIVER环境变量来重写它。
如果你打算在3d图形中使用opengl,那么你只需忽略所有这些,然后像往常一样用opengl上下文创建窗口,并且永远不要使用SDL_Renderer。
https://stackoverflow.com/questions/36374078
复制相似问题