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 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 OpenGL’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
• 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)
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
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 OpenGL é:
– gl<Command>[234][sifd][v] (args... )
– s - short, i - integer, f - float, d- double
– v – ponteiro para um array
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();
• 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 : glFlush();
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();

aula sobre software teorica00 opengl.ppt

  • 1.
  • 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.
    •Implementações • Para Sparcse Linux PCs tem o Mesa, uma implementação livremente disponível • SGIs tem implementações SGI’s ~ 1500% mais rápidas.
  • 4.
    Como funciona? • Umconjunto 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
  • 5.
    O que elecobre? • Primitivas OpenGL’s são pontos, linhas e polígonos • Não faz “windowing”. Use Xforms (FLTK?)... (ou outro qualquer).
  • 6.
    Acertando uma janelade 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)
  • 7.
    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
  • 8.
    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 OpenGL é: – gl<Command>[234][sifd][v] (args... ) – s - short, i - integer, f - float, d- double – v – ponteiro para um array
  • 9.
    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(); • That’s it .
  • 10.
    Truques especiais • Nolugar 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();
  • 11.
    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();