晚上好,
我在内存缓冲区中有几个 32 位图像,我希望快速将它们“blit”到设备上下文中。速度在这里是一个问题,因为缓冲区将被不断地操纵,并且需要重复地被 blitted 到 DC。
缓冲区的颜色深度是 32 位,因此它已经是 SetDIBits() 的 DIB 预期格式。然而,这相当麻烦,因为在操作之前无法将 SetDIBits() 的位图目标选择到 DC 中。所以我需要不断地换出 DC 的位图,调用 SetDIBits(),将位图换回 DC,然后将 DC blit 到 Window 的 DC。对我来说,这似乎是 CPU 上的大量工作负载以及 Windows API 中的过多分支;对于最佳性能来说太多了。
如果 DirectX 不强迫我使用设备上下文进行 2D 操作,或者在显示它们之前将纹理上传到视频内存,我会对使用 DirectX 感兴趣,因为图像的内容在不断变化。
我的问题很简单(尽管写得很长)。我将内存中的像素缓冲区中的图像blit到屏幕上的最快方法是什么?直接访问 DC 的像素缓冲区会很棒,但我知道这不会发生。
感谢您阅读我的长篇文章。