Java 为什么我的Graphics.drawString()要花这么多时间渲染文本?
我正在用Java编写我的第一个视频游戏,我已经进入了游戏中希望在HUD中显示分数和级别的部分 对于我的HUD类,我有一个render方法来显示其中的所有元素Java 为什么我的Graphics.drawString()要花这么多时间渲染文本?,java,game-development,Java,Game Development,我正在用Java编写我的第一个视频游戏,我已经进入了游戏中希望在HUD中显示分数和级别的部分 对于我的HUD类,我有一个render方法来显示其中的所有元素 public void render(Graphics g) { g.setColor(Color.gray); g.fillRect(15, 15, 200, 32); g.setColor(new Color((int)red, (int)greenVal, 0)); g.fillRect(15, 15,
public void render(Graphics g) {
g.setColor(Color.gray);
g.fillRect(15, 15, 200, 32);
g.setColor(new Color((int)red, (int)greenVal, 0));
g.fillRect(15, 15, (int)HEALTH * 2, 32);
g.setColor(Color.white);
g.drawRect(15, 15, 200, 32);
Graphics2D d2 = (Graphics2D) g;
d2.drawString("Score: " + score, 280, 30);
d2.drawString("Level: " + level, 360, 30);
}
我将它投射到一个Graphics2d对象上,看它是否会加速。事实并非如此
我从游戏类及其渲染方法调用HUD渲染方法
public void render() {
this.requestFocus();
BufferStrategy bs = this.getBufferStrategy();
if (bs == null) {
this.createBufferStrategy(3);
return;
}
Graphics g = bs.getDrawGraphics();
g.setColor(Color.black);
g.fillRect(0, 0, WIDTH, HEIGHT);
handler.render(g);
hud.render(g);
g.dispose();
bs.show();
}
当我第一次加载游戏时,FPS为1或2,屏幕保持完全白色约3-4秒。然后游戏加载,我的FPS恢复到800或更多。但游戏从一开始就在运行,即使在那个空白屏幕上,游戏也已经开始了。这对球员来说是个问题,因为他们的健康状况可能会下降,他们甚至无法阻止这种情况的发生
如果这里没有足够的信息,我很乐意提供更多的代码。这个游戏本质上就是躲避波浪中的物体
这肯定是drawString()方法。我把画线的线条注释掉,效果很好,把它们放回去,问题仍然存在
我只是想知道是否有一种方法可以更快地解决问题,或者是否有一种方法可以改进我必须解决的问题。谢谢