jMonkeyEngine / jmonkeyengine

A complete 3-D game development suite written in Java.
http://jmonkeyengine.org
BSD 3-Clause "New" or "Revised" License
3.8k stars 1.12k forks source link

RendererException in ScreenshotAppState: Attempting to upload empty buffer (remaining = 0) #1917

Closed Ali-RS closed 1 year ago

Ali-RS commented 1 year ago

Taking one screenshot works but the second time it crashes the app with:

com.jme3.renderer.RendererException: Attempting to upload empty buffer (remaining = 0), that's an error
    at com.jme3.renderer.lwjgl.LwjglRender.checkLimit(LwjglRender.java:22)
    at com.jme3.renderer.lwjgl.LwjglGL.glReadPixels(LwjglGL.java:399)
    at com.jme3.renderer.opengl.GLRenderer.readFrameBufferWithGLFormat(GLRenderer.java:2165)
    at com.jme3.renderer.opengl.GLRenderer.readFrameBuffer(GLRenderer.java:2147)
    at com.jme3.app.state.ScreenshotAppState.postFrame(ScreenshotAppState.java:287)
    at com.jme3.renderer.RenderManager.renderViewPort(RenderManager.java:1233)
    at com.jme3.renderer.RenderManager.render(RenderManager.java:1297)
    at com.jme3.app.SimpleApplication.update(SimpleApplication.java:278)
    at com.jme3.system.lwjgl.LwjglWindow.runLoop(LwjglWindow.java:622)
    at com.jme3.system.lwjgl.LwjglWindow.run(LwjglWindow.java:711)
    at java.lang.Thread.run(Thread.java:748)

The code to reproduce the error:

public class ScreenshotDemo extends SimpleApplication {

  public static void main(String[] args) {
    new ScreenshotDemo().start();
  }

  public ScreenshotDemo() {
    super(new ScreenshotAppState(null, "test-"));
  }

  @Override
  public void simpleInitApp() {
    inputManager.addMapping("ScreenShot", new KeyTrigger(KeyInput.KEY_F12));
  }

}
stephengold commented 1 year ago

Discussion at the Discord Forum/Hub: https://hub.jmonkeyengine.org/t/next-engine-release/46314/62