iOS で Gluon を使っていくつかのアプリを試したところ、レンダリングのバグに気付きました。まず、JavaFXLineChart
が正しく動作しません。線がずれて、影が正しく表示されません。これ以上は調べませんでしたが、これは次の問題に関連している可能性があります。
さらに重要なことは、Gluon デモ アプリのレンダリング中に という例外が発生することですDoodleTrace
。線を描いた後 (iPad では約 20cm の長さ)、レンダリングで例外が発生します。スレッド:
(注: iOS 7 を実行している iPad 3)
1 回トリガー (約 20 cm 後):
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)