我在Slick2D工作,这是LWJGL的包装器。我尝试动画/缩放字符串的字体大小,而没有每次渲染创建新Font和TrueTypeFont的性能成本。这就是我目前所拥有的:
public void render(GameContainer gc, StateBasedGame sbg, Graphics g) throws SlickException {
Font pulsingFont = new Font("Verdana", Font.PLAIN, (int) Math.abs(Math.sin(frameCount) * 20) + 10);
TrueTypeFont pulsing = new TrueTypeFont(pulsingFont, true);
pulsing.drawString(200, 200, "Pulsing Text", Color.black);
}
public void update(GameContainer gc, StateBasedGame sbg, int DELTA) throws SlickException {
frameCount += 0.1;
}
我知道更改为字体大小的唯一方法是使用Font,这意味着我还需要为每一帧创建一个TrueTypeFont 的新实例。仅这些线条就会导致大量滞后。
那么有没有办法动画字体大小而不是每帧都创建一个新实例?
答案 0 :(得分:1)
是的,您可以缩放图形组件。 这将扩展所有内容,因此请确保在渲染文本后关闭它。
请注意,由于图形比例的增加/减少,您必须调整x / y位置。
来自Slick2d文档: http://slick.ninjacave.com/javadoc/org/newdawn/slick/Graphics.html:
scale(float sx, float sy)
Apply a scaling factor to everything drawn on the graphics context
这意味着您可以放大或缩小图形组件。 渲染文字。 将图形组件重新调整为正常。 做剩下的渲染。