Slide 1 - IME-USP

Propaganda
Java Bindings for OpenGL
JOGL
An Overview
Prof. Reginaldo do Prado
Universidade Guarulhos - UnG
Objetivo
1. Configurar o ambiente de execução para
o uso do JOGL
2. Criar imagens bi e tridimensionais
utilizando OpenGL
3. Criar animações
2
0. Configurar
3
• 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/
4
1. Preparando o terreno
5
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...
6
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/
7
E como funciona?
pipeline OpenGL
8
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
9
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 )
10
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
11
2. Criar imagens
12
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
13
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
14
3. Animação
15
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
16
... 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
17
Imagem 3D
• Pode ser obtida como uma concatenação
de primitivas 2D
• Requerem o uso do sistema cartesiano
tridimensional
EspacoCartesiano.java &
Lesson05.java
18
...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
19
Muito obrigado
contato:
[email protected]
[email protected]
20
Download