我正在研究Java 2D渲染程序(在1.6.0_11上運行),該程序使用外部圖像進行UI渲染。這些大圖像同時包含幾個UI圖形部分,現在我使用BufferedImage.getSubimage()提取這些部分。假設平均桌面系統(有或沒有啓用的DirectX/OpenGL加速),我的問題是:BufferedImage的getSubimage性能
- 的getSubimage()是一個內存高效的呼叫,因爲它共享底層的圖像數據,但是這並不影響渲染這些子圖像與Graphics2D.drawImage()的速度?
- 如果圖像使用8位每像素調色板模式,使用RGBA模式(例如4x內存)或依賴調色板顏色模型(例如轉換時間)的增益/損耗是多少?
事實證明,這有點灰色地帶。如果未使用DirectX管道,則每次提取子圖像需要多一點時間,而不是具有單獨的子圖像圖像。如果圖像是需要特殊座標系進行渲染的圖塊,則差異很明顯。 DirectX開啓後,BufferedImage將成爲託管映像 - 位於視頻內存中 - 並利用卡硬件支持。在這種情況下,子圖像和非子圖像之間沒有顯着差異。 – akarnokd 2009-05-01 08:05:44