1 / 57

Adônis Tavares Gustavo Ferraz Hugo Simões Humberto Pacheco Leandro Reinaux Nivan Ferreira

Adônis Tavares Gustavo Ferraz Hugo Simões Humberto Pacheco Leandro Reinaux Nivan Ferreira Rodrigo Mateus. Agenda. O que é OpenGL Porque OpenGL foi criado História Utilização no mercado Características de OpenGL Pipeline Bibliotecas Análise de Competidores. O que é OpenGL?.

elysia
Télécharger la présentation

Adônis Tavares Gustavo Ferraz Hugo Simões Humberto Pacheco Leandro Reinaux Nivan Ferreira

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Adônis Tavares Gustavo Ferraz Hugo Simões Humberto Pacheco Leandro Reinaux Nivan Ferreira Rodrigo Mateus

  2. Agenda • O que é OpenGL • Porque OpenGL foi criado • História • Utilização no mercado • Características de OpenGL • Pipeline • Bibliotecas • Análise de Competidores

  3. O que é OpenGL? • Open Graphics Library • É a especificação de uma API para programação em computação gráfica. • Em outras palavras, OpenGL define um conjunto de funções fazer aplicações em computação gráfica.

  4. O que não é OpenGL? • Não é uma linguagem de programação • Não tem comandos para • criação e gerenciamento de janelas • lidar com entradas do usuário • Não tem comandos de alto-nível para • descrição de objetos 3D

  5. Porque OpenGL foi criado? • Desenvolver aplicativos gráficos era difícil • Falta de padronização • Esforços duplicados • Era necessário uma plataforma • Abstração de hardware • Portável • Fácil de usar

  6. História • PHIGS – anos 80 • IRIS GL – final dos anos 80 pela SGI • OpenGL é criado em 1992 – mantido pela OpenGL ARB (ArchitectureReviewBoard) • Evans&Sutherland • HP • IBM • Intel • Matrox • NVIDIA • Sun • SiliconGraphics (SGI) • Atualmente, parte do KhronosGroup

  7. História • OpenGL 2.0 • 3DLabs • OpenGLShading Language • OpenGL 2.1 • OpenGL Shading Language revision 1.20 • sRGB texture formats • OpenGL 3.0 • Criação de objetos assíncrona

  8. Utilizações no mercado Ferramentas CAD Moonlight Creator (GPL) IBM/Dassault CATIA

  9. Modelagem e Desenho NewTek LightWave 3D

  10. Visualização e Simulação

  11. Interface com o Usuário

  12. Hardware-Assisted Rendering glutrad (radiosity, hemicube approximation)

  13. Animação e Efeitos Especiais Vídeo do trem do filme “The Prototype”

  14. Jogos Doom 3 Quake 3 Call of Duty NeverWinter Nights

  15. Características

  16. GL_LINES GL_POLYGON GL_LINE_STRIP GL_LINE_LOOP GL_POINTS GL_TRIANGLES GL_QUADS GL_TRIANGLE_FAN GL_TRIANGLE_STRIP GL_QUAD_STRIP Primitivas Geométricas de OpenGL • Todas primitivas geométricas são especificadas por vértices

  17. Uma aplicação OpenGL é uma MEF • Uma aplicação OpenGL é uma máquina de estados. • A cor corrente é uma variável de estado. Há muitas outras! • Todas as variáveis de estado possuem valores default • O efeito de muitas delas pode ser habilitado e desabilitado

  18. Forma geral das instruções • De forma geral: gl{nome da função}{número de argumentos}{tipo dos argumentos} (lista de argumentos); Exemplos: • glColor3f => gl Color 3 f • glLightfv => gl Light fv Nome da Função Número de argumentos Tipo dos argumentos Nome da função Tipo dos argumentos(float vector)

  19. Forma das instruções • Infelizmente, nem todas as funções seguem fielmente esse padrão: • glFlush() ,não recebe argumentos. • glClearColor(), só recebe um tipo de argumento. • Conclusão: Usar funções em OpenGL é fácil!

  20. Forma geral de um programa OpenGL • Funções presentes em todo programa OpenGL: • main(): • Ponto de início da execução; • Inicializa a janela e aspectos da geração de imagens(número de buffers de armazenamento e sistema de representação de cores); • Especifica a função callback de desenho.

  21. Forma geral de um programa OpenGL • void setupRC(void): • Inicializa aspectos de rendering(cor de desenho atual e cor de funto); • void renderScene(void): • Função executada sempre que for necessário exibir a imagem. • Podem existir outras funções callback • Funções que detectam eventos de teclado e mouse.

  22. Alguns exemplos #include <whateverYouNeed.h> main() { InitializeAWindowPlease(); glClearColor(0.0, 0.0, 0.0, 0.0); glClear(GL_COLOR_BUFFER_BIT); glColor3f (1.0, 1.0, 1.0); glOrtho(0.0, 1.0, 0.0, 1.0, -1.0, 1.0); glBegin(GL_POLYGON); glVertex3f (0.25, 0.25, 0.0); glVertex3f (0.75, 0.25, 0.0); glVertex3f (0.75, 0.75, 0.0); glVertex3f (0.25, 0.75, 0.0); glEnd(); glFlush(); UpdateTheWindowAndCheckForEvents(); } Resultado

  23. Entendendo as funções básicas • glClearColor(r,g,b,a): Especifica cor utilizada para limpar a tela(o valor a é utilizado em efeitos como transparência); • glClear(buffer): Limpa um ou mais buffer’s, no exemplo GL_COLOR_BUFFER_BIT(onde a imagem está armazenada internamente); • glColor3f(r,g,b): Determina a cor que será utilizada para o desenho(linhas e preenchimento); • glOrtho:

  24. Entendendo as funções básicas • glBegin(Const)...glEnd(): Conjunto utilizado para desenhar formas Const=GL_POLYGON. • glVertex3f: Especifica os vétices do objeto que será desenhado • glFlush: Força a execução de comandos ainda não executados acontecer.

  25. Pipeline

  26. Display Lists • Comandos OpenGL armazenados para serem executados depois • Comandos executados na ordem em que foram emitidos • Aumenta a performance • Redesenhar geometria ou mudar de estados várias vezes

  27. Vertex Operation • Vértices e coordenadas normal transformadas por GL_MODELVIEW • Pode ser demorada • Coordenadas da textura são geradas e transformadas • O cálculo da iluminação atualiza a cor do vértice

  28. Primitive Assembly • Primitivas transformadas pela matriz de projeção e recortadas pelo volume de visualização • Divisão perspectiva por w • Viewport e depth (coordenada z) • Culling test • Primitivas geométricas completas

  29. Pixel Transfer Operation • Scaling, bias, mapping e clamping • Pixels da memória do sistema • Armazenados na memória de textura ou enviados para a rasterização • Pixels do frame buffer • Retornam para um array na memória do sistema

  30. Texture Memory • Imagens de textura são carregadas na memória de textura e aplicadas aos objetos geométricos • Acelera a performance de texturas • Texturas aumentam o realismo dos objetos

  31. Rasterization • Dados geométricos e pixels em fragmentos • Fragmentos: arrays retangulares contendo cor, depth, line width, point size e cálculos antialiasing (GL_POINT_SMOOTH, GL_LINE_SMOOTH, GL_POLYGON_SMOOTH) • Pixels do interior do polígono são preenchidos (GL_FILL) • Cada fragmento corresponde a um pixel no frame buffer

  32. Fragment Operation • Série de operações que podem alterar ou descartar fragmentos • Texture element generation • Fog calculations • Fragment Tests: • Scissor test -> glScissor() • Alpha test -> glAlphaFunc() • Stencil test -> glStencilFunc(), glStencilOp() • Depth test -> glDepthFunc() • Blending, Dithering, Logical Operation, Masking (Bitmask)

  33. Feedback • glGet*(), glIsEnabled(): informações e estados atuais • glReadPixels(): dados dos pixels do frame buffer • glRenderMode(GL_FEEDBACK): dados completos dos vértices transformados • glCopyPixels(): copia os dados do pixel para outro frame buffer

  34. Resumo Visual

  35. Transformações • Composição de matrizes: glMatrixMode(), glLoadIdenty, glPushMatrix(), glPopMatrix(), • Projeção • Ajusta a lente da câmera virtual • Visualização • Definem posição e orientação do volume de visualização (frustum) no universo • Modelagem • Movem os objetos • Viewport • Modificam a janela de visualização

  36. Iluminação e sombreamento • Modelos simples com realismo – eficiência • Modelo de iluminação de Phong • Não modela sombras, reflexão direta e indireta, refração

  37. Fontes de Luz • Considerada pontual • Intensidade constante • Representada por um valor RGB • Componentes • Ambiente (GL_AMBIENT) • Difusa (GL_DIFFUSE) • Especular (GL_SPECULAR) • glLight()

  38. Tipos de Luz • Pontual • Raios emanam uniformemente em todas as direções • Direcional • Raios apenas em uma direção • SpotLight • Raios emitidos na forma de um cone apontando para uma determinada direção

  39. Material • Cor depende da porcentagem de luz vermelha, verde e azul incidente que ele reflete • Componentes Ambiente, Difusa, Especular, Emissiva • glMaterial()

  40. Iluminação Local • Dois modelos: • Flat Shading • Gouraud Shading

  41. Flat Shading • Não apresenta variações ao longo do polígono. • Com a normal de cada vértice é obtida a normal do polígono. • glShadeModel (GL_FLAT);

  42. Gouraud Shading • Apresenta variações de cor no polígono. • Calcular a intensidade nos vértices, Interpolação destas intensidades • glShadeModel (GL_SMOOTH);

  43. Bibliotecas • Biblioteca Padrão • OpenGL32 em Windows • GL em unix/linux (libGL.a) • Opengl Utility library (GLU) • Ligação com Sistema de Janelas • GLX para X Windows System, WGL para Windows, CGL para Macintosh • Multi-plataforma: GLUT, GLUI, SDL, FLTK, QT, ...

  44. Bibliotecas • Opengl Utility library (GLU) • Funções de desenho de alto nível desenvolvidas com base nas funções primitivas de OpenGL. • Normalmente é obtida junto com o OpenGL no mesmo pacote. • Mipmaps, desenho de superfícies quádricas, NURBS • Ex: gluOrtho2D();

  45. Bibliotecas • Opengl Utility Toolkit (GLUT) • Interface com o sistema de janelas de qualquer ambiente • Provê meios para construir interfaces gráficas como menus pop-up e suporte para dispositivos de entrada (teclado, mouse, joystick, trackball) • Eventos (Event Callback Function)

  46. Bibliotecas • OpenGL User Interface Library (GLUI) • Baseada em GLUT • Independente de ambiente • Adição de buttons, checkboxes, radio buttons, and spinners • Extremamente fácil de se utilizar

  47. Organização do Software

  48. Análise de competidores • Cg: C for Graphics • Desenvolvido pela NVIDIA em 2002. • Baseada na linguagem C. • Usada para gerar gráfico em tempo real em GPU programáveis. • Não dá suporte a superfícies e a iluminação (Como o OpenGL).

  49. Análise de competidores • VRML: Virtual Reality Modeling Language • Usada para descrever mundos interativos 3D na Internet. • Desenvolvida pela SGI (Silicon Graphics Inc) em 1995. • Unificar e padronizar a tecnologia Web para gerar mundos 3D.

  50. Análise de competidores • Direct3D (componente do DirectX) • É utilizada na plataforma Windows. • Consoles Xbox e o Dreamcast possui versão embarcada do Direct3D. • Linguagem de alto nível de modelagem 3D. • Possui os mesmos objetivos do OpenGL

More Related