Pergunta

Eu estou trabalhando em um aplicativo do globo 3D escrito em java usando Java3D para a prestação. Eu tenho um Windows Installer que basicamente copia arquivos de um instantâneo de desenvolvimento para o diretório arquivos de programas. Ele funciona muito bem a partir do instantâneo devel, mas quando executado depois de uma instalação que faz isso:

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)  

Eu comparei as todas as bibliotecas e frascos nas listas de desenvolvimento e os arquivos são todos exatamente o mesmo e nenhum deles está faltando. É a coisa mais estranha. Eu atualizei meus drivers gráficos (embora eles são claramente suficientes desde que as coisas correr bem a partir de um snapshot devel). Eu escrevi um aplicativo java3d simples que é capaz de fazer uma Canvas3D e adicionar um ColorCube a ele. Ele funciona muito bem. P. S. nossa snapshot de desenvolvimento inclui todas as DLLs, potes, e as coisas JRE fugir. Nós registramos todas as versões de bibliotecas e JVM e eles são exatamente o mesmo em logs gerados a partir do instantâneo devel e o aplicativo instalado. Corremos usando um caminho explícito para java.exe (.. \ jre \ bin \ java.exe), de modo a variável PATH não está em jogo.

Eu estou procurando idéias para depurar isso. Eu gostaria de escrever um aplicativo java simples que imprime todos os atributos do GL, especialmente GL_VERSION, para tentar demonstrar alguma diferença quantificável entre os dois set ups. Os docs JAVA3D não cobrem isso, e todas as pesquisas na internet para problemas GL_VERSION apenas dizer-lhe para atualizar os drivers.

Oh, eu tenho Nvidia Quadro FX 3800 cartões. Dois deles na verdade.

Em resumo ...
Q1: Como você imprimir GL_VERSION para sua aplicação java3d
Q2:? O que diabos está acontecendo

Foi útil?

Solução

Depois de digitação sobre minhas duas placas gráficas, comecei a pensar sobre como eu recentemente trocou de usar quatro monitores para apenas três, então eu poderia usar o quarto para o meu novo laptop. Transforma o nosso o nosso pedido tinha salvo algumas propriedades na minha pasta de casa que teve a nossa candidatura, começando-se na quarta monitor, agora inexistente. Parece que java3d não encontrou opengl suficientemente apoiada no espaço da tela inexistente, e jogou a exceção acima. Iniciar a aplicação com coordenadas de tela válidos resolveu o problema.

Outras dicas

para verificar queryProperties uso GL_VERSION () em seu Canvas3D.

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

Mas este erro não exibe a versão exata de OpenGL, usando o código acima você provavelmente vai ver que você está GL_VERSION não 1.1 é como no stacktrace (eu tinha mesmo erro com OpenGL 1.5 instalado).

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top