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