在使用Gluon在iOS上尝试一些应用程序后,我注意到了一些渲染错误。
首先,JavaFX LineChart
行为不正确。线条移位,阴影无法正确显示。我没有进一步检查这一点,但这可能与以下问题有关。
更重要的是,在渲染名为DoodleTrace
的Gluon演示应用程序时会出现异常。画线后(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)