117
OpenGL – Uma abordagem prática e objetiva Última atualização: 16- nov-2008

OpenGL – Uma abordagem prática e objetiva

Embed Size (px)

DESCRIPTION

OpenGL – Uma abordagem prática e objetiva. Última atualização: 16-nov-2008. 1 - Introdução. Computação Gráfica é uma área da Ciência da Computação que se dedica ao estudo e ao desenvolvimento de técnicas e algoritmos para geração, manipulação e análise de imagens pelo computador. Introdução. - PowerPoint PPT Presentation

Citation preview

Page 1: OpenGL – Uma abordagem prática e objetiva

OpenGL – Uma abordagem prática e objetiva

Última atualização: 16-nov-2008

Page 2: OpenGL – Uma abordagem prática e objetiva

1 - Introdução

Computação Gráfica é uma área da Ciência da Computação que se dedica ao estudo e ao desenvolvimento de técnicas e algoritmos para geração, manipulação e análise de imagens pelo computador

Page 3: OpenGL – Uma abordagem prática e objetiva

Introdução

aplicações gráficas processamento gráfico

Page 4: OpenGL – Uma abordagem prática e objetiva

Pipeline

A palavra pipeline é usada para descrever um processo composto de duas ou mais etapas para geração de uma imagem

Page 5: OpenGL – Uma abordagem prática e objetiva

Framebuffer

framebuffer – memória do dispositivo gráfico

Page 6: OpenGL – Uma abordagem prática e objetiva

2 - Instalação

Page 7: OpenGL – Uma abordagem prática e objetiva

No DEV-C++

<alt>+<P> --> abre o menu Projeto

Selecionar Opções de Projeto Selecione a aba Parâmetros e em

Linker verifique:-lglut32 -lopengl32 -lglu32 -lwinmm -lgdi32

Page 8: OpenGL – Uma abordagem prática e objetiva

3 – Primeiros passos em OpenGL

Função Desenha Função Teclado Função Inicializa Função Principal

Page 9: OpenGL – Uma abordagem prática e objetiva

Primeiros passos em OpenGL

Veja exemplo em: http://www.novatec.com.br/livros/opengl/

Page 10: OpenGL – Uma abordagem prática e objetiva

4 – Padronização dos Nomes das Funções e Tipos de Dados

Page 11: OpenGL – Uma abordagem prática e objetiva

Funções - Exemplos

void glColor(GLint red, GLint green, GLint blue);

void glColor3d(GLdouble red, GLdouble green, GLdouble blue)

Page 12: OpenGL – Uma abordagem prática e objetiva

Tipos de dados OpenGLTipo de dado OpenGL

Representação interna

Tipo de dado C equivalente

Sufixo

GLbyte int 8 bits signed char b

GLshort int 16 bits short s

GLint, GLsizei int 32 bits int ou long i

GLfloat, GLclampf ponto flutuante – 32 bits

float f

GLdouble, GLclampd

ponto flutuante – 64 bits

double d

GLubyte, GLBoolean

int 8 bits sem sinal unsigned char ub

GLushort int 16 bits sem sinal

unsigned short us

GLuint, GLemun, GLbitfield

int 32 bits sem sinal

unsigned long ou unsigned int

ui

Page 13: OpenGL – Uma abordagem prática e objetiva

5 – GLUT – GL Utility Toolkit

Responsável pelo gerenciamento de janelas e tratamento de eventos

Page 14: OpenGL – Uma abordagem prática e objetiva

GLUT - Funções

// Especifica a posição inicial da janela GLUTglutInitWindowPosition(int x, int y);

// Especifica o tamanho inicial em pixels da janela GLUTglutInitWindowSize(int largura, int altura);

Page 15: OpenGL – Uma abordagem prática e objetiva

Criação da Janela

// Cria a janela passando como argumento o título da mesma

glutCreateWindow(char *string);

Page 16: OpenGL – Uma abordagem prática e objetiva

Funções para tratamento de eventos glutDisplayFunc glutReshapeFunc glutKeyboardFunc glutSpecialFunc glutMouseFunc glutMotionFunc glutPassiveMotionFunc glutIdleFunc

Page 17: OpenGL – Uma abordagem prática e objetiva

6 – Máquinas de Estado

Uma máquina de estados corresponde a um dispositivo ou sistema que guarda o estado de um ou mais elementos em um momento específico

Comandos de entrada são utilizados para alterar este estado e/ou gerar uma função de saída

Page 18: OpenGL – Uma abordagem prática e objetiva

Máquina de estados OpenGL é considerado uma máquina

de estados É composto de várias variáveis de

estado que armazenam determinado valor e podem ser alteradas pela chamada a uma função

Cada variável de estado possui um valor padrão (default) que pode ser alterado

Page 19: OpenGL – Uma abordagem prática e objetiva

Funções para alteração de estado void glEnable(GLenum cap) void glDisable(GLenum cap) GLBoolean glIsEnabled(GLenum cap)

--> verifica o estado que se encontra uma propriedade

Page 20: OpenGL – Uma abordagem prática e objetiva

Variáveis de estado

Variáveis de estado relacionadas são agrupadas em um atributo

void glPushAttrib(GLbitfield mask)

void glPopAttrib(void)

Page 21: OpenGL – Uma abordagem prática e objetiva

7 – Definição do Espaço de Trabalho

modelo coordenadas geométricas sistema de referencia Sistema de Referência do Universo

(SRU) Sistema de Referência da Tela

(SRT)

Page 22: OpenGL – Uma abordagem prática e objetiva

Definições

Modelo-> é uma representação computacional de um objeto, isto é, corresponde a uma estrutura de dados que tem sua descrição geométrica

Imagem -> matriz de pontos Universo -> é a região do plano (ou do

espaço) utilizada em uma aplicação

Page 23: OpenGL – Uma abordagem prática e objetiva

Definições

coordenadas geométricas sistema de referência -> define

uma origem em relação a qual todos os posicionamentos do universo são descritos.

Page 24: OpenGL – Uma abordagem prática e objetiva

7.1 Visualização Bidimensional

Page 25: OpenGL – Uma abordagem prática e objetiva

Sistema de Referencia do Universo

Sistema de Referência do Universo (SRU) -> consiste em um plano cartesiano com dois eixos (x e y) perpendiculares entre si e que se cruzam na origem

Page 26: OpenGL – Uma abordagem prática e objetiva

Sistema de Referência da Tela

Sistema de Referência da Tela (SRT) -> no SRT a origem fica no canto superior esquerdo do monitor

Page 27: OpenGL – Uma abordagem prática e objetiva

Definições modelos são criados independentes do

dispositivo windows ou janela de seleção --> é a

área do universo que delimita a região de interesse do usuário em um dado instante

viewport ou janela de exibição --> define a área do monitor onde desejamos exibir o conteúdo da window

Page 28: OpenGL – Uma abordagem prática e objetiva

Mapeamento SRU --> SRT

Page 29: OpenGL – Uma abordagem prática e objetiva

Funções de conversão SRU para SRT void glViewport(

GLint x, GLint y, GLsizei largura, GLsizei altura);

void gluOrtho2d(GLdouble left, GLdouble right, GLdouble bottom, GLdouble top)

Page 30: OpenGL – Uma abordagem prática e objetiva

7.2 Visualização Tridimensional

Câmera Sintética Projeção Funções OpenGL

Page 31: OpenGL – Uma abordagem prática e objetiva

Visualização Tridimensional

Quando se trabalha em três dimensões, o SRU (Sistema de Referência do Universo) passa a ser composto por três eixos ortogonais entre si (x, y e z) e pela origem (0.0, 0.0, 0.0)

Page 32: OpenGL – Uma abordagem prática e objetiva

Visualização Tridimensional

Projeção: é a operação de obter representações bidimensionais de objetos tridimensionais

Raios de projeção (segmentos de reta) chamados projetantes

Plano de projeção

Page 33: OpenGL – Uma abordagem prática e objetiva

Projeções Geométricas Planares Projeção Paralela Ortográfica --> as

projetantes são paralelas entre si, passam pelos pontos qeu definem os objetos e interseccionam o plano com um ângulo de 90º

Projeção Perspectiva --> as projetantes emanam de um único ponto que está a uma distancia finita do plano de projeção e passam pelos pontos que definem um objeto

Page 34: OpenGL – Uma abordagem prática e objetiva

Funções OpenGL void gluLookAt() --> permite

especificar a posição e a orientação da câmera sintética ou observador virtual

void gluPerspective() --> utilizada para estabelecer a projeção perspectiva

void glOrtho() --> função utilizada para estabelecer projeção ortográfica

Page 35: OpenGL – Uma abordagem prática e objetiva

Funções OpenGL void glLoadIdentity(void) --> função utilizada

para inicializar o sistema de coordenadas (carrega a matriz identidade)

void glMatrixMode(GLenum mode) --> permite selecionar com qual matriz será trabalhado

GL_MODELVIEW --> seleciona a matriz do modelo (de modelagem e transformação)

GL_PROJECTION --> seleciona a matriz de projeção GL_TEXTURE --> seleciona a matriz de textura

Page 36: OpenGL – Uma abordagem prática e objetiva

Funções GLUT

void glutWireCube(GLdouble tamanho) --> função da biblioteca GLUT responsável pelo traçado de um cubo

Page 37: OpenGL – Uma abordagem prática e objetiva

8 – Desenhos bidimensionais

8.1 Primitivas Gráficas 8.2 Cores e Estilos de Traçados de

Primitivas 8.3 Exibição de Texto 8.4 Desenhos de Curvas

Paramétricas

Page 38: OpenGL – Uma abordagem prática e objetiva

8.1 - Primitivas Gráficas

Primitivas gráficas consistem nos elementos básicos que compõem um desenho, tais como pontos, segmentos de reta e círculos

Page 39: OpenGL – Uma abordagem prática e objetiva

Primitivas Gráficas

vértices objetos cenas modelos

Page 40: OpenGL – Uma abordagem prática e objetiva

Desenho de primitivas

glBegin(<argumento>); // lista de vérticesglEnd();

onde <argumento>determina qual objeto será desenhado

Page 41: OpenGL – Uma abordagem prática e objetiva

Primitivas Gráficas em OpenGL (valores usados em <argumento>) GL_POINTS – desenha pontos GL_LINES – desenha linhas GL_LINE_STRIP – desenha segmentos de linhas

conectados GL_LINE_LOOP – desenha segmentos de linhas

conectados, unindo o primeiro ao último GL_POLYGON – desenha um polígono GL_TRIANGLES – desenha um triângulo GL_TRIANGLES_STRIP – desenha um triângulos

conectados GL_TRIANGLES_FAN – desenha triângulos a partir de um

ponto central GL_QUADS – desenha quadriláteros GL_QUADS_STRIP – desenha quadriláteros conectados

Page 42: OpenGL – Uma abordagem prática e objetiva
Page 43: OpenGL – Uma abordagem prática e objetiva

Exemplos

glBegin(GL_LINES); glVertex2f(12.0f, 12.0f); glVertex2f(100.5f, 100.5f);glEnd();

Desenha uma linha entre os dois vértices

Page 44: OpenGL – Uma abordagem prática e objetiva

8.2 Cores e Estilos de Traçado de Primitivas

Primitivas podem ser desenhadas com diversas aparências como: cores, estilos e padrões diferentes

Page 45: OpenGL – Uma abordagem prática e objetiva

Exemplo de Funções

Alteração do tamanho dos pontos void glPointSize(GLfloat tamanho)Linhas: alteração de cor, espessura

e estilo void glLineWidth(GLfloat largura)

Page 46: OpenGL – Uma abordagem prática e objetiva

8.3 Exibição de Texto Não suportado diretamente pela

OpenGL, porém suportado pela GLUT Suporta dois tipos de fontes de

caracteres: strokes (segmentos de reta) -->mais

flexíveis (podem ser escaladas e rotacionadas)

bitmap (formando por imagens que representam caracteres) --> mais rápidas para serem exibidas

Page 47: OpenGL – Uma abordagem prática e objetiva

Caracteres – bitmap

void glutBitmapCharacter(void *font, int character), onde: font: define o tamanho da fonte caracter: define o caracter

Page 48: OpenGL – Uma abordagem prática e objetiva

Constantes para tipos de fontes

GLUT_BITMAP_8_BY_13 GLUT_BITMAP_9_BY_15 GLUT_BITMAP_TIMES_ROMAN_10 GLUT_BITMAP_TIMES_ROMAN_24 GLUT_BITMAP_HELVETICA_10 GLUT_BITMAP_HELVETICA_12 GLUT_BITMAP_HELVETICA_18

Page 49: OpenGL – Uma abordagem prática e objetiva

Posicionamento

void glRasterPos2f(x,y)

Page 50: OpenGL – Uma abordagem prática e objetiva

Exibição de caracteres usando font stroke

void glutStrokeCharacter(void *font, int caracter), onde font: define o nome da fonte

(GLUT_STROKE_ROMAN e GLUT_STROKE_MONO_ROMAN)

caractere: define o código ASCII do caractere a ser exibido

Page 51: OpenGL – Uma abordagem prática e objetiva

9 – Transformações Geométricas

Translação Escala Rotação

Page 52: OpenGL – Uma abordagem prática e objetiva

Translação

void glTranslate(GLfloat tx, GLfloat ty, GLfloat tz)

Page 53: OpenGL – Uma abordagem prática e objetiva

Escala

void glScale(GLfloat ex, GLfloat ey, GLfloat ez)

Page 54: OpenGL – Uma abordagem prática e objetiva

Rotação void glRotate(GLfloat ângulo,

GLfloat x, GLfloat y, GLfloat z) onde: ângulo: é o ângulo de rotação

Obs: no caso de rotação em 2D, a rotação é sempre feita em torno do eixo z (usar (0,0,1) para (x,y,z) respectivamente)

Page 55: OpenGL – Uma abordagem prática e objetiva

Rotação

ângulo positivo --> rotação feita no sentido anti-horário

ângulo negativo --> rotação feita no sentido horário

Page 56: OpenGL – Uma abordagem prática e objetiva

Matriz de Transformação matrizes com coordenadas homogêneas matriz de transformação corrente glLoadIdentity --> faz com que a

matriz de transformação corrente seja inicializada com a matriz identidade, indicando que nenhuma transformação foi aplicada

glMatrixMode com parâmetro GL_MODELVIEW

Page 57: OpenGL – Uma abordagem prática e objetiva

Escopo das Transformações

pilha de matrizes de transformação

void glPushMatrix(void) void glPopMatrix(void)

Page 58: OpenGL – Uma abordagem prática e objetiva

10 - Animação

Introdução Animação em 2D Animação em 3D

Page 59: OpenGL – Uma abordagem prática e objetiva

Conceitos básicos

animação tradicional animação por computador taxa de exibição de imagens

(frame rate)

Page 60: OpenGL – Uma abordagem prática e objetiva

Use de dois buffers glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB)

glutSwapBuffers --> troca os buffers de exibição e desenho

Page 61: OpenGL – Uma abordagem prática e objetiva

Animação em 2D void glutTimerFunc(unsigned int msecs, void

(*func)(int value), int value)

// Registra a função callback que será chamada a cada intervalo de tempo

glutTimerFunc(150, Anima, 1)

void Anima(int value) { ... glutPostRedisplay(); glutTimerFunc(150, Anima, 1);}

Page 62: OpenGL – Uma abordagem prática e objetiva

11 – Operações de Zoom e Pan

Page 63: OpenGL – Uma abordagem prática e objetiva

12 – Imagens em OpenGL

Page 64: OpenGL – Uma abordagem prática e objetiva

13 – Desenhos Tridimensionais

Primitivas Gráficas de 3D Objetos Predefinidos da GLUT Carregando e Desenhando Objetos Desenhando Superfícies

Paramétricas

Page 65: OpenGL – Uma abordagem prática e objetiva

14 - Realismo

Conceitos fonte de luz idéia de iluminação

Page 66: OpenGL – Uma abordagem prática e objetiva

Conceitos

wireframe sólidos faces frontais faces traseiras objetos oclusos

Page 67: OpenGL – Uma abordagem prática e objetiva

GL_CULL_FACE

variável de estado: GL_CULL_FACE

Page 68: OpenGL – Uma abordagem prática e objetiva

Objetos

objetos convexos: exemplos: cubos, cilindros, esferas,

cones objetos não-convexos (côncavos)

exemplos: torus (toróide)

algoritmo de remoção de faces

Page 69: OpenGL – Uma abordagem prática e objetiva

Z-Buffer

z-buffer -> algoritmo de remoção de superfícies escondidas

Page 70: OpenGL – Uma abordagem prática e objetiva

Fontes de Luz Um modelo de iluminação em

Computação Gráfica define a natureza da luz que emana de uma fonte e sua interação com todos os objetos de uma cena. A natureza da luz diz respeito à fontes de luz utilizada. Geralmente, três tipos de fontes de luz podem ser incluídas em uma cena 3D: pontual, direcional e spot.

Page 71: OpenGL – Uma abordagem prática e objetiva

Fontes de Luz

fonte de luz pontual: fonte de luz direcional: fonte de luz tipo spot:

Page 72: OpenGL – Uma abordagem prática e objetiva

Modelos de Reflexão

luz ambiente reflexão difusa reflexão especula

Page 73: OpenGL – Uma abordagem prática e objetiva

Modelos de Tonalização (shading)

Modelos flat shading modelo de Gouraud

Page 74: OpenGL – Uma abordagem prática e objetiva

14.4 Vetores Normais

Um vetor normal a uma face, ou superfície, é um vetor perpendicular a essa face.

vetor unitário produto vetorial

Page 75: OpenGL – Uma abordagem prática e objetiva

Vetor Normal

void glNormal3f(GLfloat nx, GLfloat ny, GLfloat nz)

Page 76: OpenGL – Uma abordagem prática e objetiva

14.5 Descrição de Cores

Page 77: OpenGL – Uma abordagem prática e objetiva

14.5.1 Conceitos Descrição das cores A cor é um fenômeno "psicofísico", que

depende da presença de luz no ambiente: se não há luz, não é possível enxergar cores

percepção de cor depende da física da luz – considerada

energia eletromagnética – e sua interação com os materiais físicos

interpretação do fenômeno resultante pelo sistema visual humano

Page 78: OpenGL – Uma abordagem prática e objetiva

Conceitos

raio de luz:

Page 79: OpenGL – Uma abordagem prática e objetiva

Sistema Visual Humano

faixa visível do espectro eletromagnético (380 a 750 nm)

luz monocromática luz cromática (colorida)

Page 80: OpenGL – Uma abordagem prática e objetiva

Sistema Visual Humano

Na retina existem os: cones – são sensíveis a energia em

todo espectro visívelazuisverdesvermelhos

bastonetes – são sensíveis a intensidade luminosa

Page 81: OpenGL – Uma abordagem prática e objetiva

Sistema Visual sensação de cor espaço de representação de cores

tridimensional modelos de cor

YIQ (padrão NTSC) YUV CMY (Cyan, Magenta e Yellow) RGB (Red, Green, Blue)

Page 82: OpenGL – Uma abordagem prática e objetiva

14.5.2 Funções OpenGL

O modelo de cor adotado em OpenGL é o RGB ou RGBA (alpha – utilizado quando se está trabalhando com blending – o alpha especifica a opacidade)

Page 83: OpenGL – Uma abordagem prática e objetiva

Modelo de cores

color buffer 24 bits por pixel ( 8 bits para R, G

e B ) tabela de cores (look-up table)

Page 84: OpenGL – Uma abordagem prática e objetiva

Funções OpenGL void glClear(GL_COLOR_BUFFER_BIT)Limpa o conteúdo do framebuffer void glClearColor(

GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha)

Especifica a cor usada por glClear (a cor default é (0.0, 0.0, 0.0) – preta)

Page 85: OpenGL – Uma abordagem prática e objetiva

Funções OpenGL

void glColor3f( GLfloat red, GLfloat green, GLfloat blue)

Page 86: OpenGL – Uma abordagem prática e objetiva

14.6 Uso de Múltiplas Fontes de Luz

Page 87: OpenGL – Uma abordagem prática e objetiva

14.7 Materiais

Page 88: OpenGL – Uma abordagem prática e objetiva

14.8 Sala 3D

Page 89: OpenGL – Uma abordagem prática e objetiva

15 – Blending (mistura)

alpha – utilizado quando se está trabalhando com blending – o alpha especifica a opacidade

1.0 – cor totalmente opaca 0.0 – cor é totalmente

transparente

Page 90: OpenGL – Uma abordagem prática e objetiva

15.1 Funções de Mistura

Page 91: OpenGL – Uma abordagem prática e objetiva

Transparência

Page 92: OpenGL – Uma abordagem prática e objetiva

Efeitos Atmosféricos

função neblina

Page 93: OpenGL – Uma abordagem prática e objetiva

Suavização de Linhas e Polígonos

aliasing

Page 94: OpenGL – Uma abordagem prática e objetiva

16 – Mapeamento de Texturas

Texturas Unidimensionais Texturas Bidimensionais

Page 95: OpenGL – Uma abordagem prática e objetiva

17 – Técnicas para Otimização do Rendering

Page 96: OpenGL – Uma abordagem prática e objetiva

18 - Buffers

Um buffer em OpenGL nada mais pe do que uma área de memória onde é armazenada uma matriz de valores, que, por sua vez correspondem aos pixels de uma imagem

Page 97: OpenGL – Uma abordagem prática e objetiva

Buffers - Tipos Color Buffer (ou buffer de cor) --> responsável

por armazenar informações de cor (RGBA) para cada pixel

Depth Buffer (ou buffer de profundidade ou z-buffer) --> armazena a distância de cada pixel ao observador

Stencil Buffer (ou buffer de estêncil) --> fornecem opções para restringir ou bloquear o desenho na tela, de acordo com certas condições.

Accumulation Buffer (ou buffer de acumulação) --> pode ser visto como um buffer de cor com maior precisão, em que é possível combinar várias imagens em uma só, de várias formas diferentes

Page 98: OpenGL – Uma abordagem prática e objetiva

Função glutInitDisplayMode void glutInitDisplayMode(unsigned int

mode)onde mode: GLUT_RGB, GLUT_RGBA ou GLUT_INDEX para

o modelo de cor; GLUT_SINGLE ou GLUT_DOUBLE para utilização de um ou dois buffers; GLUT_ACUM, GLUT_ALPHA, GLUT_DEPTH, GLUT_STENCIL, GLUT_MULTISAMPLE, GLUT_STEREO, GLUT_LUMINANCE

Page 99: OpenGL – Uma abordagem prática e objetiva

Função glutInitDisplayMode

Especifica o modelo de cor, a utilização de single ou double-buffer e quais buffers OpenGL serão utilizados na janela GLUT que será aberta.

Page 100: OpenGL – Uma abordagem prática e objetiva

Funções para inicialização de buffers void glClear(GLbitfield mask) -->

função para limpar os buffers cujos identificadores são passados como parâmetros mask

GL_COLOR_BUFFER_BIT,GL_DEPTH_BUFFER_BITGL_STENCIL_BUFFER_BITGL_ACCUM_BUFFER_BIT

Page 101: OpenGL – Uma abordagem prática e objetiva

18.2 Color Buffer

GL_COLOR_BUFFER_BIT

Page 102: OpenGL – Uma abordagem prática e objetiva

Função glClearColor

void glClearColor(GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha) --> especifica qual cor será usada para limpar o color buffer

Page 103: OpenGL – Uma abordagem prática e objetiva

18.3 Depth Buffer

GL_DEPTH_BUFFER_BIT void glClearDepth(GLclampf

depth), onde depth (profundidade) varia de 0.0 (mín) a 1.0 (máx)

Page 104: OpenGL – Uma abordagem prática e objetiva

18.4 Stencil Buffer

GL_STENCIL_BUFFER_BIT

Page 105: OpenGL – Uma abordagem prática e objetiva

18.5 Accumulation Buffer

GL_ACCUM_BUFFER_BIT

Page 106: OpenGL – Uma abordagem prática e objetiva

19 – Seleção de Objetos

Considerações Iniciais Modo de Seleção Modo de Feedback

Page 107: OpenGL – Uma abordagem prática e objetiva

Introdução

Seleção de objetos

Page 108: OpenGL – Uma abordagem prática e objetiva

Modo de Seleção

void glSelectBuffer(GLsizei size, GLuint *buffer)

pilha de nomes GLint glRenderMode(GLenum

mode)onde mode: GL_RENDER, GL_SELECT

ou GL_FEEDBACK

Page 109: OpenGL – Uma abordagem prática e objetiva

Modo de Seleção

void glInitNames(void) void glPushName(GLuint name)

Page 110: OpenGL – Uma abordagem prática e objetiva

Modo de feedback void glFeedbackBuffer(GLSizei size, GLenum

type, GLfloat *buffer),

onde:size: indica o tamanho do vetortype: informa o tipo da informação

desejadabuffer: aponta ao inicio do vetor

Page 111: OpenGL – Uma abordagem prática e objetiva

20 – OpenGL e Outras linguagens de Programação

C++ Java C# Python

Page 112: OpenGL – Uma abordagem prática e objetiva

21 – Programação de Shaders

OpenGL Shading Language

Page 113: OpenGL – Uma abordagem prática e objetiva

Apêndice A – Guia Rápido de Referência A.1 A.2 A.3 A.4 A.5 A.6 A.7 A.8 A.9

Page 114: OpenGL – Uma abordagem prática e objetiva

Apêndice A – Guia Rápido de Referência A.10 A.11 A.12 A.13 A.14 A.15 A.16 A.17 A.18

Page 115: OpenGL – Uma abordagem prática e objetiva

Apêndice B – Biblioteca de Estruturas e Funções Auxiliares

B.1 B.2 B.3 B.4 B.5

Page 116: OpenGL – Uma abordagem prática e objetiva

A.1 Funções GLUT de Inicialização

Page 117: OpenGL – Uma abordagem prática e objetiva

Apêndice B – Biblioteca de Estruturas e Funções Auxiliares

B.6 B.7 B.8 B.9