晚上好,

我希望在内存缓冲区中有几张32位图像,我希望快速将其“闪电”到设备上下文中。速度是这里的问题,因为缓冲区将不断操纵,需要反复地将其涂抹在DC上。

缓冲区的颜色深度为32位,因此它已经以setDibits()的DIB指望格式()。但是,这很麻烦,因为在操作之前,无法在DC中选择SetDibits()的位图目标。因此,我将需要不断地交换DC的位图,调用SetDibits(),将位图交换回直流,然后将DC闪电到窗口的DC。对我来说,这似乎是CPU上的大量工作量,Windows API中的分支过多。对于最佳性能而言,太多了。

如果我不强迫我使用设备上下文进行2D操作,或者在显示视频内存之前将纹理上传到视频内存,我将有兴趣使用DirectX,因为图像的内容正在不断变化。

我的问题很简单(尽管文章很长)。我将在内存中的像素缓冲区闪烁图像到屏幕上的最快方法是什么?直接访问DC的像素缓冲区将很棒,但我知道这不会发生。

感谢您阅读我的长篇文章。

有帮助吗?

解决方案

有一个API方法 创建 为了创建应用程序可以直接写入的DIB。这允许连续更新位图(模拟物或直接写入其)。

有关更多详细信息,请参见MSDN文章。

必须同步对位图的访问。通过调用gdiflush函数来执行此操作。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top