我正在使用JAI库对一系列图像进行调整,每个图像的大小约为1300x1000。我使用“Rescale”调整像素强度,并使用TiledImage.createGraphics()方法中的Graphics2D对象添加文本和线条。然后我调整图像大小以适应屏幕“subsampleaverage”并使用Graphics2D.drawRenderedImage()渲染到屏幕。到目前为止,几乎没有减速,渲染大约需要40-60毫秒。
但是,如果我只添加文本和行,则显示速度会减慢到100-200毫秒。我似乎无法弄清楚为什么会这样,因为在调整像素强度之后或之前添加文本很好。
我一直在搜索网站,但我似乎找不到任何具体的答案。许多建议都是使用BufferedImages,但从PlanarImages转换为BufferedImages似乎也有一个减速问题。
答案 0 :(得分:1)
显然,Java中的文本仍然很慢。必须在Font
对象上渲染和绘制每个Graphics
对象的字形。如果对象上有大量文本,则会重新创建Font
对象以及所有使用过的Glyphs
,从而导致速度大幅下降。
即使使用JOGL,也会出现明显的放缓。但是,使用相同的TextRenderer
对象可以通过创建单个Font
对象来缓解这种情况,并且只要TextRenderer
处于活动状态就可以重用它。当然,这限制了您使用多个Font对象,因为JOGL还没有实现setFont
函数,要求您为每个新字体,字体样式和字体粗细创建一个新的TextRenderer
对象。
希望这可以帮助任何有类似问题的人。