LibGDX-FX
LibGDX-FX copied to clipboard
Exception on resize
First of all thanks for publishing this! It really worked out of the box, but there seem to be a few bugs and unfortunately I have no clue how to solve those.
When resizing the window, I get the following error:
java.lang.IllegalArgumentException: Upload requires 1251840 elements, but only 743280 elements remain in the buffer at com.sun.prism.impl.BaseTexture.checkUpdateParams(Unknown Source) at com.sun.prism.d3d.D3DTexture.update(Unknown Source) at com.sun.prism.impl.BaseTexture.update(Unknown Source) at com.sun.prism.impl.BaseResourceFactory.getCachedTexture(Unknown Source) at com.sun.javafx.sg.prism.NGImageView.renderContent(Unknown Source) at com.sun.javafx.sg.prism.NGNode.doRender(Unknown Source) at com.sun.javafx.sg.prism.NGImageView.doRender(Unknown Source) at com.sun.javafx.sg.prism.NGNode.render(Unknown Source) at com.sun.javafx.sg.prism.NGGroup.renderContent(Unknown Source) at com.sun.javafx.sg.prism.NGRegion.renderContent(Unknown Source) at com.sun.javafx.sg.prism.NGNode.doRender(Unknown Source) at com.sun.javafx.sg.prism.NGNode.render(Unknown Source) at com.sun.javafx.sg.prism.NGGroup.renderContent(Unknown Source) at com.sun.javafx.sg.prism.NGRegion.renderContent(Unknown Source) at com.sun.javafx.sg.prism.NGNode.renderForClip(Unknown Source) at com.sun.javafx.sg.prism.NGNode.renderRectClip(Unknown Source) at com.sun.javafx.sg.prism.NGNode.renderClip(Unknown Source) at com.sun.javafx.sg.prism.NGNode.doRender(Unknown Source) at com.sun.javafx.sg.prism.NGNode.render(Unknown Source) at com.sun.javafx.sg.prism.NGGroup.renderContent(Unknown Source) at com.sun.javafx.sg.prism.NGRegion.renderContent(Unknown Source) at com.sun.javafx.sg.prism.NGNode.doRender(Unknown Source) at com.sun.javafx.sg.prism.NGNode.render(Unknown Source) at com.sun.javafx.sg.prism.NGGroup.renderContent(Unknown Source) at com.sun.javafx.sg.prism.NGRegion.renderContent(Unknown Source) at com.sun.javafx.sg.prism.NGNode.doRender(Unknown Source) at com.sun.javafx.sg.prism.NGNode.render(Unknown Source) at com.sun.javafx.sg.prism.NGGroup.renderContent(Unknown Source) at com.sun.javafx.sg.prism.NGRegion.renderContent(Unknown Source) at com.sun.javafx.sg.prism.NGNode.renderForClip(Unknown Source) at com.sun.javafx.sg.prism.NGNode.renderRectClip(Unknown Source) at com.sun.javafx.sg.prism.NGNode.renderClip(Unknown Source) at com.sun.javafx.sg.prism.NGNode.doRender(Unknown Source) at com.sun.javafx.sg.prism.NGNode.render(Unknown Source) at com.sun.javafx.sg.prism.NGGroup.renderContent(Unknown Source) at com.sun.javafx.sg.prism.NGRegion.renderContent(Unknown Source) at com.sun.javafx.sg.prism.NGNode.doRender(Unknown Source) at com.sun.javafx.sg.prism.NGNode.render(Unknown Source) at com.sun.javafx.sg.prism.NGGroup.renderContent(Unknown Source) at com.sun.javafx.sg.prism.NGRegion.renderContent(Unknown Source) at com.sun.javafx.sg.prism.NGNode.doRender(Unknown Source) at com.sun.javafx.sg.prism.NGNode.render(Unknown Source) at com.sun.javafx.tk.quantum.ViewPainter.doPaint(Unknown Source) at com.sun.javafx.tk.quantum.ViewPainter.paintImpl(Unknown Source) at com.sun.javafx.tk.quantum.PresentingPainter.run(Unknown Source) at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source) at java.util.concurrent.FutureTask.runAndReset(Unknown Source) at com.sun.javafx.tk.RenderJob.run(Unknown Source) at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) at com.sun.javafx.tk.quantum.QuantumRenderer$PipelineRunnable.run(Unknown Source) at java.lang.Thread.run(Unknown Source)
The ImageView backed by libgdx still works after that, but most of the times, it breaks the rest of the UI. Any ideas?
Hmmm... I guess this depends on the graphics card, you are using. I only tested it with an AMD Radeon HD 6850. Which are you using?
I'm using a nVidia GeForce GT 540M.
+1 i have GeForce GTX 660M
Sorry to bump such an old issue, but I'm having it as well on my Macbook Pro 13" (Retina, Late 2014) on my Intel Iris Pro graphics card.
It seems to be an issue caused by the underlying libraries, check out this issue for more information: https://github.com/Spasi/LWJGL-FX/issues/8
As far as I understand, this problem is being caused by JavaFX not being able to keep up with very high rendering rates which can happen when you either don't lock your framerate in your GDX app or while resizing the window, which causes it to re-render.
Same problem on GTX 950M, Windows 8.1 when resizing:
java.lang.IllegalArgumentException: Upload requires 2421096 elements, but only 657540 elements remain in the buffer
at com.sun.prism.impl.BaseTexture.checkUpdateParams(BaseTexture.java:385)
at com.sun.prism.d3d.D3DTexture.update(D3DTexture.java:138)
at com.sun.prism.impl.BaseTexture.update(BaseTexture.java:321)
at com.sun.prism.impl.BaseResourceFactory.createTexture(BaseResourceFactory.java:247)
at com.sun.prism.impl.BaseResourceFactory.getCachedTexture(BaseResourceFactory.java:218)
at com.sun.prism.impl.BaseResourceFactory.getCachedTexture(BaseResourceFactory.java:152)
at com.sun.javafx.sg.prism.NGImageView.renderContent(NGImageView.java:121)
at com.sun.javafx.sg.prism.NGNode.doRender(NGNode.java:2053)
at com.sun.javafx.sg.prism.NGImageView.doRender(NGImageView.java:103)
at com.sun.javafx.sg.prism.NGNode.render(NGNode.java:1945)
at com.sun.javafx.sg.prism.NGGroup.renderContent(NGGroup.java:235)
at com.sun.javafx.sg.prism.NGRegion.renderContent(NGRegion.java:576)
at com.sun.javafx.sg.prism.NGNode.doRender(NGNode.java:2053)
at com.sun.javafx.sg.prism.NGNode.render(NGNode.java:1945)
at com.sun.javafx.sg.prism.NGGroup.renderContent(NGGroup.java:235)
at com.sun.javafx.sg.prism.NGRegion.renderContent(NGRegion.java:576)
at com.sun.javafx.sg.prism.NGNode.renderForClip(NGNode.java:2294)
at com.sun.javafx.sg.prism.NGNode.renderRectClip(NGNode.java:2188)
at com.sun.javafx.sg.prism.NGNode.renderClip(NGNode.java:2214)
at com.sun.javafx.sg.prism.NGNode.doRender(NGNode.java:2047)
at com.sun.javafx.sg.prism.NGNode.render(NGNode.java:1945)
at com.sun.javafx.sg.prism.NGGroup.renderContent(NGGroup.java:235)
at com.sun.javafx.sg.prism.NGRegion.renderContent(NGRegion.java:576)
at com.sun.javafx.sg.prism.NGNode.doRender(NGNode.java:2053)
at com.sun.javafx.sg.prism.NGNode.render(NGNode.java:1945)
at com.sun.javafx.sg.prism.NGGroup.renderContent(NGGroup.java:235)
at com.sun.javafx.sg.prism.NGRegion.renderContent(NGRegion.java:576)
at com.sun.javafx.sg.prism.NGNode.doRender(NGNode.java:2053)
at com.sun.javafx.sg.prism.NGNode.render(NGNode.java:1945)
at com.sun.javafx.tk.quantum.ViewPainter.doPaint(ViewPainter.java:477)
at com.sun.javafx.tk.quantum.ViewPainter.paintImpl(ViewPainter.java:323)
at com.sun.javafx.tk.quantum.PresentingPainter.run(PresentingPainter.java:91)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:308)
at com.sun.javafx.tk.RenderJob.run(RenderJob.java:58)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at com.sun.javafx.tk.quantum.QuantumRenderer$PipelineRunnable.run(QuantumRenderer.java:125)
at java.lang.Thread.run(Thread.java:745)
Search came to this issue where this bug is said to be fixed.