Pregunta

Estoy trabajando en una aplicación globo 3d escrito en Java usando Java 3D para la prestación. Tengo un instalador de ventanas que básicamente copia archivos de una instantánea de desarrollo para el programa de archivos de directorio. Funciona muy bien de la instantánea devel, pero cuando se ejecuta después de una instalarlo hace esto:

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)  

He comparado las bibliotecas y todos los frascos en los directorios de desarrollo y los archivos son todos exactamente lo mismo y no falta ninguno. Es la cosa más rara. He puesto al día los conductores de mis gráficos (aunque son claramente suficientes ya que las cosas funcionan bien desde una instantánea devel). He escrito una aplicación Java 3D simple que es capaz de hacer una Canvas3D y añadir un ColorCube a ella. Funciona muy bien. PD. nuestra instantánea desarrollo incluye todos los archivos DLL, tarros, y las cosas van de JRE. Registramos todas las versiones de la biblioteca y de JVM y ellos son exactamente los mismos en los registros generados a partir de la instantánea devel y la aplicación instalada. Llevamos a cabo utilizando una ruta explícita a JAVA.EXE (.. \ jre \ bin \ java.exe), por lo que la variable PATH no está en juego.

Estoy buscando ideas para depurar este. Me gustaría escribir una aplicación de java simple que imprime todos los atributos GL, especialmente GL_VERSION, para tratar de demostrar alguna diferencia cuantificable entre los dos montajes. Los documentos de Java 3D que no cubren, y todas las búsquedas en Internet para los problemas GL_VERSION simplemente dicen que para actualizar los controladores.

Oh, tengo Nvidia Quadro FX 3800 tarjetas. Dos de ellos en realidad.

En resumen ...
P1: ¿Cómo se imprime GL_VERSION para su aplicación java3d
? P2: ¿Qué diablos está pasando

¿Fue útil?

Solución

Después de escribir sobre mis dos tarjetas gráficas, empecé a pensar acerca de cómo Recientemente he pasado el uso de cuatro monitores a sólo tres, así que podía usar el cuarto para mi nuevo ordenador portátil. Resulta nuestra nuestra solicitud había salvado algunas propiedades en mi carpeta de inicio que tenía nuestra solicitud de puesta en marcha en el cuarto monitor, ahora inexistente. Parece que java3d No se encontró OpenGL suficientemente apoyado en el espacio de la pantalla inexistente, y lanzó la excepción anteriormente. Inicio de la aplicación con las coordenadas de pantalla válidos resuelto el problema.

Otros consejos

para verificar el uso queryProperties GL_VERSION () en su Canvas3D.

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

Pero este error no se muestra la versión exacta de OpenGL, utilizando el código anterior es probable que vea que eres GL_VERSION no es 1.1 como en el StackTrace (que tenía el mismo error con OpenGL 1.5 instalado).

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top