我想要解决Java中的错误报告。我不确定导致错误的原因,我想了解原因。
我正在使用JavaFX,Java 8和Ubuntu OS。我试图在这里使用获得说明的指南:https://developers.arcgis.com/java/latest/guide/display-a-scene.htm
不幸的是,我收到了一个我无法理解的错误。
Exception in thread "JavaFX Application Thread" java.lang.RuntimeException:Error code: 18
Error message: Internal error exception
Additional error message: star_draw,GL_VERTEX_SHADER:0:3(10): error: GLSL 1.50 is not supported. Supported versions are: 1.10, 1.20, 1.30, 1.00 ES, 3.00 ES, 3.10 ES, and 3.20 ES
我如何理解此错误以及问题所在,以便我可以开始对解决方案进行故障排除?
at com.esri.arcgisruntime.internal.mapping.view.RenderingContext.nativeDrawMap(Native Method)
这是我的glxinfo:
mark@marks-computer:~$ glxinfo | grep version
server glx version string: 1.4
client glx version string: 1.4
GLX version: 1.4
Max core profile version: 4.5
Max compat profile version: 3.0
Max GLES1 profile version: 1.1
Max GLES[23] profile version: 3.2
OpenGL core profile version string: 4.5 (Core Profile) Mesa 17.4.0-devel
OpenGL core profile shading language version string: 4.50
OpenGL version string: 3.0 Mesa 17.4.0-devel
OpenGL shading language version string: 1.30
OpenGL ES profile version string: OpenGL ES 3.2 Mesa 17.4.0-devel
OpenGL ES profile shading language version string: OpenGL ES GLSL ES 3.20
最后一行似乎表明我应该没问题?
答案 0 :(得分:0)
这是 Ubuntu 14.04 的已知问题。我添加了几种方法来尝试:
glxinfo 中的一行似乎可以解决所有问题:
OpenGL着色语言版本字符串: 1.30
您的OpenGL驱动程序仅支持GLSL版本 1.30 。
--use-gl=egl
可以作为临时解决方案。尝试所有这些内容,如果 none 成功运行,尝试联系开发者。
答案 1 :(得分:0)
您的应用程序正在尝试编译GLSL 1.50着色器。 GLSL版本1.50是在OpenGL 3.2中引入的,因此在版本低于GL 3.2的OpenGL上下文中尝试此操作并不能保证(并且通常不太可能)。您明确告知您GLSL 1.50不可用的错误消息。
由于您将Linux与Mesa 3D project中的开源驱动程序一起使用,因此您无法在此处执行任何操作。 Mesa只实现了现代OpenGL的核心配置文件,而不是兼容性配置文件。对于传统应用程序,mesa还支持GL 3.0(GLSL 1.30)之前的传统上下文。从输出中可以清楚地看出,您的应用程序确实使用了遗留上下文。
请注意,OpenGL规范明确声明兼容性配置文件支持是可选。根据规范,您的应用程序只是尝试在遗留上下文中使用GL 3.2+功能,只是已损坏。这仅适用于公开可选兼容性配置文件的驱动程序。唯一真正的解决方案是修复JavaFX要么使用核心配置文件上下文(这需要摆脱他们正在使用的所有已弃用的GL功能 - 而且这些内容现在已被弃用,因为十年!),或者将自己局限于GL 2.1并保留遗留上下文(在Linux上使用mesa,3.0也可以工作,但macx上的OSX在传统模式下最多只能做2.1)。
你可能能够通过在3.0上下文中将环境变量MESA_GLSL_VERSION_OVERRIDE=150
设置为伪造支持GLSL 1.50来解决您的问题,但这只是一个可能引入的糟糕黑客它所拥有的各种问题......