我正在开发一个用java编写的3d globe应用程序,使用java3d进行渲染。我有一个windows安装程序,它基本上是将文件从开发快照复制到程序文件目录中。它在devel快照中运行得很好,但在安装后运行时会执行以下操作:
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) 我比较了开发目录中的所有库和jars,所有文件都是完全相同的,没有一个丢失。这是最奇怪的事情。我已经更新了我的图形驱动程序(尽管它们显然足够了,因为从devel快照来看运行得很好)。我已经写了一个简单的java3d应用程序,它能够制作Canvas3D并向其添加ColorCube。它运行得很好。附注:我们的开发快照包括所有运行的all、jar和jre。我们记录所有的库和jvm版本,它们在从devel快照和安装的应用程序生成的日志中是完全相同的。我们使用显式的java.exe (..\jre\bin\java.exe)路径运行,因此path变量不起作用。
我正在寻找调试这个的想法。我想写一个简单的java应用程序,打印所有的GL属性,特别是GL_VERSION,来演示两种设置之间的一些可量化的差异。java3d文档并没有涉及到这一点,所有关于GL_VERSION问题的互联网搜索都会告诉你更新你的驱动程序。
哦,我有Nvidia Quadro FX 3800卡。实际上有两个。
总之..。
Q1:如何为您的java3d应用程序打印GL_VERSION?
Q2:到底是怎么回事?
发布于 2009-12-02 02:10:04
在输入了我的两块显卡后,我开始思考我最近是如何从使用四个显示器切换到只使用三个显示器的,这样我就可以在我的新笔记本电脑上使用第四个显示器。我们的应用程序在我的主文件夹中保存了一些属性,这些属性使我们的应用程序在第四个监视器上启动,现在已经不存在了。似乎java3d没有发现opengl在不存在的屏幕空间中得到了足够的支持,并抛出了上面的异常。使用有效的屏幕坐标启动应用程序解决了这个问题。
发布于 2012-03-02 21:29:29
要检查GL_VERSION,请在Canvas3D上使用queryProperties()方法。
String glVersion = (String)getCanvas3D().queryProperties().get("native.version");但是这个错误没有显示OpenGL的准确版本,使用上面的代码你可能会看到你的GL_VERSION不是1.1,就像在堆栈跟踪中一样(我在安装OpenGL 1.5的时候也有同样的错误)。
https://stackoverflow.com/questions/1827514
复制相似问题