Introdu o ao OpenGL - Unisinosprofessor.unisinos.br/ltonietto/jed/pgr/OpenGL_intro.pdfIntrodu o Como...

46
Introdução ao OpenGL Leandro Tonietto Processamento Gráfico / Computação Gráfica Jogos Digitais [email protected] http://www.inf.unisinos.br/~ltonietto Mar-2008 Alguns slides são provenientes da apresentação do professor Christian Hofsetz quinta-feira, 10 de março de 2011

Transcript of Introdu o ao OpenGL - Unisinosprofessor.unisinos.br/ltonietto/jed/pgr/OpenGL_intro.pdfIntrodu o Como...

Page 1: Introdu o ao OpenGL - Unisinosprofessor.unisinos.br/ltonietto/jed/pgr/OpenGL_intro.pdfIntrodu o Como funciona a OpenGL API Procedural. Programador invoca comandos OpenGL para compor

Introdução ao OpenGL

Leandro ToniettoProcessamento Gráfico / Computação GráficaJogos [email protected]://www.inf.unisinos.br/~ltoniettoMar-2008

Alguns slides são provenientes da apresentação do professor Christian Hofsetz

quinta-feira, 10 de março de 2011

Page 2: Introdu o ao OpenGL - Unisinosprofessor.unisinos.br/ltonietto/jed/pgr/OpenGL_intro.pdfIntrodu o Como funciona a OpenGL API Procedural. Programador invoca comandos OpenGL para compor

Sumário

IntroduçãoProgramando com OpenGLExemplos

quinta-feira, 10 de março de 2011

Page 3: Introdu o ao OpenGL - Unisinosprofessor.unisinos.br/ltonietto/jed/pgr/OpenGL_intro.pdfIntrodu o Como funciona a OpenGL API Procedural. Programador invoca comandos OpenGL para compor

Introdução

O que é OpenGL? [1]Open Graphics LibraryInterface de software para hardware gráfico.É uma biblioteca de modelagem e gráficos 3D, altamente portável e muito rápida.

Independente de SO e de hardware.

Muito mais rápido do que implementação puramente em software, como: motores de gráficos ou software de ray-tracing.

quinta-feira, 10 de março de 2011

Page 4: Introdu o ao OpenGL - Unisinosprofessor.unisinos.br/ltonietto/jed/pgr/OpenGL_intro.pdfIntrodu o Como funciona a OpenGL API Procedural. Programador invoca comandos OpenGL para compor

Introdução

Inicio:Biblioteca gráfica desenvolvida para rodar aplicações gráficas sobre o hardware proprietário da Silicon Graphis Inc. (SGI).Primeira versão foi o IRIS GL, biblioteca gráfica das estações IRIS Graphics da SGI.

Hardware que provia transformações de matrizes com altíssima performance.

OpenGL surge da decisão de portar a IRIS GL para um padrão aberto, para suportar outros fabricantes de dispositivos gráficos, outras plataformas de hardware e outros sistemas operacionais.

quinta-feira, 10 de março de 2011

Page 5: Introdu o ao OpenGL - Unisinosprofessor.unisinos.br/ltonietto/jed/pgr/OpenGL_intro.pdfIntrodu o Como funciona a OpenGL API Procedural. Programador invoca comandos OpenGL para compor

Introdução

OpenGL ARB:API aberta não pode ser de propriedade de uma empresa apenas.Surge então o OpenGL Architecture Review Board (ARB)Consórcio, originalmente, formado por SGI, Digital Equipament Corporation, IBM, Intel e Microsoft. Outras empresas fazem parte do consórcio, como: SUN, nVIDIA, ATI, ...01/07/1992 sai a primeira versão da especificação da OpenGL.A partir de 2006 SGI transfere o controle sobre o padrão OpenGL para o grupo de trabalho The Khronos Group (www.khronos.org). Atualmente, este grupo promove o OpenGL e outros padrões como o OpenGL ES (para dispositivos móveis).OpenGL está na versão 4.0. Utilizaremos OpenGL na versão 2.0 da especificação.

quinta-feira, 10 de março de 2011

Page 6: Introdu o ao OpenGL - Unisinosprofessor.unisinos.br/ltonietto/jed/pgr/OpenGL_intro.pdfIntrodu o Como funciona a OpenGL API Procedural. Programador invoca comandos OpenGL para compor

Introdução

Software x hardware:SW tem muito menos performance que HW e alguns efeitos especiais podem ser proibitivos nas aplicações gráficas.SW pode executar em qualquer plataforma sem que o usuário necessite de hardware especial, no caso hardware gráfico.HW tem performance, porém maior custo.OpenGL interage com o hardware. Uma aplicação gráfica que use a OpenGL necessitará que o dispositivo gráfico (placa-de-vídeo) e o driver gráfico implementem a especificação da OpenGL.

quinta-feira, 10 de março de 2011

Page 7: Introdu o ao OpenGL - Unisinosprofessor.unisinos.br/ltonietto/jed/pgr/OpenGL_intro.pdfIntrodu o Como funciona a OpenGL API Procedural. Programador invoca comandos OpenGL para compor

Introdução

Como funciona a OpenGLAPI Procedural. Programador invoca comandos OpenGL para compor uma cena. OpenGL não renderiza uma cena descrita, ela deve ser “programada” em código.De forma mais básica, os objetos são desenhados com primitivas gráficas: pontos, linhas e polígonos em 3D. Permite visualização de objetos em qualquer ponto de um espaço 3D.OpenGL suporta também iluminação e sombreamento, mapeamento de textura, blending, transparência, animação e diversos outros efeitos especiais.Faz a conversão das primitivas para imagem – rasterização.Não possui funcionalidades para gerenciamento de janela, interação com o usuário ou acesso a arquivos (I/O). É necessário utilizar alguma biblioteca adicional (GLUT, SDL, ...)Também não existe nenhum formato de arquivo associado ao OpenGL para modelos ou ambientes virtuais. O programador deve fazer a carga e interpretação dos formatos de arquivos comuns e converter para primitivas gráficas.

quinta-feira, 10 de março de 2011

Page 8: Introdu o ao OpenGL - Unisinosprofessor.unisinos.br/ltonietto/jed/pgr/OpenGL_intro.pdfIntrodu o Como funciona a OpenGL API Procedural. Programador invoca comandos OpenGL para compor

Introdução

Como funciona a OpenGL

Cor do fog

Luz

Brilho

Matriz

Largurada linha

Framebuffer

Erro

Cor atual

Textura

quinta-feira, 10 de março de 2011

Page 9: Introdu o ao OpenGL - Unisinosprofessor.unisinos.br/ltonietto/jed/pgr/OpenGL_intro.pdfIntrodu o Como funciona a OpenGL API Procedural. Programador invoca comandos OpenGL para compor

Introdução

Como funciona a OpenGLOpenGL em software x em hardware

X

Implementação MicrosoftProcessamento passa por GDI Mais lentaLimitação de funcionalidades

Implementação no driver do HWComunicação direta com dispositivoMais rápida

quinta-feira, 10 de março de 2011

Page 10: Introdu o ao OpenGL - Unisinosprofessor.unisinos.br/ltonietto/jed/pgr/OpenGL_intro.pdfIntrodu o Como funciona a OpenGL API Procedural. Programador invoca comandos OpenGL para compor

Introdução

Como funciona a OpenGLPipeline OpenGL

Aplicação executa chamadas as funções da API da OpenGL.Comandos e dados (vértices, textura e etc) são armazenados no command buffer. Quando do “flush” os vértices passam pelo processamento matemático (transformações geométricas e de iluminação)Depois é feita a rasterização para cria uma imagem colorida a partir da geometria, cor e dados de textura.A imagem é colocada num framebuffer, que é a memória do dispositivo gráfico.

quinta-feira, 10 de março de 2011

Page 11: Introdu o ao OpenGL - Unisinosprofessor.unisinos.br/ltonietto/jed/pgr/OpenGL_intro.pdfIntrodu o Como funciona a OpenGL API Procedural. Programador invoca comandos OpenGL para compor

Modelo de Aplicação

Modelo da Aplicação

Aplicação

SistemaGráfico

Dados 2D/3DOpenGL/GLUT/SDL/DirectX

Manipula dados e define o que será desenhado e aonde.

quinta-feira, 10 de março de 2011

Page 12: Introdu o ao OpenGL - Unisinosprofessor.unisinos.br/ltonietto/jed/pgr/OpenGL_intro.pdfIntrodu o Como funciona a OpenGL API Procedural. Programador invoca comandos OpenGL para compor

Modelo de Aplicação

Modelo da Aplicação

Aplicação

Dados 2D/3D

Manipula dados e define o que será desenhado e aonde.

GLUT

GLUT – sistema de janelas independente de sistema. Não é livre

quinta-feira, 10 de março de 2011

Page 13: Introdu o ao OpenGL - Unisinosprofessor.unisinos.br/ltonietto/jed/pgr/OpenGL_intro.pdfIntrodu o Como funciona a OpenGL API Procedural. Programador invoca comandos OpenGL para compor

Modelo de Aplicação

Modelo da Aplicação

Aplicação

Dados 2D/3D

Manipula dados e define o que será desenhado e aonde.

SDL – Simple DirectMedia Layer. LGPL. É livre

quinta-feira, 10 de março de 2011

Page 14: Introdu o ao OpenGL - Unisinosprofessor.unisinos.br/ltonietto/jed/pgr/OpenGL_intro.pdfIntrodu o Como funciona a OpenGL API Procedural. Programador invoca comandos OpenGL para compor

Programando com OpenGL

Bibliotecas OpenGLMicrosoft Windows opengl32.dll

OpenGL utility library (GLU) glu32.dllConjunto de funções utilitárias para tarefas comuns e complexas, algumas matrizes especiais para cálculo e suporte para curvas e superfícies.

Headers:gl.h header de prototipação das funções OpenGL

glu.h header de prototipação das funçoes GLU

Exemplo de “#include” para um programa OpengGL:#include <windows.h> // não vem no VisualC++ Express

#include <gl/gl.h>

#include <glu/glu.h>

#include “glee.h” // extensões da OpenGL

#include “glut.h” // freeglut

quinta-feira, 10 de março de 2011

Page 15: Introdu o ao OpenGL - Unisinosprofessor.unisinos.br/ltonietto/jed/pgr/OpenGL_intro.pdfIntrodu o Como funciona a OpenGL API Procedural. Programador invoca comandos OpenGL para compor

Programando com OpenGL

Tipos de dados para se usar com a API OpenGL

quinta-feira, 10 de março de 2011

Page 16: Introdu o ao OpenGL - Unisinosprofessor.unisinos.br/ltonietto/jed/pgr/OpenGL_intro.pdfIntrodu o Como funciona a OpenGL API Procedural. Programador invoca comandos OpenGL para compor

Programando com OpenGL

Convenção de nomes

glVertex3f(0.0f, 0.0f, 0.0f);glVertex3i(0, 0, 0);glVertex3v(vertex[0]);

quinta-feira, 10 de março de 2011

Page 17: Introdu o ao OpenGL - Unisinosprofessor.unisinos.br/ltonietto/jed/pgr/OpenGL_intro.pdfIntrodu o Como funciona a OpenGL API Procedural. Programador invoca comandos OpenGL para compor

Programando com OpenGL

Convenção de nomesComeçam com gl...Próximas palavras começa com a primeira letra maiúscula.

glBegin()

Constantes começam com GL_ e são sempre em maiúsculas.

GL_COLOR_BUFFER_BIT

quinta-feira, 10 de março de 2011

Page 18: Introdu o ao OpenGL - Unisinosprofessor.unisinos.br/ltonietto/jed/pgr/OpenGL_intro.pdfIntrodu o Como funciona a OpenGL API Procedural. Programador invoca comandos OpenGL para compor

Programando com OpenGL

Lembre-se: OpenGL é máquina de estados, desenha primitivas e o estado das variáveis altera o resultado da síntese da imagem.

Um objeto é desenhado com a cor que está definida, com iluminação que está definida, com as transformações previamente definidas e etc.Portanto, um vez definida um propriedade, ela ficará “residente” até tenha o seu estado limpo ou alterado com outro valor.Por exemplo, quando uma cor é definida ela será usada em qualquer processo de colorização até que ocorra um novo comando de cor.

OpenGL não faz interação com usuário, portanto, não gerencia entrada e saída de dados. É necessário o uso de alguma biblioteca para gerenciamento de GUI. Padrão GLUT.

quinta-feira, 10 de março de 2011

Page 19: Introdu o ao OpenGL - Unisinosprofessor.unisinos.br/ltonietto/jed/pgr/OpenGL_intro.pdfIntrodu o Como funciona a OpenGL API Procedural. Programador invoca comandos OpenGL para compor

Programando com OpenGL

Como uma máquina de estados, os comandos também podem ter seu estado definido/alterado apenas como ligado ou desligado.

glEnable() e glDisable()

É o caso da iluminação:glEnable(GL_LIGHTING)

CUIDADO: a troca frequente de estados afeta a performance. O melhor é “setar” os estados uma vez só, quando possível.

quinta-feira, 10 de março de 2011

Page 20: Introdu o ao OpenGL - Unisinosprofessor.unisinos.br/ltonietto/jed/pgr/OpenGL_intro.pdfIntrodu o Como funciona a OpenGL API Procedural. Programador invoca comandos OpenGL para compor

Programando com OpenGL

Desenho de primitivas:Basicamente, é a definição dos vértices das primitivas e das propriedades de cor, normais, texturas e etc.Tudo definido entre glBegin(<primitiva>) e glEnd()

Exemplo:glBegin(GL_TRIANGLES);

glColor3f(0.0, 0.0, 1.0); glVertex3f(0.0, 0.0, 0.0);

glVertex3f(1.0, 0.0, 0.0); glVertex3f(0.5, 0.5, 0.0);

glEnd();

Outros comandos utilizados dentro do bloco:glColor*(), glNormal*(), glMaterial*()

quinta-feira, 10 de março de 2011

Page 21: Introdu o ao OpenGL - Unisinosprofessor.unisinos.br/ltonietto/jed/pgr/OpenGL_intro.pdfIntrodu o Como funciona a OpenGL API Procedural. Programador invoca comandos OpenGL para compor

Programando com OpenGL

Primitivas:

Primitiva / Constante DescriçãoGL_POINTS Pontos individuaisGL_LINES Par de vértices = 1 linha

GL_LINE_STRIP Pontos conectados por linhasGL_LINE_LOOP = strip + 1 linha para fecharGL_TRIANGLES 3 pontos = 1 triângulo

GL_TRIANGLE_STRIP Série de triângulos conectadosGL_TRIANGLE_FAN Todos tri compartilham ponto zero

GL_QUADS 4 pontos = 1 quadriláteroGL_QUAD_STRIP Série de quads. conectadosGL_POLYGON Todos pontos = 1 polígono

quinta-feira, 10 de março de 2011

Page 22: Introdu o ao OpenGL - Unisinosprofessor.unisinos.br/ltonietto/jed/pgr/OpenGL_intro.pdfIntrodu o Como funciona a OpenGL API Procedural. Programador invoca comandos OpenGL para compor

Programando com OpenGL

Primitivas:

quinta-feira, 10 de março de 2011

Page 23: Introdu o ao OpenGL - Unisinosprofessor.unisinos.br/ltonietto/jed/pgr/OpenGL_intro.pdfIntrodu o Como funciona a OpenGL API Procedural. Programador invoca comandos OpenGL para compor

Programando com OpenGL

Primitivas. Exemplos:

glBegin(GL_POLYGON); // ou glBegin(GL_POINTS); glVertex2f(0.0, 0.0); glVertex2f(0.0, 3.0); glVertex2f(4.0, 3.0); glVertex2f(6.0, 1.5); glVertex2f(4.0, 0.0);glEnd();

quinta-feira, 10 de março de 2011

Page 24: Introdu o ao OpenGL - Unisinosprofessor.unisinos.br/ltonietto/jed/pgr/OpenGL_intro.pdfIntrodu o Como funciona a OpenGL API Procedural. Programador invoca comandos OpenGL para compor

Programando com OpenGL

glColor3f(0.0f, 0.5f, 1.0f);glBegin(GL_POLYGON); glVertex…glEnd();

glColor(0.0f, 0.0f, 0.0f);glBegin(GL_LINE_LOOP); glVertex…glEnd();

24

quinta-feira, 10 de março de 2011

Page 25: Introdu o ao OpenGL - Unisinosprofessor.unisinos.br/ltonietto/jed/pgr/OpenGL_intro.pdfIntrodu o Como funciona a OpenGL API Procedural. Programador invoca comandos OpenGL para compor

Programando com OpenGL

Tipos de polígonos:

Válidos Inválidos

quinta-feira, 10 de março de 2011

Page 26: Introdu o ao OpenGL - Unisinosprofessor.unisinos.br/ltonietto/jed/pgr/OpenGL_intro.pdfIntrodu o Como funciona a OpenGL API Procedural. Programador invoca comandos OpenGL para compor

Programando com OpenGL

Objetos curvos são aproximados por retas:

quinta-feira, 10 de março de 2011

Page 27: Introdu o ao OpenGL - Unisinosprofessor.unisinos.br/ltonietto/jed/pgr/OpenGL_intro.pdfIntrodu o Como funciona a OpenGL API Procedural. Programador invoca comandos OpenGL para compor

Programando com OpenGL

Exemplo. Desenhando um círculo:

#define PI 3.1415926535898

GLfloat circle_points = 100.0f;

GLfloat angle, raioX=1.0f, raioY=1.0f;

glBegin(GL_LINE_LOOP);

for (int i = 0; i < circle_points; i++) {

angle = 2*PI*i/circle_points;

glVertex2f(cos(angle)*raioX, sin(angle)*raioY);

}

glEnd();

Note que: • O tamanho do círculo é dado pelo raio, no exemplo é desenhado um

círculo com raio 1 • Definindo o valor dos raios X e Y com valores diferentes, pode-se

desenhar uma elipse.

quinta-feira, 10 de março de 2011

Page 28: Introdu o ao OpenGL - Unisinosprofessor.unisinos.br/ltonietto/jed/pgr/OpenGL_intro.pdfIntrodu o Como funciona a OpenGL API Procedural. Programador invoca comandos OpenGL para compor

Programando com OpenGL

Modo de polígono:glPolygonMode(<lado>,<modo>)<lado>

GL_FRONT_AND_BACKGL_FRONTGL_BACK

<modo>GL_POINTGL_LINEGL_FILL

quinta-feira, 10 de março de 2011

Page 29: Introdu o ao OpenGL - Unisinosprofessor.unisinos.br/ltonietto/jed/pgr/OpenGL_intro.pdfIntrodu o Como funciona a OpenGL API Procedural. Programador invoca comandos OpenGL para compor

Programando com OpenGL

Tratamento de erros em OpenGL:Quando fazemos algo inválido em OpenGL ou GLU o programa não pára; apenas não faz o que a gente espera. Isso dificulta a depuração!Quando um erro ocorre um flag é setado com um código de erro. Para acessar esse código deve-se usar glGetError();Por outro lado… cada chamada OpenGL a mais afetam a performance… Em alguns casos quando queremos renderização em tempo real temos que eliminar o maior número possível dessas chamadas! Lembre-se: todos os comandos são bufferizados e processados.

quinta-feira, 10 de março de 2011

Page 30: Introdu o ao OpenGL - Unisinosprofessor.unisinos.br/ltonietto/jed/pgr/OpenGL_intro.pdfIntrodu o Como funciona a OpenGL API Procedural. Programador invoca comandos OpenGL para compor

Programando com OpenGL

Matrizes:Três tipos de matrizes:GL_MODELVIEW:

A matriz modelview controla as transformações dos vértices dos objetos da cena

GL_PROJECTIONA matriz de projeção controla como a cena 3-D é projetada em 2-D

GL_TEXTUREA matriz de texturas (geralmente pouco conhecida e utilizada) transforma as coordenadas das textura para obter efeitos como projetar e deslocar texturas

quinta-feira, 10 de março de 2011

Page 31: Introdu o ao OpenGL - Unisinosprofessor.unisinos.br/ltonietto/jed/pgr/OpenGL_intro.pdfIntrodu o Como funciona a OpenGL API Procedural. Programador invoca comandos OpenGL para compor

Programando com OpenGL

Matrizes de projeção:glFrustum(left,right,bottom,top,near,far)glOrtho(left,right,bottom,top,near,far)

gluPerspective(fovy,aspect,zNear,zFar)gluOrtho2D(left,right,bottom,top)gluLookAt(eyex, eyey, eyez, centerx, centery, centerz, upx, upy, upz)

Coordenadas de TelaglViewport(x, y, width, height)

quinta-feira, 10 de março de 2011

Page 32: Introdu o ao OpenGL - Unisinosprofessor.unisinos.br/ltonietto/jed/pgr/OpenGL_intro.pdfIntrodu o Como funciona a OpenGL API Procedural. Programador invoca comandos OpenGL para compor

Programando com OpenGL

Transformações:Modelagem

glTranslate{fd}(x, y, z)glRotate{fd) (angle, x, y, z )glScale{fd}(x,y,z)

Propriedades Materiais glMaterial*()ambiente, difuso, especular

Fontes de Luz glLight*()cor, posição, atenuação, etc

quinta-feira, 10 de março de 2011

Page 33: Introdu o ao OpenGL - Unisinosprofessor.unisinos.br/ltonietto/jed/pgr/OpenGL_intro.pdfIntrodu o Como funciona a OpenGL API Procedural. Programador invoca comandos OpenGL para compor

Programando com OpenGL

Exemplo:// Estabelece o modo de projeção

glMatrixMode(GL_PROJECTION);

// limpa matrizes

glLoadIdentity();

// especifica o Frustum

glFrustum(-1, 1, -1, 1, 0.0, 40.0);

// habilita estado de modelagem

glMatrixMode(GL_MODELVIEW);

// cria matriz de transformação

glPushMatrix();

// define uma transformação de rotação em X,Y,Z

glRotatef(45.0, 1.0, 1.0, 1.0);

render(); // invoca um método do programa

glPopMatrix();

quinta-feira, 10 de março de 2011

Page 34: Introdu o ao OpenGL - Unisinosprofessor.unisinos.br/ltonietto/jed/pgr/OpenGL_intro.pdfIntrodu o Como funciona a OpenGL API Procedural. Programador invoca comandos OpenGL para compor

Programando com OpenGL

Dicas:Lembre-se que a origem do OpenGL é no canto esquerdo (e é baseado em um sistema de coordenadas left-hand )Lembre-se de (1) ativar o modo de preenchimento desejado (por ex.: glEnable(GL_DEPTH_TEST);) e de (2) Limpar os respectivos buffers! (por ex.: glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);)Evitar mudanças constantes de estadoMaior freqüência de erros: posicionamento de câmera. Atente-se para olhar de um ponto e para um ponto que seja coerente com os objetos renderizados.

quinta-feira, 10 de março de 2011

Page 35: Introdu o ao OpenGL - Unisinosprofessor.unisinos.br/ltonietto/jed/pgr/OpenGL_intro.pdfIntrodu o Como funciona a OpenGL API Procedural. Programador invoca comandos OpenGL para compor

Programando com OpenGL

Dicas:Ao manipular as matrizes OpenGL lembre-se de verificar se o tipo de matriz correto está ativado.Por exemplo:glMatrixMode(GL_PROJECTION);

glLoadIdentity();

glFrustum(-1, 1, -1, 1, 0.0, 40.0);/* glMatrixMode(GL_MODELVIEW); */glPushMatrix();glRotatef(45.0, 1.0, 1.0, 1.0);

render();

glPopMatrix();

quinta-feira, 10 de março de 2011

Page 36: Introdu o ao OpenGL - Unisinosprofessor.unisinos.br/ltonietto/jed/pgr/OpenGL_intro.pdfIntrodu o Como funciona a OpenGL API Procedural. Programador invoca comandos OpenGL para compor

Programando com OpenGL

Renderização de textos:OpenGL não dá nenhum suporte nativo para o tratamento textos e de fontes gráficas. Portanto, o texto não considerado uma “primitiva” ou algo do gênero para ser renderizado.Deve ser utilizado algum recurso de biblioteca para fazer esta tarefa.GLUT e SDL possuem métodos para suportar a renderização como uma imagem:

Exemplo GLUT://Para posicionar na coordenada (x,y)glRasterPos2f(x,y);//Chamada GLUT para escritaglutBitmapCharacter(fonte,*(texto++));

quinta-feira, 10 de março de 2011

Page 37: Introdu o ao OpenGL - Unisinosprofessor.unisinos.br/ltonietto/jed/pgr/OpenGL_intro.pdfIntrodu o Como funciona a OpenGL API Procedural. Programador invoca comandos OpenGL para compor

Programando com OpenGL

Renderização de textos:Usado em fonte

GL_BITMAP_8_BY_13GL_BITMAP_9_BY_15GL_BITMAP_TIMES_ROMAN_10GL_BITMAP_TIMES_ROMAN_24GL_BITMAP_HELVETICA_10GL_BITMAP_HELVETICA_12GL_BITMAP_HELVETICA_18

quinta-feira, 10 de março de 2011

Page 38: Introdu o ao OpenGL - Unisinosprofessor.unisinos.br/ltonietto/jed/pgr/OpenGL_intro.pdfIntrodu o Como funciona a OpenGL API Procedural. Programador invoca comandos OpenGL para compor

Programando com OpenGL

Alguns métodos normalmente presentes em programas OpenGL:

init() – inicializiação de variáveis e de estados permanentes.display() – é que a coisa acontece!! Desenho das primitivas e definição dos estados relacionados a elas, como cor, textura e outros aspectos.update() – alterações a serem realizadas quando do redimensionamento da janela.getInputs() – processamento de entradas como teclado e mouse.

quinta-feira, 10 de março de 2011

Page 39: Introdu o ao OpenGL - Unisinosprofessor.unisinos.br/ltonietto/jed/pgr/OpenGL_intro.pdfIntrodu o Como funciona a OpenGL API Procedural. Programador invoca comandos OpenGL para compor

Programando com OpenGL

Exemplos de código para o método init():void init(){

glMatrixMode(GL_PROJECTION);

glLoadIdentity();

gluPerspective(50.0, 1.0, -10.0, 7.0);

glEnable(GL_LIGHTING);

const float specularColor[]={1.0f,0.0f,1.0f,0.5f};

glLightfv(GL_LIGHT0, GL_SPECULAR, specularColor);

glMatrixMode(GL_MODELVIEW);

}

quinta-feira, 10 de março de 2011

Page 40: Introdu o ao OpenGL - Unisinosprofessor.unisinos.br/ltonietto/jed/pgr/OpenGL_intro.pdfIntrodu o Como funciona a OpenGL API Procedural. Programador invoca comandos OpenGL para compor

Programando com OpenGL

Exemplos de método update():

quinta-feira, 10 de março de 2011

Page 41: Introdu o ao OpenGL - Unisinosprofessor.unisinos.br/ltonietto/jed/pgr/OpenGL_intro.pdfIntrodu o Como funciona a OpenGL API Procedural. Programador invoca comandos OpenGL para compor

Programando com OpenGL

Exemplos de método display():

quinta-feira, 10 de março de 2011

Page 42: Introdu o ao OpenGL - Unisinosprofessor.unisinos.br/ltonietto/jed/pgr/OpenGL_intro.pdfIntrodu o Como funciona a OpenGL API Procedural. Programador invoca comandos OpenGL para compor

Programando com OpenGL

Exemplos de método getInputs():

quinta-feira, 10 de março de 2011

Page 43: Introdu o ao OpenGL - Unisinosprofessor.unisinos.br/ltonietto/jed/pgr/OpenGL_intro.pdfIntrodu o Como funciona a OpenGL API Procedural. Programador invoca comandos OpenGL para compor

OpenGL

Fake or Real?

quinta-feira, 10 de março de 2011

Page 44: Introdu o ao OpenGL - Unisinosprofessor.unisinos.br/ltonietto/jed/pgr/OpenGL_intro.pdfIntrodu o Como funciona a OpenGL API Procedural. Programador invoca comandos OpenGL para compor

Bibliografias

www.opengl.orgwww.khronos.orgOpenGL Programming Guide (Woo, Neider, Davis - Addison-Wesley )OpenGL Programming for the X Window SystemOpenGL Game Programming (Astle, Hawkins, LaMothe)

quinta-feira, 10 de março de 2011

Page 45: Introdu o ao OpenGL - Unisinosprofessor.unisinos.br/ltonietto/jed/pgr/OpenGL_intro.pdfIntrodu o Como funciona a OpenGL API Procedural. Programador invoca comandos OpenGL para compor

Bibliografias

Red Bookhttp://fly.cc.fer.hr/~unreal/theredbook/

Tutorial de OpenGL (Português)http://www.ingleza.com.br/opengl/index.html

Referência (API) para PyOpenGLhttp://pyopengl.sourceforge.net/documentation/manual/

Documentação para PyOpenGLhttp://pyopengl.sourceforge.net/documentation/index.html

Referência (API) para wxPythonhttp://www.wxpython.org/onlinedocs.php

Tutorial básico de wxPythonhttp://www.wxpython.org/tutorial.php

quinta-feira, 10 de março de 2011

Page 46: Introdu o ao OpenGL - Unisinosprofessor.unisinos.br/ltonietto/jed/pgr/OpenGL_intro.pdfIntrodu o Como funciona a OpenGL API Procedural. Programador invoca comandos OpenGL para compor

Referências bibliográficas

WRIGHT Jr., Richard S.; LIPCHAK, Benjamin; HAEMEL, Nicholas. OpenGL Superbible: Comprehensive Tutorial and Reference. 4ed.: Addison-Wesley. 2007.Slides do prof. Dr. Christian Hofsetz.Slides do prof. João Bittencourt

quinta-feira, 10 de março de 2011