c++ - SetDisplayMode(XRes, YRes, 16 对 32, 0, 0)

标签 c++ directx

我有一个多年前写的基于 DirectDraw 的旧程序,现在我又开始研究它了。

我改了一行: SetDisplayMode(XRes, YRes, 16, 0, 0)

对此: SetDisplayMode(XRes, YRes, 32, 0, 0)

而且程序的运行速度大大加快。 (可能快 4 倍)

我更改的参数是每像素位数。 我希望每像素使用更多位将需要更多内存,因此速度会更慢。

有没有人有过这种行为的经验? 如果是,您对性能提高的原因有何解释?

谢谢。

最佳答案

虽然精度越低运行速度越快这一点似乎很直观,但您当前的显示硬件很可能本身不支持 16 位模式。事实上,除非你在兼容模式下运行程序,否则 Windows 8.0+ 根本不支持 16 位颜色。你可以check您的驱动程序,看看实际上是否列出了 16 位模式。如果您在更旧的硬件上运行这样的程序,则可能支持 16 位模式。

如果 native 不支持,则必须在运行时进行转换,这解释了为什么 16 位模式速度较慢。如果是转换的原因,它也不会比 32 位版本消耗更少的内存。

关于c++ - SetDisplayMode(XRes, YRes, 16 对 32, 0, 0),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41796095/

相关文章:

c++ - "Extern"与 DirectX 变量?

c++ - 运行我的程序时 Directx 11 蓝屏死机

c++ - for_each 和 mem_fun_ref 麻烦

c++ - 模拟退火,如何归一化概率分布

c++ - VS2015 中奇怪的 memcpy_s 行为

c++ - 不再找到 DirectX 命名空间

c++ - 我需要自定义 SDL 事件。我应该修改 SDL 还是以其他方式获取输入?

c++ - Windows 应用程序占用过多内存。有什么建议吗?

c# - 从 C# XAML Metro 风格应用程序使用 DirectWrite

delphi - 有 Delphi 的游戏引擎吗?