【问题标题】:Target most Windows versions for a 2D game?针对 2D 游戏的大多数 Windows 版本?
【发布时间】:2011-05-27 22:04:34
【问题描述】:

如果要为大多数版本的 Windows 编写游戏,应该使用哪个 API?

我知道 DirectDraw 在 NT4 及更高版本上工作(尽管 DirectDraw 是在 NT4 上用 GDI 模拟的)。但是,有人告诉我 DirectDraw 在较新版本的 Windows 中已被弃用?

我可以只恢复到 GDI,但是很难完全消除闪烁和撕裂,因为在缓冲区之间没有使用 翻转 的双缓冲。

我应该选择 Direct3D 还是 DirectDraw?或者有什么方法可以完全消除 GDI 中的闪烁?

如果 Direct3D 是答案,大多数平台支持哪个版本?

【问题讨论】:

  • 您是否考虑过为此使用 SDL 等更高级别的库?例如,SDL 几乎支持所有 Windows 版本,如果您使用它的功能,您的游戏也可以在 Linux 或 MacOS 等其他系统上运行。
  • 你真的需要支持NT4吗?甚至2000?我无法想象还有比 XP 更早的东西。
  • @Rup 我不必这样做,但这会很有趣。低于XP当然会先下架,不过支持NT4和Win95起来就好了。
  • 我同意 thkala,使用跨平台库/工具包也将在 Windows 世界中产生更高的兼容性。跨平台支持只是您将获得的一个相当大的好处(恕我直言,这是现代世界的必经之路)。
  • @Amigable:我不得不说,我觉得你对“有趣”的定义很有趣!

标签: windows directx gdi directdraw


【解决方案1】:

除非您确定您将永远想要将您的游戏移植到任何非 Windows 平台,否则我会推荐 OpenGL。它应该适用于 2000 及以上的所有版本,并且一些幸运的 NT4 或 Win98 用户可能能够运行它(但不要将这些版本宣传为“支持”。)硬件加速并不总是有效,但会影响性能对于简单的 2D 游戏来说不会很明显。如有必要,您将能够以相当便宜的价格将其移植到其他平台(例如 iPhone)。

【讨论】:

  • 我喜欢。我正在考虑接受这个答案。即使在旧版本上,您也可以在 OpenGL 中加倍缓冲和翻转帧吗?
  • @Amigable,这并不特定于 OpenGL。大多数 GPU 可以做到这一点,但少数(通常在上网本和“商务”PC 中发现)不能。
  • 但是 OpenGL 作为 API(可能带有 Windows 扩展?)具有翻转 vsync 的机制?
  • @Amigable,是的,它在this question 中有介绍。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-06-22
  • 2013-03-23
  • 2014-01-21
相关资源
最近更新 更多