Swing em OpenGL

8 respostas
ubberweiss

Olá

É o seguinte: estou fazendo um game em java com OpenGL. Estava tudo ocorrendo bem até que precisei da GUI. Pensei então em usar swing. Na minha mente seria apenas conseguir fazer o swing rodar em OpenGL que funcionava. Funcionou. Mas um problema apareceu: performance. Com uma tabela de duas colunas e 10 linhas o FPS (com vsync) caiu de 75 pra 14! Pior ainda quando redimensiono uma janela (JInternalFrame): a utilização do processador vai a 100% num dual core! E com tudo parado, de vez em quando o processador chega a uns picos de 35% a 50%.

Sei que o swing é otimizado para eventos de invalidação de área e o OpenGL renderiza tudo a cada frame. Porém, mesmo cacheando os valores, ainda tenho performances parecidas. O gargalo parece estar no sistema de eventos AWT… mas sempre que procuro algo sobre, encontro pessoas ou falando super bem ou super mal.

Não queria fazer um sistema de GUI do zero… dá muito trabalho e não tenho muito tempo… gostaria de saber se alguém conhece algum artigo que me ajude ou já enfrentou algum problema parecido.

Agradeço desde já!
Até mais!

8 Respostas

T

O que ocorre se você passa como parãmetro para o java isto aqui:

-Dsun.java2d.opengl=true

?

(Exemplo:

java -Dsun.java2d.opengl=true -Xmx256m -classpath bla.jar ble.bli.Blo

)

ubberweiss

Testei várias vezes mas parece que a performance foi basicamente a mesma.
Em alguns momentos teve uma melhora de 2~5%, mas em outros piorou 4~9%.

Ainda estou na busca… ainda não encontrei ninguém na internet tentou fazer isso e teve resultados satisfatórios.
Ah! Já tentei usar o JAXX, FengGUI e o Agile2D, mas nenhum deu muito certo.

F

Bom não sei se você ta querendo fazer tudo na mão por questões de aprendizado

Eu recomendo usar uma Engine pra construir games, busque no google por “Java Engine” que vem um monte
uma que eu baixei (ainda não tive tempo de fuçar) mas gostei dos exemplos é a
www.jtcp.net

Marky.Vasconcelos

Mas essa GUI tem que ser necessariamente em Swing?

Veja o artigo sobre OpenGl que fala sobre HUDs

P

Procura sobre a JCPT, uma engine de jogos em Java.

Usei aqui pra uns testes e achei ela boa.

Marky.Vasconcelos

Mais precisamente nesse artigo: http://vinigodoy.wordpress.com/2008/02/10/sistemas-de-coordenadas/

ViniGodoy

Um ótimo engine de games para java é o JMonkeyEngine:
http://www.jmonkeyengine.com

E, realmente, não presta misturar Swing com OpenGL.
Ele não tem qualquer tipo de premissa ou compromisso com performance ou manutenção de framerates.

ViniGodoy

Um ótimo engine de games para java é o JMonkeyEngine:
http://www.jmonkeyengine.com

E, realmente, não presta misturar Swing com OpenGL.
Ele não tem qualquer tipo de premissa ou compromisso com performance ou manutenção de framerates.

Criado 5 de junho de 2008
Ultima resposta 10 de jul. de 2008
Respostas 8
Participantes 6