Carregar apresentação
A apresentação está carregando. Por favor, espere
1
Java Bindings for OpenGL JOGL An Overview
Prof. Reginaldo do Prado Universidade Guarulhos - UnG
2
Objetivo Configurar o ambiente de execução para o uso do JOGL
Criar imagens bi e tridimensionais utilizando OpenGL Criar animações Ao final dessa apresentação o participante deverá ser capaz de... Essa apresentação se baseia nas cinco primeiras aulas do tutorial que se encontra em: ... Ou seja, há muuuuito mais a ser visto!
3
0. Configurar
4
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: Supondo que foi baixado e descompactado o pacote que contém os arquivos citados no diretório de sua preferência, ao qual me refiro apenas como JOGL_HOME. É recomendado que esse diretório NÃO seja o mesmo utilizado por outras classes Java para que não haja a possibilidade de conflitos de nomes. A versão atual para Windows (em 03/05/07) é jogl pre windows-i586.zip Caso você esteja usando a versão 3.1 ou abaixo, use os mesmos procedimentos para os arquivos.jar e Importe os dll’s para a raiz do projeto.
5
1. Preparando o terreno
6
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...
7
OpenGL não é... Uma linguagem de programação
Um programa para arte computacional Um ray-tracer Se quer fazer arte, visite
8
E como funciona? pipeline OpenGL
Quando uma aplicação faz chamadas às funções API OpenGL, os comandos são colocados em um buffer de comandos. Este buffer é preenchido com comandos, vértices, dados de textura, etc. Quando este buffer é "esvaziado", os comandos e dados são passados para o próximo estágio. Após a etapa de aplicação das transformações geométricas e da iluminação, é feita a rasterização, isto é, é gerada a imagem a partir dos dados geométricos, de cor e textura. A imagem final, então, é colocada no frame buffer, que é a memória do dispositivo gráfico (possivelmente o monitor).
9
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
10
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 ) Callback: código executável que é passado como parâmetro para outro código geralmente de nível mais baixo.
11
Lesson01.java, FrameGL & projection.exe
Criar uma janela Criar um Frame ou JFrame Adicionar o GLCanvas ou GLJPanel Fazer a implementação dos métodos da interface GLEventListener Nate Robins’ web site: Note que até o Java 6, não existia suporte para aceleração gráfica do OpenGL para aplicações 100% Swing... Por esse motivo preferimos usar o GLCanvas, que será compatível com versões anteriores e mais rápido. Lesson01.java, FrameGL & projection.exe
12
2. Criar imagens
13
PrimitivaI.java & shapes.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
14
Desenho de primitivas Triângulos Quadriláteros Polígonos em geral
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
15
3. Animação
16
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
17
PrimitivaII.java, Lesson04.java & transformation.exe
... 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
18
EspacoCartesiano.java & Lesson05.java
Imagem 3D Pode ser obtida como uma concatenação de primitivas 2D Requerem o uso do sistema cartesiano tridimensional Observar o uso de interação de mouse com o objeto Drawable /////////////// solução do exercício /////////////////////////////////// /* gl.glBegin(GL.GL_QUADS); gl.glColor3f(0.0f, 0.0f, 1.0f); gl.glVertex3f(1.0f, -1.0f, 1.0f); gl.glColor3f(0.0f, 1.0f, 0.0f); gl.glVertex3f(-1.0f, -1.0f, 1.0f); gl.glVertex3f(-1.0f, -1.0f, -1.0f); gl.glVertex3f(1.0f, -1.0f, -1.0f); gl.glEnd();*/ EspacoCartesiano.java & Lesson05.java
19
...e para saber mais? Dê uma olhada em: http://nehe.gamedev.net/
20
Muito obrigado contato:
Apresentações semelhantes
© 2024 SlidePlayer.com.br Inc.
All rights reserved.