晚上好,
我有几张32位图像在内存缓冲区中,我希望能够快速地将它们“blit”到设备上下文中。由于缓冲区将被不断操作并需要反复blit到DC上,因此速度是一个问题。
缓冲区的颜色深度为32位,因此它已经处于SetDIBits()所期望的DIB格式中。但是,这种方法相当繁琐,因为在操作之前无法将SetDIBits()的位图目标选择到DC中。因此,我将需要不断地交换DC的位图,调用SetDIBits(),将位图交换回DC,然后将DC blit到窗口的DC上。对我来说,这似乎只是CPU上的很多工作量和Windows API中太多的分支;过于繁琐以获得最佳性能。
如果DirectX不强制我使用2D操作的设备上下文或在显示之前上传纹理到视频内存,因为图像的内容不断变化,我将对其感兴趣。
我的问题很简单(尽管写了很长)。对于我将一个像素缓冲区中的图像blit到屏幕上,什么是最快的方法?直接访问DC的像素缓冲区将是很好的,但我知道那不可能发生。
谢谢您读完我长篇大论的内容。