我是在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