2009-12-01 56 views
2

我正在使用java3d编写的用java编写的3d globe应用程序进行渲染。我有一个Windows安装程序,基本上将文件从开发快照复制到程序文件目录。它运行从devel的快照很好,但后运行安装时,它这样做:帮助在Java3d应用程序中调试GL_VERSION错误

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) 

我比较了发展目录和文件的所有图书馆和罐子都是完全一样的,并没有一个是失踪。这是最奇怪的事情。我已经更新了我的图形驱动程序(尽管它们显然是足够的,因为从开发快照中运行得很好)。我已经写了一个简单的java3d应用程序,它可以制作一个Canvas3D并向它添加一个ColorCube。它运行良好。附:我们的开发快照包括所有的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?第二季度:究竟是怎么回事?

回答

0

输入关于我的两个图形卡后,我开始思考我最近如何从使用四个显示器切换到三个,所以我可以使用第四个用于我的新笔记本电脑。打开我们的应用程序已保存我的家庭文件夹中的一些属性,我们的应用程序启动了第四个,现在不存在的监视器。看起来,java3d没有在不存在的屏幕空间中找到足够的opengl支持,并抛出了上述异常。用有效的屏幕坐标启动应用程序解决了问题。

0

检查GL_VERSION在Canvas3D上使用queryProperties()方法。

String glVersion = (String)getCanvas3D().queryProperties().get("native.version"); 

但这个错误不会显示的OpenGL准确的版本,使用上面的代码,你可能会看到,你是GL_VERSION不是1.1像堆栈跟踪(我有同样的错误使用OpenGL 1.5安装)。