To follow up on
www.b4x.com
Sorry I have been away longer than expected.
Regarding your question about whether Fast3D is open source, Erel, I first need to sort out some outstanding issues. Foremost among these is the Canvas Snapshot crash first reported in https://www.b4x.com/android/forum/threads/canvas-snapshot-size-limit.127859/
The maximum size of the canvas is now kept well below the upper limit, however Snapshot still crashes erratically with the following java.lang.NullPointerException:
This would appear to correspond to a OpenJDK bug reported here
Can anyone suggest workarounds?
Many thanks!
Research Resuts: Calculating 3D Land Surface Area
Hello everyone, Those of you working with GIS might be interested in the following recent research paper describing 3D land surface area calculations implemented in B4J. https://www.researchgate.net/publication/355179797 Many thanks to you Erel, and to members of the Forum, for providing a...
Sorry I have been away longer than expected.
Regarding your question about whether Fast3D is open source, Erel, I first need to sort out some outstanding issues. Foremost among these is the Canvas Snapshot crash first reported in https://www.b4x.com/android/forum/threads/canvas-snapshot-size-limit.127859/
The maximum size of the canvas is now kept well below the upper limit, however Snapshot still crashes erratically with the following java.lang.NullPointerException:
Error message:
java.lang.NullPointerException
at javafx.graphics/com.sun.prism.d3d.D3DTexture.getContext(D3DTexture.java:84)
at javafx.graphics/com.sun.prism.d3d.D3DTexture.update(D3DTexture.java:207)
at javafx.graphics/com.sun.prism.d3d.D3DTexture.update(D3DTexture.java:151)
at javafx.graphics/com.sun.prism.impl.BaseContext.flushMask(BaseContext.java:109)
at javafx.graphics/com.sun.prism.impl.BaseContext.drawQuads(BaseContext.java:118)
at javafx.graphics/com.sun.prism.impl.VertexBuffer.flush(VertexBuffer.java:98)
at javafx.graphics/com.sun.prism.impl.BaseContext.flushVertexBuffer(BaseContext.java:101)
at javafx.graphics/com.sun.prism.impl.ps.BaseShaderContext.setRenderTarget(BaseShaderContext.java:746)
at javafx.graphics/com.sun.prism.impl.BaseContext.setRenderTarget(BaseContext.java:131)
at javafx.graphics/com.sun.prism.impl.BaseGraphics.<init>(BaseGraphics.java:106)
at javafx.graphics/com.sun.prism.impl.ps.BaseShaderGraphics.<init>(BaseShaderGraphics.java:86)
at javafx.graphics/com.sun.prism.d3d.D3DGraphics.<init>(D3DGraphics.java:42)
at javafx.graphics/com.sun.prism.d3d.D3DGraphics.create(D3DGraphics.java:65)
at javafx.graphics/com.sun.prism.d3d.D3DRTTexture.createGraphics(D3DRTTexture.java:77)
at javafx.graphics/com.sun.prism.d3d.D3DResourceFactory.createRTTexture(D3DResourceFactory.java:316)
at javafx.graphics/com.sun.prism.d3d.D3DResourceFactory.createRTTexture(D3DResourceFactory.java:270)
at javafx.graphics/com.sun.prism.d3d.D3DResourceFactory.createRTTexture(D3DResourceFactory.java:63)
at javafx.graphics/com.sun.scenario.effect.impl.prism.ps.PPSDrawable.create(PPSDrawable.java:59)
at javafx.graphics/com.sun.scenario.effect.impl.prism.ps.PPSRenderer.createCompatibleImage(PPSRenderer.java:163)
at javafx.graphics/com.sun.scenario.effect.impl.prism.ps.PPSRenderer.createCompatibleImage(PPSRenderer.java:67)
at javafx.graphics/com.sun.scenario.effect.impl.ImagePool.checkOut(ImagePool.java:183)
at javafx.graphics/com.sun.scenario.effect.impl.Renderer.getCompatibleImage(Renderer.java:116)
at javafx.graphics/com.sun.scenario.effect.impl.prism.ps.PPSRenderer.getCompatibleImage(PPSRenderer.java:168)
at javafx.graphics/com.sun.scenario.effect.impl.prism.ps.PPSTwoSamplerPeer.filterImpl(PPSTwoSamplerPeer.java:62)
at javafx.graphics/com.sun.scenario.effect.impl.prism.ps.PPSEffectPeer.filter(PPSEffectPeer.java:54)
at javafx.graphics/com.sun.scenario.effect.CoreEffect.filterImageDatas(CoreEffect.java:106)
at javafx.graphics/com.sun.scenario.effect.Blend.filterImageDatas(Blend.java:37)
at javafx.graphics/com.sun.scenario.effect.FilterEffect.filter(FilterEffect.java:195)
at javafx.graphics/com.sun.javafx.sg.prism.NGCanvas.applyEffectOnAintoC(NGCanvas.java:738)
at javafx.graphics/com.sun.javafx.sg.prism.NGCanvas.blendAthruBintoC(NGCanvas.java:768)
at javafx.graphics/com.sun.javafx.sg.prism.NGCanvas.renderClip(NGCanvas.java:724)
at javafx.graphics/com.sun.javafx.sg.prism.NGCanvas.initClip(NGCanvas.java:711)
at javafx.graphics/com.sun.javafx.sg.prism.NGCanvas.renderStream(NGCanvas.java:1056)
at javafx.graphics/com.sun.javafx.sg.prism.NGCanvas.renderContent(NGCanvas.java:607)
at javafx.graphics/com.sun.javafx.sg.prism.NGNode.doRender(NGNode.java:2072)
at javafx.graphics/com.sun.javafx.sg.prism.NGNode.render(NGNode.java:1964)
at javafx.graphics/com.sun.javafx.tk.quantum.QuantumToolkit$5.draw(QuantumToolkit.java:1411)
at javafx.graphics/com.sun.javafx.tk.quantum.QuantumToolkit$5.run(QuantumToolkit.java:1447)
at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515)
at java.base/java.util.concurrent.FutureTask.runAndReset(FutureTask.java:305)
at javafx.graphics/com.sun.javafx.tk.RenderJob.run(RenderJob.java:58)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
at javafx.graphics/com.sun.javafx.tk.quantum.QuantumRenderer$PipelineRunnable.run(QuantumRenderer.java:125)
at java.base/java.lang.Thread.run(Thread.java:834)
This would appear to correspond to a OpenJDK bug reported here
Can anyone suggest workarounds?
Many thanks!