Kar*_*l K 5 java 3d javafx raspberry-pi javafx-3d
我想我已经阅读了有关RPi上JFx下3D问题的所有可用解决方案,以下内容都不符合我的需求。我对2D应用程序没有任何问题。但是当我尝试运行3D程序时,所有3D元素都消失了。执行此命令后:
java -Djavafx.platform=eglfb -Dprism.verbose=true -Dcom.sun.javafx.experimental.embedded.3d=true -Dprism.glDepthSize=24 -Dprism.forceGPU=true -jar Brake_Check.jar
Run Code Online (Sandbox Code Playgroud)
我得到这个:
Prism pipeline init order: es2 sw
Using java-based Pisces rasterizer
Using dirty region optimizations
Not using texture mask for primitives
Not forcing power of 2 sizes for textures
Using hardware CLAMP_TO_ZERO mode
Opting in for HiDPI pixel scaling
Prism pipeline name = com.sun.prism.es2.ES2Pipeline
Loading ES2 native library ... prism_es2
succeeded.
GLFactory using com.sun.prism.es2.X11GLFactory
GraphicsPipeline.createPipeline failed for com.sun.prism.es2.ES2Pipeline
java.lang.UnsatisfiedLinkError: com.sun.prism.es2.X11GLFactory.nInitialize([I)J
at com.sun.prism.es2.X11GLFactory.nInitialize(Native Method)
at com.sun.prism.es2.X11GLFactory.initialize(X11GLFactory.java:146)
at com.sun.prism.es2.ES2Pipeline.<clinit>(ES2Pipeline.java:81)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:264)
at com.sun.prism.GraphicsPipeline.createPipeline(GraphicsPipeline.java:187)
at com.sun.javafx.tk.quantum.QuantumRenderer$PipelineRunnable.init(QuantumRenderer.java:91)
at com.sun.javafx.tk.quantum.QuantumRenderer$PipelineRunnable.run(QuantumRenderer.java:124)
at java.lang.Thread.run(Thread.java:748)
*** Fallback to Prism SW pipeline
Prism pipeline name = com.sun.prism.sw.SWPipeline
(X) Got class = class com.sun.prism.sw.SWPipeline
Initialized prism pipeline: com.sun.prism.sw.SWPipeline
vsync: true vpipe: false
lip 19, 2019 3:31:53 AM javafx.scene.paint.Material <init>
WARNING: System can't support ConditionalFeature.SCENE3D
lip 19, 2019 3:31:53 AM javafx.scene.shape.Shape3D <init>
WARNING: System can't support ConditionalFeature.SCENE3D
lip 19, 2019 3:31:53 AM javafx.scene.shape.Shape3D <init>
WARNING: System can't support ConditionalFeature.SCENE3D
lip 19, 2019 3:31:53 AM javafx.scene.shape.Shape3D <init>
WARNING: System can't support ConditionalFeature.SCENE3D
lip 19, 2019 3:31:53 AM javafx.scene.shape.Shape3D <init>
WARNING: System can't support ConditionalFeature.SCENE3D
lip 19, 2019 3:31:53 AM javafx.scene.shape.Shape3D <init>
WARNING: System can't support ConditionalFeature.SCENE3D
lip 19, 2019 3:31:53 AM javafx.scene.PerspectiveCamera <init>
WARNING: System can't support ConditionalFeature.SCENE3D
lip 19, 2019 3:31:53 AM javafx.scene.LightBase <init>
WARNING: System can't support ConditionalFeature.SCENE3D
lip 19, 2019 3:31:54 AM javafx.scene.shape.Mesh <init>
WARNING: System can't support ConditionalFeature.SCENE3D
lip 19, 2019 3:31:54 AM javafx.scene.shape.Shape3D <init>
WARNING: System can't support ConditionalFeature.SCENE3D
lip 19, 2019 3:31:54 AM javafx.scene.paint.Material <init>
WARNING: System can't support ConditionalFeature.SCENE3D
lip 19, 2019 3:31:54 AM javafx.scene.SubScene <init>
WARNING: System can't support ConditionalFeature.SCENE3D
lip 19, 2019 3:31:54 AM javafx.scene.SubScene <init>
WARNING: System can't support antiAliasing
Run Code Online (Sandbox Code Playgroud)
我已经安装了armv6hf-sdk-8.60.9
我将不胜感激任何建议。
编辑
经过额外的研究后,我还添加了OpenJFX:
apt-get install openjfx
总体上做了一些小的改进,但是仍然缺少一些东西。也许我会从头开始。我使用教程为Raspberry设置JavaFX,然后libprism_es2.so
丢失了,所以我从中复制并重命名了它/usr/lib/jvm/jdk-8-oracle-arm32-vfp-hflt/jre/lib/arm/libprism_es2_eglfb.so
(我选择了这个,因为我认为如果我使用的是-Djavafx.platform=eglfb
parametr,那将是一个很好的选择),现在我添加了OpenJFX,那里还应该安装什么?您认为较新版本的sdk可能会有所帮助吗?但是另一方面,我担心我在操作Linux方面的知识太基础了,如果没有进步,那将会是灾难,所以我宁愿使用已经拥有的版本。
输出消息:
Prism pipeline init order: es2 sw
Using java-based Pisces rasterizer
Using dirty region optimizations
Not using texture mask for primitives
Not forcing power of 2 sizes for textures
Using hardware CLAMP_TO_ZERO mode
Opting in for HiDPI pixel scaling
Prism pipeline name = com.sun.prism.es2.ES2Pipeline
Loading ES2 native library ... prism_es2
succeeded.
GLFactory using com.sun.prism.es2.X11GLFactory
GraphicsPipeline.createPipeline failed for com.sun.prism.es2.ES2Pipeline
java.lang.UnsatisfiedLinkError: com.sun.prism.es2.X11GLFactory.nInitialize([I)J
at com.sun.prism.es2.X11GLFactory.nInitialize(Native Method)
at com.sun.prism.es2.X11GLFactory.initialize(X11GLFactory.java:146)
at com.sun.prism.es2.ES2Pipeline.<clinit>(ES2Pipeline.java:81)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:264)
at com.sun.prism.GraphicsPipeline.createPipeline(GraphicsPipeline.java:187)
at com.sun.javafx.tk.quantum.QuantumRenderer$PipelineRunnable.init(QuantumRenderer.java:91)
at com.sun.javafx.tk.quantum.QuantumRenderer$PipelineRunnable.run(QuantumRenderer.java:124)
at java.lang.Thread.run(Thread.java:748)
*** Fallback to Prism SW pipeline
Prism pipeline name = com.sun.prism.sw.SWPipeline
(X) Got class = class com.sun.prism.sw.SWPipeline
Initialized prism pipeline: com.sun.prism.sw.SWPipeline
vsync: true vpipe: false
lip 19, 2019 3:31:53 AM javafx.scene.paint.Material <init>
WARNING: System can't support ConditionalFeature.SCENE3D
lip 19, 2019 3:31:53 AM javafx.scene.shape.Shape3D <init>
WARNING: System can't support ConditionalFeature.SCENE3D
lip 19, 2019 3:31:53 AM javafx.scene.shape.Shape3D <init>
WARNING: System can't support ConditionalFeature.SCENE3D
lip 19, 2019 3:31:53 AM javafx.scene.shape.Shape3D <init>
WARNING: System can't support ConditionalFeature.SCENE3D
lip 19, 2019 3:31:53 AM javafx.scene.shape.Shape3D <init>
WARNING: System can't support ConditionalFeature.SCENE3D
lip 19, 2019 3:31:53 AM javafx.scene.shape.Shape3D <init>
WARNING: System can't support ConditionalFeature.SCENE3D
lip 19, 2019 3:31:53 AM javafx.scene.PerspectiveCamera <init>
WARNING: System can't support ConditionalFeature.SCENE3D
lip 19, 2019 3:31:53 AM javafx.scene.LightBase <init>
WARNING: System can't support ConditionalFeature.SCENE3D
lip 19, 2019 3:31:54 AM javafx.scene.shape.Mesh <init>
WARNING: System can't support ConditionalFeature.SCENE3D
lip 19, 2019 3:31:54 AM javafx.scene.shape.Shape3D <init>
WARNING: System can't support ConditionalFeature.SCENE3D
lip 19, 2019 3:31:54 AM javafx.scene.paint.Material <init>
WARNING: System can't support ConditionalFeature.SCENE3D
lip 19, 2019 3:31:54 AM javafx.scene.SubScene <init>
WARNING: System can't support ConditionalFeature.SCENE3D
lip 19, 2019 3:31:54 AM javafx.scene.SubScene <init>
WARNING: System can't support antiAliasing
Run Code Online (Sandbox Code Playgroud)
您还有其他建议吗?
因此,解决我的问题的主要方法是安装apt-get install openjfx
我之前已经提到的安装。在那之后,我也不再使用-Djavafx.platform=eglfb
了。发生的下一个问题是,一切都是黑色的。问题似乎出在PointLight
场景中。删除它之后,一切看起来都好多了,但是...仍然存在一些缺陷。盒子上没有阴影,antiAliasing
无法使用,尽管只有一个简单的动画,但它太笨拙了。
编辑
快速更新。一切工作正常。我也在项目中恢复了光芒。我所做的就是更改RPi中的高级设置。
sudo raspi-config
然后高级,next GL Driver
,next GL (Full KMS) OpenGL desktop driver with full KMS
,保存并重新启动。