我正在使用 java3d 进行渲染,使用 java 编写的 3d 地球应用程序。我有一个 Windows 安装程序,它基本上将文件从开发快照复制到程序文件目录。它在开发快照中运行良好,但是在安装后运行时它会这样做:
Java 3D ERROR : OpenGL 1.2 or better is required (GL_VERSION=1.1)
javax.media.j3d.IllegalRenderingStateException: GL_VERSION
at javax.media.j3d.NativePipeline.createNewContext(Native Method)
at javax.media.j3d.NativePipeline.createNewContext(NativePipeline.java:2736)
at javax.media.j3d.Canvas3D.createNewContext(Canvas3D.java:4895)
at javax.media.j3d.Canvas3D.createNewContext(Canvas3D.java:2421)
at javax.media.j3d.Renderer.doWork(Renderer.java:895)
at javax.media.j3d.J3dThread.run(J3dThread.java:256)
我已经比较了开发目录中的所有库和 jar,文件都完全相同,没有一个丢失。这是最奇怪的事情。我已经更新了我的图形驱动程序(尽管它们显然已经足够了,因为从开发快照中运行良好)。我编写了一个简单的 java3d 应用程序,它能够制作 Canvas3D 并向其添加 ColorCube。它运行良好。Ps 我们的开发快照包括所有的 dll、jar 和运行的 jre。我们记录所有库和 jvm 版本,它们在从开发快照和已安装应用程序生成的日志中完全相同。我们使用 java.exe 的显式路径 (..\jre\bin\java.exe) 运行,因此 PATH 变量不起作用。
我正在寻找调试这个的想法。我想编写一个简单的 java 应用程序来打印所有 GL 属性,尤其是 GL_VERSION,以尝试展示两种设置之间的一些可量化的差异。java3d 文档没有涵盖这一点,所有互联网搜索 GL_VERSION 问题只是告诉您更新驱动程序。
哦,我有 Nvidia Quadro FX 3800 卡。实际上有两个。
总之...
Q1:您如何为您的 java3d 应用程序打印 GL_VERSION?
Q2:这到底是怎么回事?