Buscar

Introdução à Computação Gráfica

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 32 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 32 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 32 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

Computação Gráfica!
TCC-00291!
Assunto: Primeiros passos!
Visão geral!
Pipeline simplificado!
2!
GPU Data Flow!Application! Framebuffer!
Processamento 
de vértices! Rasterização!
Processamento 
de fragmento!
Vertex 
Shader!
Fragment 
Shader!
Visão geral!
Programa básico!
3!
Escrever programas OpenGL modernos consiste em, !
essencialmente:!
•  Escrever shaders;!
•  Criar buffers e carregar dados;!
•  “Conectar” dados e variáveis dos shaders; e!
•  Renderizar.!
Visão geral!
Programa básico!
4!
Uma aplicação OpenGL precisa de um lugar para 
renderizar a informação processada.!
Visão geral!
Programa básico!
5!
Uma aplicação OpenGL precisa de um lugar para 
renderizar a informação processada.!
!
Normalmente, utiliza-se uma janela do sistema.!
•  Necessidade de comunicação com a API do 
sistema de janelas.!
•  Cada sistema de janela tem uma interface 
diferente… !
•  Opções: GLFW (C++), LWJGL(Java), …!
!
Obs: Veremos exemplos em Java adiante.!
Visão geral!
Representação de geometria!
6!
Objetos geométricos são representados através de vértices.!
Visão geral!
Representação de geometria!
7!
Objetos geométricos são representados através de vértices.!
!
Def.: Um vértice é uma coleção de atributos.!
!
•  Coordenadas no espaço;!
•  Cores;!
•  Coordenadas de textura;!
•  Vetor normal; e!
•  …!
Visão geral!
Representação de geometria!
8!
Objetos geométricos são representados através de vértices.!
!
Def.: Um vértice é uma coleção de atributos.!
!
•  Coordenadas no espaço;!
•  Cores;!
•  Coordenadas de textura;!
•  Vetor normal; e!
•  …!
!
Obs.: As coordenadas do ponto são armazenadas usando 4!
 coordenadas. (Voltaremos a este assunto!!)
Visão geral!
Representação de geometria!
9!
Os dados relacionados aos vértices devem ser 
armazenados em arrays, chamados de “vertex buffer 
objects”, ou VBOs.!
Visão geral!
Representação de geometria!
10!
Os dados relacionados aos vértices devem ser 
armazenados em arrays, chamados de “vertex buffer 
objects”, ou VBOs.!
VBOs devem ser organizados em arrays, chamados de 
“vertex array objects”, ou VAOs.!
Visão geral!
Representação de geometria!
11!
Os dados relacionados aos vértices devem ser 
armazenados em arrays, chamados de “vertex buffer 
objects”, ou VBOs.!
VBOs devem ser organizados em arrays, chamados de 
“vertex array objects”, ou VAOs.!
As informações contidas nos VBOs devem ser 
organizadas de acordo com as primitivas geométricas 
que representam.!
Visão geral!
Representação de geometria!
12!
GL_POINTS!
GL_LINES!
GL_LINE_STRIP!
GL_LINE_LOOP!
GL_TRIANGLES!
GL_TRIANGLE_STRIP!
GL_TRIANGLE_FAN!
Visão geral!
Representação de geometria!
13!
Primitiva Descrição #verts
GL_POINTS Renderiza um ponto por vértice.! n!
GL_LINES Renderiza uma linha para cada par de vértice.! 2n!
GL_LINE_STRIP Renderiza uma linha para cada novo vértice, conectando com o anterior.! n+1!
GL_LINE_LOOP Renderiza todos os vértices em um loop de segmentos.! n!
GL_TRIANGLES Renderiza um triângulo para cada trio de vértices.! 3n!
GL_TRIANGLE_STRIP Renderiza um triângulo para cada novo vértice, conectado com os dois anteriores.! n+2!
GL_TRIANGLE_FAN Renderiza um triângulo para cada novo par de vértices, usando o vértice inicial.! n+2!
Hello World!!
14!
Hello World!
Desenhando um triângulo!
15!
Desenharemos um triângulo com cores distintas em 
seus vértices.!
Hello World!
Desenhando um triângulo!
16!
Desenharemos um triângulo com cores distintas em 
seus vértices.!
!
!
Objetivos:
•  Manipular dados de vértices;!
•  Organizar dados para serem renderizados; e!
•  Construir primitivas geométricas!
Hello World!
Desenhando um triângulo!
17!
Primeiro passo:!
Determinar a quantidade de memória necessária.
Hello World!
Desenhando um triângulo!
18!
Primeiro passo:!
Determinar a quantidade de memória necessária.
Posição:!
1 triângulo x !
3 vértices por triângulo x!
4 coordenadas por vértice!
XYZW!
Hello World!
Desenhando um triângulo!
19!
Primeiro passo:!
Determinar a quantidade de memória necessária.
Cores:!
1 triângulo x !
3 vértices por triângulo x!
4 canais por vértice!
RGBA!
Hello World!
Desenhando um triângulo!
20!
Segundo passo:!
Antes de inicializar os VBOs, precisamos criar os dados
Hello World!
Desenhando um triângulo!
21!
Terceiro passo:!
Criação e inicialização dos VBOs
Hello World!
Desenhando um triângulo!
22!
Terceiro passo:!
Criação e inicialização dos VBOs
Qual a função do método flip()?!
http://download.java.net/jdk7/archive/b123/docs/api/java/nio/Buffer.html!
Hello World!
Desenhando um triângulo!
23!
Terceiro passo:!
Criação e inicialização dos VBOs
Hello World!
Desenhando um triângulo!
24!
Terceiro passo:!
Criação e inicialização dos VBOs
http://www.opengl.org/sdk/docs/man/xhtml/glBindBuffer.xml!
glBindBuffer ?!
Hello World!
Desenhando um triângulo!
25!
Terceiro passo:!
Criação e inicialização dos VBOs
https://www.opengl.org/sdk/docs/man4/xhtml/glBufferData.xml!
glBufferData ?!
Hello World!
Desenhando um triângulo!
26!
Quarto passo:!
Criação e inicialização dos VAOs
Exercício: consultar a documentação dos métodos.!
Hello World!
Desenhando um triângulo!
27!
Quinto passo:!
Renderização dos VAOs.
Obs:
•  Deve ser chamado depois da definição dos shaders.
•  É normalmente invocado no callback de display.
Hello World!
Desenhando um triângulo!
28!
Quinto passo:!
Renderização dos VAOs.
Obs:
•  Deve ser chamado depois da definição dos shaders.
•  É normalmente invocado no callback de display.
glDrawArrays?!
http://www.opengl.org/sdk/docs/man4/xhtml/glDrawArrays.xml!
Hello World!
Desenhando um triângulo!
29!
Escondemos parte do 
código em uma classe 
auxiliar:!
!
ShaderProgram.java 
 
Em breve, veremos seu 
conteúdo.!
Hello World!
Desenhando um triângulo!
30!
Escondemos parte do 
código em uma classe 
auxiliar:!
!
ShaderProgram.java 
 
Em breve, veremos seu 
conteúdo.!
!
Código completo:
Ver página do curso.!
Hello World!
Desenhando um triângulo!
31!
Códigos OpenGL escritos em 
o u t r a s l i n g u a g e n s s ã o 
análogos.!
!
C++: 
http://openglbook.com/the-book/chapter-2-
vertices-and-shapes/!
!
Python:
h t t p : / / p y o p e n g l . s o u r c e f o r g e . n e t /
documentation/index.html!
!
JavaScript:
http://www.khronos.org/webgl/wiki/Main_Page!
Computação Gráfica!
TCC-00291!
Assunto: Primeiros passos!

Continue navegando