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

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

OpenGL Computação Gráfica. O que é OpenGL? Uma linguagem de programação gráfica de baixo nível Projetada para gráfico interativo 2D e 3D Uma interface.

Apresentações semelhantes


Apresentação em tema: "OpenGL Computação Gráfica. O que é OpenGL? Uma linguagem de programação gráfica de baixo nível Projetada para gráfico interativo 2D e 3D Uma interface."— Transcrição da apresentação:

1 OpenGL Computação Gráfica

2 O que é OpenGL? Uma linguagem de programação gráfica de baixo nível Projetada para gráfico interativo 2D e 3D Uma interface para o hardware gráfico Descendente do GL Cínicos dizem que é GL com variáveis de nomes mais longos e sem gerenciamento de janela

3

4

5

6

7 Implementações Para Sun Sparcs e Linux PCs tem o Mesa, uma implementação livremente disponível SGIs tem implementações SGIs ~ 1500% mais rápidas.

8 Como funciona? Um conjunto de variáveis de estado como cor, parâmetros de visualização corrente (transformações), largura de linha, propriedades de materiais, etc... Altere estas variáveis e então se aplicam a todo comando de desenho subseqüente. Variáveis de estado possuem valores default no início (ex: Shading = FLAT).

9 Máquina de estados glEnable() or glDisable(). Saber o estado corrente de uma variável: glGetBooleanv(), glGetDoublev(), glGetFloatv(), glGetIntegerv(), glGetPointerv(), or glIsEnabled() Mais específicas: glGetLight*()

10 O que ele cobre? Primitivas OpenGLs são pontos, linhas e polígonos Não faz windowing. Use Xforms (FLTK?)... (ou outro qualquer). Biblioteca Glut (formalmente não faz parte do OpenGL, mas vem com o pacote) pode ser usada para gerenciamento de janelas, menus, sliders, controle de mouse, teclado, etc.

11 Pipeline de renderização

12 Pipeline Dados geométricos (vertices, lines, and polygons) seguem o caminho que inclui evaluators e per- vertex Dados raster ((pixels, images, and bitmaps) são tratados de forma diferente. Ambos tipos seguem os mesmos passos finais (rasterization e per-fragment operations) antes que os dados raster finais sejam escritos no frame- buffer.

13 Display Lists All data, whether it describes geometry or pixels, can be saved in a display list for current or later use. Quando pronto para renderizar, envia tudo de uma vez.

14 Evaluators Evaluators provide a method to derive the vertices used to represent the surface from the control points. The method is a polynomial mapping, which can produce surface normal, texture coordinates, colors, and spatial coordinate values from the control points,

15 Per Vertex Operation Converte Vértices em Primitivas Multiplicação por matrizes para gerar projeção Texture Lighting

16 Primitive Assembly Clipping Rersultados: transformed and clipped vertices with related color, depth, and sometimes texture-coordinate values and guidelines for the rasterization step.

17 Pixel Operations Empacotar no formato devido Escalar, guiar, e processar por um pixmap Resultado escrito em memória de textura ou enviado para a rasterização

18 Texture assembly Aplicação de texturas Resultado é a montagem da textura na cena

19 Rasterização Rasterization is the conversion of both geometric and pixel data into fragments. Each fragment square corresponds to a pixel in the framebuffer. Color and depth values are assigned for each fragment square.

20 Fragment Operations Texturing fog calculations scissor test, the alpha test, the stencil test, and the depth-buffer test blending, dithering, logical operation, and masking by a bitmask Resultado é o pixel a ser finalmente escrito

21 Acertando uma janela de trabalho Coordenadas para os extremos glOrtho(left, right, bottom, top, near, far); e.g., glOrtho(0, 100, 0, 100, -1, 1); near & far devem ser sempre -1 & 1 (pelo menos por enquanto)

22 Limpando uma janela glClearColor(r, g, b, a); a is the alpha channel; set this to 0. glClear(GL_COLOR_BUFFER_BIT); glClear pode limpar outros buffers assim também, mas usamos por enquanto apenas o buffer de cor

23 Estabelecendo uma cor Todas as primitivas subsequentes serão desta cor. Modelo de cor Red, Green & Blue Components são 0-1 (normalizados)

24 Sintaxes dos comandos Nota: convenção de nomes OpenGL é: –gl [234][sifd][v] (args... ) –s - short, i - integer, f - float, d- double –v – ponteiro para um array Constantes: começam com GL_

25 Sufixos SufTypeC-Language TypeOpenGL Type b8-bit integersigned charGLbyte s16-bit integershortGLshort i32-bit integerint or longGLint, GLsizei f32-bit fpfloatGLfloat, GLclampf d64-bit fpdoubleGLdouble, GLclampd

26 Sufixo ub8-bit unsigned integer unsigned charGLubyte, GLboolean us16-bit unsigned integer unsigned shortGLushort ui32-bit unsigned integer unsigned int or unsigned long GLuint, GLenum, GLbitfield

27 Desenhando um polígono glBegin(GL_POLYGON); Envie então os pontos construindo o polígono glVertex2f(x0, y0); glVertex2f(x1, y1); glVertex2f(x2, y2)... Diga que o polígono terminou glEnd(); Thats it.

28 Truques especiais No lugar de GL_POLYGON: –GL_POINTS: plot points –GL_LINES: draw lines –GL_LINE_LOOP: framed polygon Gouraud Shading: –Mude a cor entre cada comando e GL fará um shading suave entre as cores dos diferentes vértices. Fazendo Flush do pipeline : glFlush();

29 Desenhando uma caixa MakeWindow("Box", 400, 400); /*Sua rotina de criar janela*/ glOrtho(-1, 1, -1, 1, -1, 1); glClearColor(0.5, 0.5, 0.5, 1); glClear(GL_COLOR_BUFFER_BIT); glColor3f(1.0, 0.0, 0.0); glBegin(GL_POLYGON); /* or GL_LINES or GL_POINTS... */ glVertex2f(-0.5, -0.5); glVertex2f( 0.5, -0.5); glVertex2f( 0.5, 0.5); glVertex2f(-0.5, 0.5); glEnd();

30 Trabalho de Laboratório Dia 28/03/06 –Implementar diretamente os exemplos, sem modificar, e ver seus efeitos. Tempo estimado: 15 minutos. Comente sucintamente no relatório cada função ou bloco de comandos que voce entender (consulte o manual do red book para isso). Example 1-2 : Simple OpenGL Program Using GLUT: hello.c Example 1-3 : Double-Buffered Program: double.c –Modificar exemplo 1-3 de modo que o quadrado gire no sentido oposto (tempo estimado: 5 minutos).


Carregar ppt "OpenGL Computação Gráfica. O que é OpenGL? Uma linguagem de programação gráfica de baixo nível Projetada para gráfico interativo 2D e 3D Uma interface."

Apresentações semelhantes


Anúncios Google