据我所知,libsdl2 比 libsdl 1.2 更适合玩游戏。但我不明白他们带来了哪些变化。我不是程序员,而是最终用户。有人能向我解释一下 SDL2 会给我这个游戏玩家带来哪些好处,特别是在图形方面吗?
有几款游戏仍然使用 800x600 分辨率?这些游戏有可能在 1600x900 和这样的分辨率下玩吗?游戏中是否也可以使用更大的图块?我不知道 SDL 1.2 克服了哪些限制,而 SDL2 克服了这些限制。期待知道。
需要注意的是,我在使用 Debian Jessie。
更新:根据@Mario 的回答,我有一个集成的 Intel G33 芯片组。(我知道这是一个旧的芯片组 :( ),但如果游戏程序员改用 SDL 2,是否有任何功能可以让游戏对拥有 Intel G33 芯片组的人更好。
答案1
免责声明:我最近没有用 SDL 写过任何东西。在 1.3/2.0 开发期间,由于(在我看来)界面太差,而且有一些限制,我停止使用它了。
SDL (1.x) 和 SDL 2 之间最大的变化之一可能就是它们包含了硬件位块传输/渲染。
本质上,当您使用 SDL 1.x 创建窗口时,您可能已经获得了 OpenGL 上下文和可能的硬件加速,但所有绘制都是在软件模式下完成的。这提供了不同平台之间的最佳兼容性,但与此同时,与现代加速图形技术相比,速度非常非常慢(甚至在当时也是如此)。
因此,SDL2 允许程序员更轻松地访问快速渲染功能等。
但是,版本的升级并不意味着游戏看起来更好,或者有更高的分辨率可用或诸如此类的事情。
使用 SDL 1.x,许多程序员使用 SDL 以跨平台的方式创建窗口和 OpenGL 上下文,然后使用他们自己的自定义绘图/OpenGL 调用进行实际绘图。
所以整个问题本质上可以归结为一个问题:
SDL 1.x 的原始代码有多好?
通过良好的优化并使用硬件渲染,您几乎不会注意到任何差异,只是因为某些程序从 SDL 1.x 切换到 SDL 2。这不会神奇地解锁一些新功能(它可能会,这取决于原始程序的编写方式)。
如果存在分辨率限制,那么这是由程序员强加的(例如,为了防止在使用软件渲染时速度极慢)或者是一些兼容性问题。