Open GL Computao Grfica O que Open GL
- Slides: 11
Open. GL Computação Gráfica
O que é Open. GL? • Uma linguagem de programação gráfica de baixo nível • Projetada para gráfico interativo 2 D e 3 D • 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
• Implementações • Para Sparcs e Linux PCs tem o Mesa, uma implementação livremente disponível • SGIs tem implementações SGI’s ~ 1500% mais rápidas.
Como funciona? • Um conjunto de variáveis de estado como cor, parâmetros de visualização corrente, largura delinha, propriedades de materiais, etc. . . • Estas variáveis então se aplicam a todo comando de desenho subsequente • Variáveis de estado possuem valores default no início
O que ele cobre? • Primitivas Open. GL’s são pontos, linhas e polígonos • Não faz “windowing”. Use Xforms (FLTK? ). . . (ou outro qualquer).
Acertando uma janela de trabalho • • Coordenadas para os extremos gl. Ortho(left, right, bottom, top, near, far); e. g. , gl. Ortho(0, 100, -1, 1); near & far devem ser sempre -1 & 1 (pelo menos por enquanto)
Limpando uma janela • • gl. Clear. Color(r, g, b, a); a is the alpha channel; set this to 0. gl. Clear(GL_COLOR_BUFFER_BIT); gl. Clear pode limpar outros buffers assim também, mas usamos por enquanto apenas o buffer de cor
Estabelecendo uma cor • Todas as primitivas subsequentes serão desta cor. • Modelo de cor Red, Green & Blue • Components são 0 -1 (normalizados) • Nota: convenção de nomes Open. GL é: – gl<Command>[234][sifd][v] (args. . . ) – s - short, i - integer, f - float, d- double – v – ponteiro para um array
Desenhando um polígono • • gl. Begin(GL_POLYGON); Envie então os pontos construindo o polígono gl. Vertex 2 f(x 0, y 0); gl. Vertex 2 f(x 1, y 1); gl. Vertex 2 f(x 2, y 2). . . Diga que o polígono terminou gl. End(); That’s it .
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 : gl. Flush();
Desenhando uma caixa • Make. Window("Box", 400); /*Sua rotina de criar janela*/ gl. Ortho(-1, 1, -1, 1); gl. Clear. Color(0. 5, 1); gl. Clear(GL_COLOR_BUFFER_BIT); gl. Color 3 f(1. 0, 0. 0); gl. Begin(GL_POLYGON); /* or GL_LINES or GL_POINTS. . . */ gl. Vertex 2 f(-0. 5, -0. 5); gl. Vertex 2 f( 0. 5, 0. 5); gl. Vertex 2 f(-0. 5, 0. 5); gl. End();