2009-07-31 54 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