我有一个多年前写的基于 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/