200 likes | 323 Views
Java Bindings for OpenGL JOGL An Overview. Prof. Reginaldo do Prado Universidade Guarulhos - UnG. Objetivo. Configurar o ambiente de execução para o uso do JOGL Criar imagens bi e tridimensionais utilizando OpenGL Criar animações. 0. Configurar. Windows
E N D
Java Bindings for OpenGLJOGLAn Overview Prof. Reginaldo do Prado Universidade Guarulhos - UnG
Objetivo • Configurar o ambiente de execução para o uso do JOGL • Criar imagens bi e tridimensionais utilizando OpenGL • Criar animações
Windows • Incluir no CLASSPATH o caminho para jogl.jar e gluegen-rt.jar • Incluir no PATH o caminho para JOGL_HOME/lib • Eclipse • Deve ser feita a inclusão dos arquivos acima para cada projeto • Siga as instruções de: http://linus.uac.pt/~cogumbreiro/gfx/
O que é OpenGL... • API para programação gráfica • Biblioteca de rotinas gráficas e de modelagem • Interface para hardware gráfico • Produz imagens de alta qualidade, mas...
OpenGL não é... • Uma linguagem de programação • Um programa para arte computacional • Um ray-tracer • Se quer fazer arte, visite http://www.povray.org/
E como funciona? pipeline OpenGL
O que é JOGL... • Pacote que permite o acesso de Java às rotinas do OpenGL • Exceção às chamadas relacionadas às janelas • Mantém a portabilidade do OpenGL • Inconsistente com a POO pela natureza procedural do OpenGL
Como usá-los juntos • Primeiro: criar um GLCanvas ou GLJPanel • Depois registrá-lo a um GLEventListener • O listener deve implementar os métodos • init(GLDrawable drawable ) • reshape(GLDrawable drawable, int i, int x, int width, int height ) • display(GLDrawable drawable ) • displayChanged(GLDrawable drawable, boolean modeChanged, boolean deviceChanged )
Criar uma janela • Criar um Frame ou JFrame • Adicionar o GLCanvas ou GLJPanel • Fazer a implementação dos métodos da interface GLEventListener Lesson01.java, FrameGL & projection.exe
Desenho de primitivas • Objetos criados com OpenGL são apenas combinações de primitivas • glBegin(tipo-primitiva) <vértices> glEnd() • Pontos • glBegin(GL_POINTS) • Segmentos • glBegin(GL_LINES) • glBegin(GL_LINE_STRIP) • glBegin(GL_LINE_LOOP) PrimitivaI.java & shapes.exe
Desenho de primitivas • Triângulos • glBegin(GL_TRIANGLES) • glBegin(GL_TRIANGLE_STRIP) • glBegin(GL_TRIANGLE_FAN) • Quadriláteros • glBegin(GL_QUADS) • glBegin(GL_QUADS_STRIP) • Polígonos em geral • glBegin(GL_POLYGON) Lesson03.java
Fazer animação é: • Fazer vários desenhos com pequenas diferenças • Fazer esses desenhos em um curto espaço de tempo • Fazer a troca dos desenhos antes que o usuário perceba
... e o que é necessário? • Uso de variáveis de controle • Atualizar essas variáveis a cada iteração do loop de animação... • ... ou atualizá-las a cada interação do usuário. PrimitivaII.java, Lesson04.java & transformation.exe
Imagem 3D • Pode ser obtida como uma concatenação de primitivas 2D • Requerem o uso do sistema cartesiano tridimensional EspacoCartesiano.java & Lesson05.java
...e para saber mais? • Dê uma olhada em: • http://nehe.gamedev.net/ • http://today.java.net/pub/a/today/2003/09/11/jogl2d.html • http://www.inf.pucrs.br/~manssour/OpenGL/Tutorial.html • http://www.inf.pucrs.br/~pinho/CG/Aulas/OpenGL/OpenGL.html • http://pepijn.fab4.be/software/nehe-java-ports
Muito obrigado contato: rprado@ime.usp.br rprado@ung.br