微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

为什么我的 Graphics.drawString() 需要这么多时间来渲染文本?

如何解决为什么我的 Graphics.drawString() 需要这么多时间来渲染文本?

我正在用 Java 编写我的第一个视频游戏,并且我已经进入了我想要在我的 HUD 中显示分数和级别的游戏部分。

对于我的 HUD 类,我有一个渲染方法显示其中的所有元素。

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,(int)HEALTH * 2,32);
    g.setColor(Color.white);
    g.drawRect(15,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,WIDTH,HEIGHT);

    handler.render(g);
    hud.render(g);


    g.dispose();
    bs.show();
}

当我第一次加载我的游戏时,FPS 为 1 或 2,屏幕保持全白约 3-4 秒。然后游戏加载,我的 FPS 恢复到 800 或更多。但是游戏从一开始就在运行,即使在那个空白屏幕中,游戏也已经开始了。这对玩家来说是一个问题,因为他们的健康状况可能会下降,而且他们甚至无法阻止这种情况发生。

如果这里没有足够的信息,我很乐意提供更多代码。游戏本质上只是在物体成波浪状时躲避它们。

它绝对是 drawString() 方法。我注释掉了画弦的线条,效果很好,把它们放回去,问题仍然存在。

我只想知道是否有一种方法可以更快地绘制字符串,或者是否有办法改进我必须解决的问题。谢谢!

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。