Я работаю над приложением 3d глобус, написанным на Java, используя 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)
Я сравнил все библиотеки и банки в каталогах разработки, и все файлы абсолютно одинаковы, и ни одна из них отсутствует. Это самая странная вещь. Я обновил свои графические драйверы (хотя они явно достаточны, так как все отлично работает из моментального снимка уровня). Я написал простое приложение java3d, которое может создать Canvas3D и добавить к нему ColorCube. Работает нормально. Постскриптум наш снимок разработки включает в себя все dll, jar-файлы и jre-файлы, из которых запускаются. Мы регистрируем все версии библиотеки и jvm, и они абсолютно одинаковы в журналах, сгенерированных из снимка devel и установленного приложения. Мы запускаем, используя явный путь к java.exe (.. \ jre \ bin \ java.exe), поэтому переменная PATH не работает.
Я ищу идеи для отладки этого. Я хотел бы написать простое Java-приложение, которое печатает все атрибуты GL, особенно GL_VERSION, чтобы попытаться продемонстрировать некоторую количественную разницу между этими двумя настройками. Документы java3d не покрывают это, и все интернет-поиски проблем GL_VERSION просто говорят вам обновить ваши драйверы.
О, у меня есть карты Nvidia Quadro FX 3800. Двое из них на самом деле.
В итоге ...
Q1: Как вы печатаете GL_VERSION для вашего приложения java3d?
Q2: Что, черт возьми, происходит?