2009-07-31 25 views

回答

3

功能StretchDIBits将充分利用硬件的API,我想。除此之外,请看BitBlt/StretchBlt

另外,还有一些other questions有关StretchDIBits,你可以看看,如果你走的路线。


如果您对这些方法不满意,我不知道还有什么可以告诉您的。你的CPU只能做很多事情。确保你可以缓存操作结果,只有updating what you need。查看OpenGLDirectX以充分利用您的图形卡。

+0

非常感谢! StretchDIBits是我用过的。我想要更快的API。 – user25749 2009-07-31 04:05:06

+0

其实大部分的问题都是由myselfTT问,仍然很慢~~ – user25749 2009-07-31 04:06:08

0

从我记得,当我在Windows源代码偷看,Stretchblt是在80年代中期写的暑期实习生和从来没有得到修复。所有版本的Windows都使用了相同的低效代码。在少数Windows移动设备上,StretchBlt将利用2D硬件加速,但不能在桌面Windows上运行。在桌面窗口上使用DirectDraw以利用2D硬件加速并获得快速响应。在我的桌面视频游戏产品中,我有自己的Stretchblt代码,它将内存缓冲区中的位拉伸,然后调用BitBlt将它们复制到显示屏上,这比简单地调用StretchBlt快得多。

我认为StretchBlts失败的主要原因是代码完全没有意识到缓存/未缓存的内存的速度,并且它在延伸映像时会使缓存崩溃。

+0

我敢肯定的DirectDraw是年前弃用,除非它已经在最近版本的DirectX重新制作。 – GManNickG 2009-07-31 06:13:38

+0

DirectDraw是包含DirectInput和Direct3D的DirectX组件。不推荐使用。 – BitBank 2009-08-01 16:12:39