我是在windows C++中编程的。 我想知道哪个是禁用DIB到屏幕上的方法。 图像可能拉伸。这是在Windows中将大型DIB绘制到屏幕上的禁食方法
比的StretchDIBits更快,比的SetDIBitsToDevice更快。 比StretchBits快。
,并具有高拉伸质量。
非常感谢!
我是在windows C++中编程的。 我想知道哪个是禁用DIB到屏幕上的方法。 图像可能拉伸。这是在Windows中将大型DIB绘制到屏幕上的禁食方法
比的StretchDIBits更快,比的SetDIBitsToDevice更快。 比StretchBits快。
,并具有高拉伸质量。
非常感谢!
功能StretchDIBits
将充分利用硬件的API,我想。除此之外,请看BitBlt
/StretchBlt
。
另外,还有一些other questions有关StretchDIBits
,你可以看看,如果你走的路线。
如果您对这些方法不满意,我不知道还有什么可以告诉您的。你的CPU只能做很多事情。确保你可以缓存操作结果,只有updating what you need。查看OpenGL或DirectX以充分利用您的图形卡。
从我记得,当我在Windows源代码偷看,Stretchblt是在80年代中期写的暑期实习生和从来没有得到修复。所有版本的Windows都使用了相同的低效代码。在少数Windows移动设备上,StretchBlt将利用2D硬件加速,但不能在桌面Windows上运行。在桌面窗口上使用DirectDraw以利用2D硬件加速并获得快速响应。在我的桌面视频游戏产品中,我有自己的Stretchblt代码,它将内存缓冲区中的位拉伸,然后调用BitBlt将它们复制到显示屏上,这比简单地调用StretchBlt快得多。
我认为StretchBlts失败的主要原因是代码完全没有意识到缓存/未缓存的内存的速度,并且它在延伸映像时会使缓存崩溃。
非常感谢! StretchDIBits是我用过的。我想要更快的API。 – user25749 2009-07-31 04:05:06
其实大部分的问题都是由myselfTT问,仍然很慢~~ – user25749 2009-07-31 04:06:08