我正在研究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