SetDisplayMode(XRes, YRes, 16 vs 32, 0, 0)

SetDisplayMode(XRes, YRes, 16 vs 32, 0, 0)

本文关键字:vs YRes XRes SetDisplayMode      更新时间:2023-10-16

我几年前写了一个基于 DirectDraw 的旧程序,我又开始看它了。

我从这里更改了一行:SetDisplayMode(XRes, YRes, 16, 0, 0)

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

而且该程序的运行速度大大加快。(也许快 4 倍)

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

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

谢谢。

虽然精度

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

如果没有本机可用的支持,则必须在运行时完成转换,从而解释为什么 16 位模式较慢。如果转换是原因,它也将消耗不少于 32 位版本的内存。