Grupo: Antônio Inocêncio Francisco Ícaro Filipe Araújo Guilherme Barreto Leonardo Vilaça Márcio Dias Thiago Gomes
O que é OpenGL? Open Graphics Library Uma interface do software com o hardware gráfico Camada de abstração entre o programa de aplicação e o hardware OpenGL não é uma linguagem de programação, é uma poderosa e sofisticada API (Application Programming Interface) para criação de aplicações gráficas 2D e 3D.
Projetada para aplicações gráficas interativas 2D e 3D Independente do sistema operacional Permite criar programas interativos que produzem imagens coloridas de objetos em movimento Opção independente de plataforma de hardware Características
Padrão gráfico para aplicações industriais, entretenimento, visualização, etc. Opção independente de plataforma de hardware Compete com DirectX (Direct3D) Utilizado para implementar conceitos como Realidade Virtual e Aumentada Importância
Primitivas geométricas pontos, linhas e polígonos Primitivas de Imagens Não gerencia eventos de controle (mouse, exibição, teclado, etc) Funcionamento
Primitivas Geométricas Todas primitivas geométricas são especificadas por vértices GL_POLYGON GL_TRIANGLE_STRIP GL_TRIANGLE_FAN GL_POINTS GL_LINES GL_LINE_LOOP GL_LINE_STRIP GL_TRIANGLES GL_QUADS GL_QUAD_STRIP
glVertex3fv( v ) Numero de Componentes Tipo de Dados Vector 2 - (x,y) 3 - (x,y,z) 4 - (x,y,z,w) b - byte ub - unsigned byte s - short us - unsigned short i - int ui - unsigned int f - float d - double omit “v” for scalar form glVertex2f( x, y ) Formato dos Comandos em OpenGL
AGL, GLX, WGL “cola” entre OpenGL e o sistema de janelas GLU (OpenGL Utility Library) parte de OpenGL NURBS, tessellators, quadrics, etc GLUT (Graphics Library Utility Toolkit) API para gereciamento de janelas portável não é parte oficial de OpenGL APIs Relacionadas
Biblioteca de software que se integra com OpenGL (autor: Mark J. Kilgard - SGI) Habilita acesso aos eventos do sistema operacional necessários em programas interativos mouse, teclado, display, etc. GLUT
Fácil de Programar Independente do sistema de janelas nativo* Programas de tamanho pequeno e médio Não apresenta muitos recursos de interface (apenas menus) Programação orientada a eventos* Filisofia de Projeto de GLUT
Iniciam com prefixo glut (0,0) canto superior esquerdo da janela Incluir diretiva #include Inicialização glutInit( int *argc, char **argc) glutInitWindowPosition glutInitWindowSize Rotinas
Processamento de Eventos void glutMainLoop( void ) Gerenciamento de janelas int glutCreateWindow( char *name ) void glutPostRedisplay( void ) Registro de rotinas de callback glutDisplayFunc glutReshapeFunc glutKeyboardFunc glutMouseFunc Objetos Pré-definidos glutSolidSphere, glutWireCube, glutSolidTeapot Rotinas
Configura e cria a janela Initializa estado de OpenGL Registra as callback functions de GLUT renderização redimensionamento entrada: teclado, mouse, etc. Chama laço principal de processamento Estrutura de um Programa
Windows já possui uma implementação do OpenGL Necessário utilizar um sistema de janelas no desenvolvimento das aplicações GLUT Baixar o GLUT em: Descompactar o GLUT.rar em algum diretório C:\Temp\ Após descompactar, definir os diretórios de include e library no Visual Studio Para definir tais diretórios, deve-se seguir: Menu Tools -> Options Selecionar Projects -> VC++ Directories Configurando o GLUT
Para o diretório de include: Selecionar a opção Include files Clicar no ícone do diretório e indicar o diretório include que se encontra abaixo do diretório GLUT, previamente descompactado Para o diretório de libraries: Selecionar a opção Library files Clicar no ícone do diretório e indicar o diretório lib que se encontra abaixo do diretório GLUT, previamente descompactado Após definir os diretórios de include e library, clicar em OK GLUT já está devidamente configurado para o desenvolvimento de aplicações OpenGL com sistema de janelas
Criando um projeto No menu File -> New -> Project... Escolher Visual C++ Projects -> Win32 -> Win32 -> Console Project Selecionar o nome do projeto, por exemplo,OpenGL Cube Selecionar o nome da solução, por exemplo, OpenGL Apps Selecionar o caminho do projeto, por exemplo, C:\ Clicar em OK Clicar em Application Setings -> Empty, para criar um projeto vazio Clicar em Finish Criando uma Aplicação
Após a criação do projeto, é necessário copiar o arquivo glut32.dll e o freeglut.dll para a pasta do projeto baixar em Adicionar um arquivo que conterá a função main e o código da aplicação OpenGL Clicar na pasta de fontes do projeto com o botão direito e seleciona Add -> Add New Item... Selecionar a opção C++ File (.cpp) e fornecer o nome do arquivo Clicar em Open e o arquivo criado será aberto no editor Configurando o GLUT
Resolva as questões abaixo baseadas neste código: Caso você tente redimensionar a janela, observará que o fundo da tela não será "limpo" e que a posição do quadrado é variável dentro da janela. Porque ocorrem estas duas situações? Como corrigi-las? 2 - Tente desenhar outros objetos, ao invés de um quadrado um triângulo por exemplo. 3 - Vamos supor que você queira mudar interativamente a posição onde o quadrado é desenhado via teclado, ou seja, suponha que pressionando-se determinada tecla o quadrado deva mover-se 20 pixels acima e à direita da posição corrente. Como você faria isto? 4 - O clique do mouse na verdade causa 2 mudanças de cor em seguida, muito rápidas. Porque isto acontece? Como você mudaria o código acima para a cor do quadrado mudar somente uma vez quando o mouse é pressionado?
Resolva as questões abaixo baseadas neste código: Faca com que os cubos girem em sentido contrários 2 – Mude a posicao dos cubos para que eles girem de cabeca para baixo e que estejam bem mais distante que no inicio.