在 BufferStrategy 上绘制帧后尝试显示帧时出错

问题描述

我正在尝试用 Java 制作一个简单的游戏引擎,我目前正在处理渲染和显示内容,我制作了一个显示功能来在 JFrame 中显示由相机渲染的帧

 if (cam != null)
      frame = cam.render();
    setVisible(true);
    ImageCapabilities imgBackBufCap = new ImageCapabilities(true);
    ImageCapabilities imgFrontBufCap = new ImageCapabilities(true);
    BufferCapabilities bufCap =
      new BufferCapabilities(imgFrontBufCap,imgBackBufCap,BufferCapabilities.FlipContents.copIED);
    try {

      createBufferStrategy(2,bufCap);
    } catch (AWTException ex) {
      createBufferStrategy(2);
    }

    BufferStrategy bs = getBufferStrategy();
    Graphics g = bs.getDrawGraphics();
    if (frame != null)
      g.drawImage(frame,null);
    g.dispose();
    bs.show();

但是有一次我遇到这个异常时它画了一个框架,我在互联网上找不到任何有用的东西,所以我在这里问了一个问题

Exception in thread "display" java.lang.NullPointerException: Cannot invoke "java.awt.image.VolatileImage.getGraphics()" because "this.backBuffers[i]" is null
        at java.desktop/java.awt.Component$BltBufferStrategy.showSubRegion(Component.java:4508)
        at java.desktop/java.awt.Component$BltBufferStrategy.show(Component.java:4469)
        at com.physicsEngine.rendering.displayer.display(displayer.java:41)
        at com.physicsEngine.Game.display(Game.java:74)
        at com.physicsEngine.Game.run(Game.java:65)
        at com.physicsEngine.Game.run(Game.java:69)
        at com.physicsEngine.Game.run(Game.java:69)
        at com.physicsEngine.Game.run(Game.java:69)
        at com.physicsEngine.Game.run(Game.java:69)
        at com.physicsEngine.Game.run(Game.java:69)
        at com.physicsEngine.Game.run(Game.java:69)

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)