A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Java Bindings for OpenGL JOGL An Overview

Apresentações semelhantes


Apresentação em tema: "Java Bindings for OpenGL JOGL An Overview"— Transcrição da apresentação:

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:


Carregar ppt "Java Bindings for OpenGL JOGL An Overview"

Apresentações semelhantes


Anúncios Google