• Nenhum resultado encontrado

Introdução à Opengl com Java

N/A
N/A
Protected

Academic year: 2022

Share "Introdução à Opengl com Java"

Copied!
23
0
0

Texto

(1)

Introdução à Opengl com Java

Introdução à Opengl com Java

SCC0250 - Computação Gráca

Prof. Fernando V. Paulovich

http://www.icmc.usp.br/~paulovic paulovic@icmc.usp.br

Instituto de Ciências Matemáticas e de Computação (ICMC) Universidade de São Paulo (USP)

3 de março de 2013

(2)

Sumário

1 Instalando

2 OpenGL

2 / 23

(3)

Introdução à Opengl com Java Instalando

Sumário

1 Instalando

2 OpenGL

(4)

Instalando Plug-in Netbeans

Instale o Netbeans http://netbeans.org/

Faça download e instale o plug-in NetBeans OpenGL Pack http://plugins.netbeans.org/PluginPortal/faces/

PluginDetailPage.jsp;jsessionid=

92dc9baf4c97e0db77c57dbc8a32?pluginid=3260 Ferramentas -> Plug-ins -> Baixados -> Adicionar plug-ins

Desabilitar a instalação de GLSL editor e GLSL Compiler editor support

4 / 23

(5)

Introdução à Opengl com Java Instalando

Utilizando Bibliotecas

Outra forma de usar a JOGL é incluindo as bibliotecas necessárias

gluegen-rt.jar jogl.jar

E deixar visível as DLLs correspondentes (o mesmo vale para Linux)

glu32.dll gluegen-rt.dll glut32.dll jogl.dll opengl32.dll jogl_awt.dll jogl_cg.dll

(6)

Sumário

1 Instalando

2 OpenGL

6 / 23

(7)

Introdução à Opengl com Java OpenGL

Introdução

Application Programming Interface (API)

Coleção de rotinas que o programador pode chamar

Modelo de como estas rotinas operam em conjunto para gerar grácos

Programador enxerga apenas a interface

Não precisa lidar com aspectos especícos do hardware ou idiossincracias de software no sistema gráco residente (independente do dispositivo)

Oferece suporte para gerar e exibir cenas 3D complexas, e também para grácos 2D simples

(8)

OpenGL

Ambiente p/ escrever e executar programas grácos Monitor (tela) + biblioteca de software para desenhar primitivas grácas na tela

API pode ser vista como uma caixa preta

Entradas: Chamadas a funções da biblioteca feitas pelo programa do usuário; Medidas fornecidas por dispositivos de entrada; etc

Saídas: Os grácos exibidos no monitor

Descrita em termos das funções que disponibiliza

8 / 23

(9)

Introdução à Opengl com Java OpenGL

API OpenGL

Programa

Em geral, trabalha com um sistema de janelas (window system)

Inicializações: modo de exibição (display mode), janela de desenho e sistema de coordenadas de referência (associado à janela)

API oferece centenas de funções...

Diferentes funcionalidades Funções primitivas: o que Funções de atributos: como ...

(10)

Programação Dirigida a Eventos

Direcionada a eventos (event-driven)

programa responde a eventos: clique do mouse, tecla pressionada, redimensionamento da janela

10 / 23

(11)

Introdução à Opengl com Java OpenGL

Estados do OpenGL

OpenGL rastreia diversas variáveis de estado

Tamanho atual de um ponto, cor de fundo da janela, cor do desenho, etc.

O valor corrente permanece ativo até que seja alterado Tamanho de ponto: glPointSize(3.0)

Cor de desenho: glColor3f(red, green, blue) Cor de fundo: glClearColor(red, green, blue, alpha)

Limpar janela: glClear(GL_COLOR_BUFFER_BIT) os bits do color buer serão modicados para a cor de fundo

(12)

Programando

OpenGL é utilizada junto com outras bibliotecas auxiliares OpenGL Utility (GLU): denir a visão, matrizes de projeção, aproximação poligonal, desenho de superfícies, etc

OpenGL Utility Toolkit (GLUT): dene o sistema de janelas, e outras funções de desenho de superfície

12 / 23

(13)

Introdução à Opengl com Java OpenGL

Programando

Implementar a interface GLEventListener, responsável pelo desenho e outras funções

1 public classRendererimplementsGLEventListener { 2

3 public voidinit(GLAutoDrawable drawable) { 4 //inicializar o sistema

5 }

6

7 public voiddisplay(GLAutoDrawable drawable) { 8 //função de desenho

9 }

10

11 public voidreshape(GLAutoDrawable drawable,intx,int y,int←- width,int height) {

12 //função de redimensionamento

13 }

14

15 public voiddisplayChanged(GLAutoDrawable drawable,boolean- modeChanged,booleandeviceChanged) {

16 //função para mudança no display }

(14)

Programando

Registrar o ouvinte em um painel e adicioná-lo em uma janela

1 //acelera o rendering

2 GLCapabilities caps =newGLCapabilities();

3 caps.setDoubleBuffered(true);

4 caps.setHardwareAccelerated(true);

5

6 //cria o painel e adiciona um ouvinte GLEventListener

7 GLCanvas canvas =new GLCanvas(caps);

8 canvas.addGLEventListener(new Renderer());

9

10 //cria uma janela e adiciona o painel

11 JFrame frame =new JFrame("Aplicação JOGL Simples");

12 frame.getContentPane().add(canvas);

13 frame.setSize(400, 300);

14 frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

15

16 //inicializa o sistema e chama display() a 60 fps

17 Animator animator =new FPSAnimator(canvas, 60);

18 frame.setLocationRelativeTo(null);

19 frame.setVisible(true);

20 animator.start();

14 / 23

(15)

Introdução à Opengl com Java OpenGL

Programando

Dene o método de inicialização

1 public void init(GLAutoDrawable drawable) {

2 GL gl = drawable.getGL();

3

4 gl.glClearColor(0.0f, 0.0f, 0.0f, 0.0f); //dene cor de fundo

5 gl.glMatrixMode(GL.GL_PROJECTION); //carrega a matriz de projeção

6 gl.glLoadIdentity(); //lê a matriz identidade

7

8 GLU glu = new GLU();

9 glu.gluOrtho2D(0.0, 200.0, 0.0, 150.0); //dene projeção ortogonal 2D

10 }

(16)

Programando

O pipeline da OpenGL é sempre 3D, mas é possível criar desenhos 2D, denindo

glMatrixMode(GL_PROJECTION) gluOrtho2D(0.0, 200.0, 0.0, 150.0)

16 / 23

(17)

Introdução à Opengl com Java OpenGL

Programando

OpenGL permite desenhar grácos de modo independente do dispositivo

É possível especicar o Sistema de Coordenadas do Mundo (ponto utuante) onde os objetos são denidos

Os elementos são traçados no Sistema de Coordenadas do Dispositivo, ou Sistema de Coordenadas da Tela (inteiro)

O mapeamento entre esses sistemas de coordenadas é feito de forma transparente pela OpenGL

(18)

Programando

Dene o método de desenho

1 public void display(GLAutoDrawable drawable) {

2 GL gl = drawable.getGL();

3

4 gl.glClear(GL.GL_COLOR_BUFFER_BIT); //desenha o fundo (limpa a janela)

5 gl.glColor3f(1.0f, 0.0f, 0.0f); //altera o atributo de cor

6

7 gl.glBegin(GL.GL_LINES); //desenha uma linha

8 gl.glVertex2i(10, 10);

9 gl.glVertex2i(190, 140);

10 gl.glEnd();

11

12 gl.glFlush(); //processa as rotinas OpenGL o mais rápido possível

13 }

18 / 23

(19)

Introdução à Opengl com Java OpenGL

Primitivas

Primitivas básicas

Pontos, linhas, poli-linhas, polígonos (GL_POINTS, GL_LINES, GL_POLYGON, etc.)

Para descrever um objeto, uma lista de vértices é informada

1 gl.glBegin(GL_POINTS);

2 gl.glVertex2i(100, 50); // desenha 3 pontos

3 gl.glVertex2i(100, 130);

4 gl.glVertex2i(150, 130);

5 gl.glEnd();

(20)

Primitivas

20 / 23

(21)

Introdução à Opengl com Java OpenGL

Outras Primitivas: Poli-linhas e Polígonos

Poli-linha: GL_LINE_STRIP, GL_LINE_LOOP seqüência de linhas conectadas... fechada ou não Outras primitivas

GL_TRIANGLES GL_QUADS

GL_TRIANGLE_STRIP GL_TRIANGLE_FAN GL_QUAD_STRIP

(22)

Outras Primitivas: Poli-linhas e Polígonos

22 / 23

(23)

Introdução à Opengl com Java OpenGL

Exercício

Fazer um programa que desenhe alguma imagem 2D Esse programa deve possibilitar fazer zoom e pan

Referências

Documentos relacionados

intermedia (Yi) strains isolated from humans (one), animals (two) and environment (64) according to their source of isolation, origin and year of reception.. a

In this booklet you will find samples of exercises, quizzes and an answer key from the Conversational Portuguese Series 2 Workbook by Maria Oliveira.. You will also find the

obtidas em cada base, também são registradas, elas são utilizadas para dar volume ao sistema subterrâneo.. Trabalhos sobre levantamentos topográficos em cavernas [1,2] discutem

 os diâmetros e os comprimentos com maior número de fibras foram os intervalos de menor tamanho supondo que na natureza é comum encontrar fibras evidenciando que fibras mais

Entretanto, se tomar o Mytfor (cloridrato de metformina) juntamente com outros medicamentos para o tratamento da diabetes que possam causar hipoglicemia (tais como

Vacinação - Brasil, cidade do Rio de Janeiro e Maré Testagem - Dados do Bem Telemedicina SAS Brasil Programa Isolamento Seguro - SAS Brasil + Redes da Maré Gabi Lin o/ Con

11.1. Respeitados os prazos de carência, as exclusões estabelecidas nestas Condições Ge- rais, este Contrato assegurará ao Beneficiário Titular e aos seus Dependentes a cobertura das

A população frequentemente não aprova o recolhimento de animais e as instalações públicas para alojamento e, uma vez que o incentivo à propriedade, posse ou guarda responsável é