Raspberry PI上的JavaFX:加载股票着色器时出错 [英] JavaFX on Raspberry PI: Error loading stock shader

查看:80
本文介绍了Raspberry PI上的JavaFX:加载股票着色器时出错的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

目前,我正在尝试在Raspberry Model B + v1.2上部署可在Windows上平稳运行的JavaFX应用程序.由于JavaFX无法直接在Raspi上使用,因此我已按照此处所述(但是使用最新版本144)对Gluon进行了修改:

Am currently trying to deploy my JavaFX application which runs smoothly on windows, on my Raspberry Model B+ v1.2. Since JavaFX is not directly available on the Raspi I've performed the adaptions with Gluon as described here (however with the newest version 144): Running Javafx GUI on the Raspberry Pi

现在,当我运行将显示一个简单窗口的JFX应用程序时,我收到有关着色器问题的以下错误堆栈(加载普通着色器AlphaTexture_Color时出错):

Now when I run my JFX application which is just going to show a simple window, I get the following error stack about problem with shaders (Error loading stock shader AlphaTexture_Color):

程序链接日志: java.lang.reflect.InvocationTargetException在 sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法)位于 sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 在 sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 在java.lang.reflect.Method.invoke(Method.java:498)在 com.sun.prism.es2.ES2ResourceFactory.createStockShader(ES2ResourceFactory.java:313) 在 com.sun.prism.impl.ps.BaseShaderContext.getPaintShader(BaseShaderContext.java:257) 在 com.sun.prism.impl.ps.BaseShaderContext.validatePaintOp(BaseShaderContext.java:478) 在 com.sun.prism.impl.ps.BaseShaderGraphics.fillPrimRect(BaseShaderGraphics.java:1106) 在 com.sun.prism.impl.ps.BaseShaderGraphics.fillRect(BaseShaderGraphics.java:1502) 在 com.sun.javafx.sg.prism.NGRegion.renderBackgroundRectanglesDirectly(NGRegion.java:1108) 在 com.sun.javafx.sg.prism.NGRegion.renderBackgroundRectangle(NGRegion.java:848) 在 com.sun.javafx.sg.prism.NGRegion.renderAsRectangle(NGRegion.java:751) 在com.sun.javafx.sg.prism.NGRegion.renderContent(NGRegion.java:572) 在com.sun.javafx.sg.prism.NGNode.doRender(NGNode.java:2056)处 com.sun.javafx.sg.prism.NGNode.render(NGNode.java:1948)在 com.sun.javafx.tk.quantum.ViewPainter.doPaint(ViewPainter.java:477) 在 com.sun.javafx.tk.quantum.ViewPainter.paintImpl(ViewPainter.java:330) 在 com.sun.javafx.tk.quantum.PresentingPainter.run(PresentingPainter.java:91) 在 java.util.concurrent.Executors $ RunnableAdapter.call(Executors.java:511) 在java.util.concurrent.FutureTask.runAndReset(FutureTask.java:308) 在com.sun.javafx.tk.RenderJob.run(RenderJob.java:58)处 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) 在 java.util.concurrent.ThreadPoolExecutor $ Worker.run(ThreadPoolExecutor.java:624) 在 com.sun.javafx.tk.quantum.QuantumRenderer $ PipelineRunnable.run(QuantumRenderer.java:125) 在java.lang.Thread.run(Thread.java:748)

Program link log: java.lang.reflect.InvocationTargetException at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at com.sun.prism.es2.ES2ResourceFactory.createStockShader(ES2ResourceFactory.java:313) at com.sun.prism.impl.ps.BaseShaderContext.getPaintShader(BaseShaderContext.java:257) at com.sun.prism.impl.ps.BaseShaderContext.validatePaintOp(BaseShaderContext.java:478) at com.sun.prism.impl.ps.BaseShaderGraphics.fillPrimRect(BaseShaderGraphics.java:1106) at com.sun.prism.impl.ps.BaseShaderGraphics.fillRect(BaseShaderGraphics.java:1502) at com.sun.javafx.sg.prism.NGRegion.renderBackgroundRectanglesDirectly(NGRegion.java:1108) at com.sun.javafx.sg.prism.NGRegion.renderBackgroundRectangle(NGRegion.java:848) at com.sun.javafx.sg.prism.NGRegion.renderAsRectangle(NGRegion.java:751) at com.sun.javafx.sg.prism.NGRegion.renderContent(NGRegion.java:572) at com.sun.javafx.sg.prism.NGNode.doRender(NGNode.java:2056) at com.sun.javafx.sg.prism.NGNode.render(NGNode.java:1948) at com.sun.javafx.tk.quantum.ViewPainter.doPaint(ViewPainter.java:477) at com.sun.javafx.tk.quantum.ViewPainter.paintImpl(ViewPainter.java:330) at com.sun.javafx.tk.quantum.PresentingPainter.run(PresentingPainter.java:91) at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:308) at com.sun.javafx.tk.RenderJob.run(RenderJob.java:58) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) at com.sun.javafx.tk.quantum.QuantumRenderer$PipelineRunnable.run(QuantumRenderer.java:125) at java.lang.Thread.run(Thread.java:748)

起因: java.lang.RuntimeException:在以下位置创建着色器程序时出错 com.sun.prism.es2.ES2Shader.createFromSource(ES2Shader.java:158)在 com.sun.prism.es2.ES2Shader.createFromSource(ES2Shader.java:173)在 com.sun.prism.es2.ES2ResourceFactory.createShader(ES2ResourceFactory.java:225) 在 com.sun.prism.shader.AlphaTexture_Color_Loader.loadShader(AlphaTexture_Color_Loader.java:47) ...另外25个

Caused by: java.lang.RuntimeException: Error creating shader program at com.sun.prism.es2.ES2Shader.createFromSource(ES2Shader.java:158) at com.sun.prism.es2.ES2Shader.createFromSource(ES2Shader.java:173) at com.sun.prism.es2.ES2ResourceFactory.createShader(ES2ResourceFactory.java:225) at com.sun.prism.shader.AlphaTexture_Color_Loader.loadShader(AlphaTexture_Color_Loader.java:47) ... 25 more

java.lang.InternalError:加载股票着色器时出错 AlphaTexture_Color在 com.sun.prism.es2.ES2ResourceFactory.createStockShader(ES2ResourceFactory.java:316) 在 com.sun.prism.impl.ps.BaseShaderContext.getPaintShader(BaseShaderContext.java:257) 在 com.sun.prism.impl.ps.BaseShaderContext.validatePaintOp(BaseShaderContext.java:478) 在 com.sun.prism.impl.ps.BaseShaderGraphics.fillPrimRect(BaseShaderGraphics.java:1106) 在 com.sun.prism.impl.ps.BaseShaderGraphics.fillRect(BaseShaderGraphics.java:1502) 在 com.sun.javafx.sg.prism.NGRegion.renderBackgroundRectanglesDirectly(NGRegion.java:1108) 在 com.sun.javafx.sg.prism.NGRegion.renderBackgroundRectangle(NGRegion.java:848) 在 com.sun.javafx.sg.prism.NGRegion.renderAsRectangle(NGRegion.java:751) 在com.sun.javafx.sg.prism.NGRegion.renderContent(NGRegion.java:572) 在com.sun.javafx.sg.prism.NGNode.doRender(NGNode.java:2056)处 com.sun.javafx.sg.prism.NGNode.render(NGNode.java:1948)在 com.sun.javafx.tk.quantum.ViewPainter.doPaint(ViewPainter.java:477) 在 com.sun.javafx.tk.quantum.ViewPainter.paintImpl(ViewPainter.java:330) 在 com.sun.javafx.tk.quantum.PresentingPainter.run(PresentingPainter.java:91) 在 java.util.concurrent.Executors $ RunnableAdapter.call(Executors.java:511) 在java.util.concurrent.FutureTask.runAndReset(FutureTask.java:308) 在com.sun.javafx.tk.RenderJob.run(RenderJob.java:58)处 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) 在 java.util.concurrent.ThreadPoolExecutor $ Worker.run(ThreadPoolExecutor.java:624) 在 com.sun.javafx.tk.quantum.QuantumRenderer $ PipelineRunnable.run(QuantumRenderer.java:125) 在java.lang.Thread.run(Thread.java:748)

java.lang.InternalError: Error loading stock shader AlphaTexture_Color at com.sun.prism.es2.ES2ResourceFactory.createStockShader(ES2ResourceFactory.java:316) at com.sun.prism.impl.ps.BaseShaderContext.getPaintShader(BaseShaderContext.java:257) at com.sun.prism.impl.ps.BaseShaderContext.validatePaintOp(BaseShaderContext.java:478) at com.sun.prism.impl.ps.BaseShaderGraphics.fillPrimRect(BaseShaderGraphics.java:1106) at com.sun.prism.impl.ps.BaseShaderGraphics.fillRect(BaseShaderGraphics.java:1502) at com.sun.javafx.sg.prism.NGRegion.renderBackgroundRectanglesDirectly(NGRegion.java:1108) at com.sun.javafx.sg.prism.NGRegion.renderBackgroundRectangle(NGRegion.java:848) at com.sun.javafx.sg.prism.NGRegion.renderAsRectangle(NGRegion.java:751) at com.sun.javafx.sg.prism.NGRegion.renderContent(NGRegion.java:572) at com.sun.javafx.sg.prism.NGNode.doRender(NGNode.java:2056) at com.sun.javafx.sg.prism.NGNode.render(NGNode.java:1948) at com.sun.javafx.tk.quantum.ViewPainter.doPaint(ViewPainter.java:477) at com.sun.javafx.tk.quantum.ViewPainter.paintImpl(ViewPainter.java:330) at com.sun.javafx.tk.quantum.PresentingPainter.run(PresentingPainter.java:91) at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:308) at com.sun.javafx.tk.RenderJob.run(RenderJob.java:58) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) at com.sun.javafx.tk.quantum.QuantumRenderer$PipelineRunnable.run(QuantumRenderer.java:125) at java.lang.Thread.run(Thread.java:748)

难道是我的树莓太旧了,不支持某些着色器在硬件上吗? 我还能尝试什么?

Could it be that my raspberry is too old and doesn't support certain shaders in hardware? What else could I try?

非常感谢!

推荐答案

Hmpf,这很巧合,我发现所有问题都是VRAM!必须在树莓派上将其从64mb增加到128或256,才能正常工作.可以通过raspi_config或可视化配置界面来完成.

Hmpf, quite a coincidence that I found that out at all.. the issue was the VRAM! It has to be increased from 64mb to 128 or 256 on the raspberry to work. That can be done through raspi_config or the visual configuration interface.

这篇关于Raspberry PI上的JavaFX:加载股票着色器时出错的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆