Trabalho de tcc

Disponível somente no TrabalhosFeitos
  • Páginas : 10 (2357 palavras )
  • Download(s) : 0
  • Publicado : 12 de março de 2012
Ler documento completo
Amostra do texto
Universidade Federal de Santa Maria Departamento de Eletrônica e Computação Prof. Cesar Tadeu Pozzer Disciplina: Computação Gráfica pozzer@inf.ufsm.br 09/06/2011

OpenGL – Conceitos Básicos
1 Histórico
Antes do surgimento de APIs gráficas o Eficiência: Programação em C + Assembly o Uso exclusivo da CPU APIs gráficas 3D antigas o PHIGS (Programmer's Hierarchical Interactive Graphics System)[1,2] o GKS (Graphical Kernel System) [3]. APIs gráficas atuais o OpenGL o Direct3D o Comparativo entre APIs Placas aceleradoras

2 Características da API OpenGL
É uma interface de software (API) com o hardware gráfico (Ver arquivo opengl.h) escrita em linguagem C. Na versão 3.0 da API, 112 funções tornaram-se deprecated, restando 126 funções ativas. A lista das funções pode ser encontrada em:http://www.opengl.org/sdk/docs/man/xhtml/ (OpenGL Version 2.1 - Desatualizada) ou http://pyopengl.sourceforge.net/documentation/manual-3.0/index.xhtml (OpenGL version 3.0.1 - Atualizada). Veja http://pyopengl.sourceforge.net/documentation/deprecations.html para mais detalhes. Mesmo com a remoção das funções, ainda é valido estudar a API antiga, pois facilita o entendimento da nova versão do OpenGL.Baseado em máquina de estados o glClearColor() o glMatrixMode() o glEnable()/glDisable() o glPolygonMode() o glColor3f() Multi-plataforma; Arquitetura bem definida; Não oferece comandos para gerenciamento de janelas, nem comandos para geração de modelos 3D complexos. Para definição de janelas, pode-se utilizar funções da biblioteca auxiliar GLUT (GL Utility Toolkit); Conjunto de primitivasgeométricas simples; o Básicas: ponto, linha, superfície poligonal (triângulo, quadrado, polígono convexo) o Objetos 3D: Superfícies Bézier, quádricas, esferas, poliedros.

1

3 Arquitetura da API OpenGL
Uma aplicação desenvolvida em OpenGL pode acessar a API de forma direta ou indireta, como mostrado no seguinte diagrama. Pode haver uma API abstrata sobre o OpenGL que pode tornar a programação emmais alto nível. Pode-se citar como exemplos o Java3D, GLUT, dentre outros. A aplicação do usuário não pode conversar diretamente com o hardware da placa gráfica.

Aplicação API Abstrata OpenGL API Software e Hardware Dispositivo de Saída Dispositivo de Entrada

Caso um computador não tiver placa gráfica, ou tiver uma placa gráfica antiga que não oferece muitos recursos, cabe ao driver OpenGLrealizar as funcionalidades não oferecidas. Obviamente o driver executa na CPU e isso comprometerá o desempenho da aplicação como um todo. Um programa OpenGL consiste de um laço infinito onde a cada passo a aplicação, geralmente escrita em linguagem C, passa para a API um conjunto de dados que devem ser processados. Esses dados mudam à medida que o usuário interage com a aplicação. Aplicaçãousuário OpenGL: HW e SW Monitor

Dados: Vértices Imagens Transformações Laço renderização

Pipeline Gráfico: Geometria Rasterização Shaders

Imagem Gerada

Programação em OpenGL x programação em C Antes dos dados serem exibidos, eles são armazenados em buffers. O OpenGL permite a especificação de 1 ou 2 conjuntos de buffers (Single ou Double Buffer). O monitor lê os dados do buffer corrente nomomento. O uso de dois buffers se faz necessário para evitar que as animações fiquem cortadas ao meio, visto que o monitor pode exibir uma cena animada que está sendo gerada. Usando buffer duplo, quando um buffer está concluído, o OpenGL passas a escrever no outro, liberando o pronto para ser exibido (ver comando glutSwapBuffers()). OpenGL: HW e SW Buffer 1 Pipeline Gráfico Buffer 2 Imagem GeradaMonitor

2

4 Instalação do OpenGL e Bibliotecas Auxiliares
O OpenGL é disponibilizado via uma API. Dois arquivos definem esta API: gl.h e glu.h. No arquivo gl.h estão definidas as funções incorporadas na API e no arquivo glu.h funções auxiliares (GL Utility) do OpenGL. As funções mias usuais da GLU incluem definição de matriz de projeção ortográfica 2D (gluOrtho2D()), função para...
tracking img