在使用 Gluon 在 iOS 上尝试了一些应用程序后,我注意到了一些渲染错误。首先,JavaFXLineChart
行为不正确。线条被移位,阴影无法正确显示。我没有进一步检查,但这可能与以下问题有关。
更重要的是在渲染 Gluon 演示 App 时出现异常,名为DoodleTrace
. 画线后(在 iPad 上长约 20 厘米)我在渲染线程中得到一个异常:(
注意:iPad 3 运行 iOS 7)
触发一次(大约 20 厘米后):
va.lang.IllegalArgumentException: Upload requires 1793077 elements, but only 1102848 elements remain in the buffer
at com.sun.prism.impl.BaseTexture.checkUpdateParams(BaseTexture.java)
at com.sun.prism.es2.ES2Texture.update(ES2Texture.java)
at com.sun.prism.impl.BaseContext.flushVertexBuffer(BaseContext.java)
at com.sun.prism.impl.ps.BaseShaderContext.setRenderTarget(BaseShaderContext.java)
at com.sun.prism.impl.BaseContext.setRenderTarget(BaseContext.java)
at com.sun.prism.impl.BaseGraphics.<init>(BaseGraphics.java)
at com.sun.prism.impl.ps.BaseShaderGraphics.<init>(BaseShaderGraphics.java)
at com.sun.prism.es2.ES2Graphics.<init>(ES2Graphics.java)
at com.sun.prism.es2.ES2Graphics.create(ES2Graphics.java)
at com.sun.prism.es2.ES2SwapChain.prepare(ES2SwapChain.java)
at com.sun.javafx.tk.quantum.PresentingPainter.run(PresentingPainter.java)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java)
at java.util.concurrent.FutureTask.runAndReset(FutureTask.java)
at com.sun.javafx.tk.RenderJob.run(RenderJob.java)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java)
at com.sun.javafx.tk.quantum.QuantumRenderer$PipelineRunnable.run(QuantumRenderer.java)
at java.lang.Thread.run(Thread.java)
Outstanding resource locks detected:
ES2 Vram Pool: 3,457,040 used (0.6%), 91,324,416 target (17.0%), 536,870,912 max
7 total resources being managed
average resource age is 28.4 frames
0 resources at maximum supported age (0.0%)
3 resources marked permanent (42.9%)
1 resources have had mismatched locks (14.3%)
1 resources locked (14.3%)
6 resources contain interesting data (85.7%)
0 resources disappeared (0.0%)
在上述异常发生后的每个触摸事件上触发:
java.lang.IllegalArgumentException: Upload requires 1793077 elements, but only 1102848 elements remain in the buffer
at com.sun.prism.impl.BaseTexture.checkUpdateParams(BaseTexture.java)
at com.sun.prism.es2.ES2Texture.update(ES2Texture.java)
at com.sun.prism.impl.BaseContext.flushVertexBuffer(BaseContext.java)
at com.sun.prism.impl.ps.BaseShaderContext.setRenderTarget(BaseShaderContext.java)
at com.sun.prism.impl.BaseContext.setRenderTarget(BaseContext.java)
at com.sun.prism.impl.BaseGraphics.<init>(BaseGraphics.java)
at com.sun.prism.impl.ps.BaseShaderGraphics.<init>(BaseShaderGraphics.java)
at com.sun.prism.es2.ES2Graphics.<init>(ES2Graphics.java)
at com.sun.prism.es2.ES2Graphics.create(ES2Graphics.java)
at com.sun.prism.es2.ES2SwapChain.createGraphics(ES2SwapChain.java)
at com.sun.prism.es2.ES2SwapChain.createGraphics(ES2SwapChain.java)
at com.sun.javafx.tk.quantum.PresentingPainter.run(PresentingPainter.java)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java)
at java.util.concurrent.FutureTask.runAndReset(FutureTask.java)
at com.sun.javafx.tk.RenderJob.run(RenderJob.java)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java)
at com.sun.javafx.tk.quantum.QuantumRenderer$PipelineRunnable.run(QuantumRenderer.java)
at java.lang.Thread.run(Thread.java)