【发布时间】:2021-05-11 12:39:20
【问题描述】:
正如我所读到的,来自 winAPI 的 winGDI 的 BitBlt() 函数是将一些图像放在屏幕上的最快速度。 但是“blitting”只是将内存从一个源复制到一个目标。
所以我想知道,为什么我们不能只拥有两个位图(缓冲区),并在完成时切换指向当前缓冲区的指针。比如双缓冲。它会比内存复制更快。
在winAPI中可以吗?
【问题讨论】:
-
您当然可以交换两个位图句柄。但是,如果没有
BitBlt,您就不能让内存位图的内容神奇地出现在屏幕上。没有“指向屏幕矩形片段的指针”可以交换。 -
您需要研究硬件架构、Windows 内部结构和当前的驱动程序模型才能理解为什么会这样。
-
您可以使用 DirectX/Direct2D 代替 GDI。这称为交换链:docs.microsoft.com/en-us/windows/win32/direct3ddxgi/…docs.microsoft.com/en-us/windows/win32/direct2d/…
标签: c++ c winapi graphics bitmap