正如我所读到的,BitBlt()函数来自来自winAPI的winGDI是将一些图像放在屏幕上最快的。但是“闪电战”只将一个内存从一个源复制到一个目的地。
因此,我想知道,为什么我们不能只有两个位图(缓冲区),而只是切换指针,将指向当前缓冲区,如果它是完整的。就像双重缓冲。会比我的快。
在winAPI中有可能吗?
发布于 2021-02-08 02:06:14
GDI中的BitBlt方法是将后台缓冲区的内容复制到重定向面。在directx中实现了一种更有效的方法。
运行时使用位块传输(bitblt)和翻转表示模型在显示监视器上显示图形内容。bitblt和翻转表示模型之间最大的区别是备份缓冲区内容如何到达Windows 8 DWM进行组合。在bitblt模型中,每次调用IDXGISwapChain1 1:Present1 1时,都会将back缓冲区的内容复制到重定向面。在翻转模型中,所有的回退缓冲区都与桌面窗口管理器()共享。因此,DWM可以直接从这些回退缓冲器中合成,而不需要任何额外的复制操作。在一般情况下,翻转模型更有效。flip模型还提供了更多的特性,例如增强了当前的统计数据。 如果有使用Windows图形设备接口(GDI)直接写入HWND的遗留组件,请使用bitblt模型。
欲知更多详情,请参阅:DXGI翻转模型与BitBlt模型的比较
本文也对此作了详细的说明。
https://stackoverflow.com/questions/66092618
复制相似问题