我做了很多塊傳輸(寫在最近幾個月許多2D遊戲原型 ),我正在尋找最快的blit 可能有可能什麼比的SetDIBitsToDevice 或更快的StretchDIBits?這些大約是1-5毫秒,據我記得一般窗口大小 ,所以他們不是非常快(硬或 不可能寫速度超過200幀/秒),雖然 這是正常的,我認爲,導致RAM本身不是很快。最快的blit(下WINAPI)
0
A
回答
1
這取決於。
大多數機器的瓶頸將從系統內存推向圖形內存。
在許多情況下,SetDIBitsToDevice和BitBlt之間不會有任何有效的區別,但在某些情況下,可能會有。如果您在低色彩模式下運行(例如,256),那麼推送1字節索引比32-bpp像素數據更快,並將其重新映射到卡上。 (無論重新映射是在圖形適配器還是系統中處理,都取決於驅動程序 - 我認爲)。
我相信您可以做的最安全的事情是從設備相關(兼容)位圖獲取BitBlt。我不認爲這會比SetDIBitsToDevice更糟糕,但它可能通常是一條平行線。
我期望(但沒有測試過)任何拉伸blit可能會比直接blit稍貴,除非額外的像素在GPU上合成。
您可能會考慮一些較新的API,如Direct2D,它們旨在與硬件更緊密地協作,而不是呈現理想化的軟件模型。
無論您選擇哪種解決方案,我都會爲機器之間的巨大性能差異做好準備。
+0
好的,但如果可以添加更多的東西,我也想聽聽(我對winapi下的blitting非常感興趣) –
相關問題
- 1. Blit透明圖像與快板
- 2. 最快HTML下載
- 3. Pygame Blit Once?
- 4. WinAPI - 顯示鍵按下
- 5. blit in FigureCanvasTkAgg with matplotlib
- 6. 矩形自動Blit
- 7. python pygame blit函數
- 8. SDL:什麼是Blit?
- 9. Html5 Canvas to Canvas Blit
- 10. Qt SDL blit(?)問題
- 11. 以下是最快的MYSQL結構嗎?
- 12. 設計最快的頁面下載
- 13. 最快的C#代碼下載網頁
- 14. WINAPI
- 15. 。 (WINAPI)
- 16. 最快c#Linq查詢下拉
- 17. Matplotlib FuncAnimation,blit = true時出錯。
- 18. Sprite-Sheet BLIT with HTML 5 Canvas?
- 19. Pygame屏幕不會blit
- 20. 如何blit()在android中?
- 21. Bit blit位圖(WriteableBitmapEx框架)
- 22. 使用WINAPI設置窗口的最小和最大尺寸
- 23. WINAPI中的最大和最小窗口大小
- 24. 創建自定義快捷菜單窗口(WinAPI的)
- 25. WinAPI/GDI:爲什麼大窗口的快照包含任務欄?
- 26. WinAPI菜單凍結後點擊一下
- 27. 實施管中下殼採用WINAPI
- 28. 使用WinAPI的
- 29. html5視頻:最快最快和最慢的慢動作?
- 30. python matplotlib blit到圖的軸或兩側?
通常,人們不必太擔心將位圖渲染到屏幕需要多長時間,而寧願在後臺緩衝區中組合東西,然後將整個事件覆蓋。無論如何,你的限制很可能是視頻硬件,而不是你用來完成blit的特定功能。您可能會考慮使用DirectX,它可能比Windows API更高度優化。 –