OpenGL Clique para adicionar texto Soraia Musse 6/4/2011.

Slides:



Advertisements
Apresentações semelhantes
Sistemas de Interfaces com o Usuário e Glut/OpenGL
Advertisements

Sistemas Operacionais
Funções para serem usadas no exercício de Lab
C/C++ para Sistemas Operacionais Professor: André Luis Meneses Silva /msn: Página:
Augusto NevesJoão CarlosRodrigo Paula Linguagem de Programação C++ Componentes do Grupo.
Computação Gráfica Mapeamento de textura
OpenGL Computação Gráfica.
Prof. Thiago Pereira Rique
Modo Gráfico x Modo Texto
JOGOS.
Projeções e OpenGL Alex F. V. Machado.
COMPUTAÇÃO GRÁFICA.
Introdução a OpenGL (parte final).
Introdução à Computação Gráfica OpenGL Básico
Computação Gráfica Interativa - Gattass
Navegador de cenas com openGL e rastreamento de raios
OpenGL Conceitos Básicos
Sistemas de Interfaces com o Usuário e OpenGL/Glut
OpenGL Alberto B. Raposo.
Linguagem C LPG-I – Variáveis Estruturadas – Vetores
1 Professor Rogério B. de Andrade - Aula 001- Dez/2008 Técnicas e Linguagem de Programação.
Funções para serem usadas no exercício de Lab nos dias (11/03/2010 e 17/03/10) Visualização 3D Incluir no FrameWork Básico (na página da disciplina), as.
Callback de Teclado // registro void glutKeyboardFuc(Teclado);
Funções para serem usadas no exercício de Lab Hoje glRotatef(GLfloat angulo, GLfloat x, GLfloat y, GLfloat z) glTranslatef(GLfloat x, GLfloat y, GLfloat.
Laboratório de Computação Gráfica OpenGL
Iluminação Para programar um sistema de iluminação, dois passos principais devem ser considerados: c) Que tipo e posição de Iluminação se deseja b) Que.
Universidade Federal do Espírito Santo
Universidade Federal do Espírito Santo
OpenGL – Uma abordagem prática e objetiva
Computação Gráfica OpenGL.
Revisão da Linguagem C.
INTRODUÇÃ A COMPUTAÇÃO ENG. CIVIL
JAVA: Conceitos Iniciais
JAVA Linguagem Ambiente de Desenvolvimento
Animações Independentes na Mesma Cena
POWER POWER POINT POINT.
Tipos de Dados Paradigmas de Programação
Hugo Siqueira (hlfs) Lauro Mafra Rafael Correa
Computação Gráfica Mapeamento de textura
Professor: Márcio Amador
Computação Gráfica – Introdução ao OpenGL
Computação Gráfica Introdução ao OpenGL.
Aulas 2 e 3 – Java – Prof. Marcelo Heitor # O método main e argumentos na linha de comando; # Fluxo padrão de entrada e saída; # A classe JOptionPane;
Paradigmas da Programação – Semestre 1 – Aula 9 Professor: Eduardo Mantovani )
Introdução à Computação Gráfica OpenGL Básico
3. Introdução à Linguagem C
Go3D! A 3D Graphics Engine Carlos Tosin. Divisão Estrutura dividida em 4 componentes Core (46 classes) Áudio (4 classes) Script (4 classes) Renderer (37.
Computação Gráfica – Transformações Projetivas
Desenhos Tridimensionais
M ÉTODOS DA C LASSE S TRING. FUNÇÕES COM STRING Uma string é um tipo texto que corresponde à união de um conjunto de caracteres. Em Java, as strings são.
Computação Gráfica – Introdução ao OpenGL
OpenGL Aula Prática.
Aula Prática 5 Monitoria IP/CC (~if669). Roteiro 1. 1.Recursão 2. 2.Escopo de Variáveis 3. 3.Arrays 4. 4.Strings.
Computação Gráfica – Animação
Realidade Virtual Aula 2 Remis Balaniuk. Enxergando grande, começando pequeno Quem começa a aprender RV normalmente sofre um primeiro impacto negativo.
1 SUIT - Simple User Interface Toolkit Maria Alice Grigas Varella Ferreira EP-USP Abril 2003.
Felipe Cavalcanti Ferreira Fernando Valente Kakimoto
Programação Computacional Aula 8: Entrada e Saída pelo Console Prof a. Madeleine Medrano
Programação Computacional Aula 9: Meu primeiro programa em C
Equipe Onildo Ferraz Hélder Manoel Lima e Silva Felipe Batista.
Vetores Normais.
Prof. Wallace Borges Cristo
Manipulação de Imagens em OpenGL
Animação 2D. // Variáveis que guardam a translação que será aplicada // sobre a casinha GLfloat Tx; GLfloat Ty; // Variáveis que guardam os valores mínimos.
Grupo: Antônio Inocêncio Francisco Ícaro Filipe Araújo Guilherme Barreto Leonardo Vilaça Márcio Dias Thiago Gomes.
Silvânia de Assis Guilherme de Melo Moisés Tadeu Cardoso Isabela de Oliveira Glauber Ataíde Henrique de Araujo 1.
1 Computação Gráfica Prof. Dr. Júlio C. Klafke UNIP-Objetivo
Aline Oliveira Everton Godoy Gabriel Leoni Lenilton Rocha Nelson Deda.
Laboratório de Computação Aula 06 e 07 – Implementação de classes Prof. Fábio Dias
Introdução à Orientação a Objetos em Java Prof. Gustavo Wagner (Alterações) Slides originais: Prof. Tiago Massoni Desenvolvimento de Sistemas FATEC-PB.
Transcrição da apresentação:

OpenGL Clique para adicionar texto Soraia Musse 6/4/2011

Roteiro Introdução Utilização Exemplo de Programa Nomes das Funções/Métodos Bibliotecas Máquina de Estados Linhas, Pontos e Polígonos Transformações Geométricas

Introdução OpenGL Biblioteca de rotinas gráficas e de modelagem, 2D e 3D (interface para hardware gráfico) API (Application Programming Interface) padrão para desenvolvimento de aplicações gráficas 3D em tempo real Portável Rápida Grande qualidade visual, dá suporte para: Mapeamento de textura Iluminação Transparência Animação Outros efeitos especiais

Introdução OpenGL Aproximadamente 250 comandos e funções 200 comandos do core OpenGL 50 comandos da GLU (OpenGL Utility Library) Programas são baseados em OpenGL ou são aplicações OpenGL (escritos em alguma linguagem de programação que faz chamadas a uma ou mais bibliotecas OpenGL)

Introdução OpenGL Ao invés de descrever a cena e como ela deve parecer, é preciso apenas determinar os passos necessários para alcançar uma certa aparência ou efeito Por ser portável, OpenGL não possui funções para gerenciamento de janelas, interação com o usuário ou arquivos de entrada/saída A palavra pipeline é usada para descrever um processo que pode ter dois ou mais passos distintos

Pipeline OpenGL

Utilização OpenGL segue a convenção de chamada de C, e foi escrita em C Existem muitas implementações desta biblioteca Para Windows e Linux Para C/C++, Java, C#, Python, Delphi, ... Para cada implementação são fornecidas as bibliotecas necessárias Por exemplo, para C/C++ no ambiente Windows Bibliotecas opengl32.lib (OpenGL) e glu32.lib (GLU), arquivos .h earquivos dll Por exemplo, a JOGL para Java no ambiente Windows Bibliotecas gluegen-rt.jar e jogl.jar e arquivos dll

Utilização Uma biblioteca auxiliar GLUT (GL Utility Toolkit) também é muito utilizada para integrar OpenGL com outras linguagens de programação. Tarefas realizadas pela GLUT: Criar e gerenciar janelas da aplicação OpenGL. Criar e gerenciar menus nas janelas. Desenhar objetos OpenGL como esferas e cilindros. Desenhas textos. Tratar eventos de teclado, mouse e joystick. Ativar o desenho de objetos em OpenGL. Existem versões padronizadas da GLUT para DOS, Windows, Linux, MasOS e para a maioria das plataformas UNIX. Para utilizar a GLUT em um programa é necessário incluir: o arquivo de cabeçalho glut.h, a biblioteca glut32.lib, mais a dll glut32.dll.

Exemplos de Funções GLUT void glutInitWindowPosition (int x, int y) Define a posição inicial da janela. int glutCreateWindow (char *string) Cria uma nova janela. void glutReshapeFunc (AlteraTamanhoJanela) Define que a função AlteraTamanhoJanela será a responsável por tratar o evento referente ao redimensionamento da janela. void glutMouseFunc (GerenciaMouse) Define que a função GerenciaMouse será a responsável por tratar os eventos do mouse. void glutKeyboardFunc (Teclado) Define que a função Teclado será a responsável por tratar os eventos do teclado.

Exemplo de um programa Estrutura básica de uma aplicação interativa Configura e abre uma janela (glutCreateWindow) Criação de um objeto que irá gerenciar os eventos (glutMainLoop) Cria uma classe responsável pelo rendering e pelo gerenciamento dos eventos de teclado (no exemplo, Desenha e Teclado)

Exemplo: // Função callback responsável pelo rendering void Desenha(void) { glClearColor(1,1,1,0); glClear(GL_COLOR_BUFFER_BIT); glColor3f(0,0,1); glBegin(GL_TRIANGLES); glVertex3f(-0.5,-0.5,0); glVertex3f( 0.0, 0.5,0); glVertex3f( 0.5,-0.5,0); glEnd(); glFlush(); } Especifica a cor de fundo como branca. Limpa a janela de visualização com a cor especificada. Define a cor de desenho como azul. Desenha um triângulo com a cor corrente, nos vértices especificados entre glBegin() e glEnd(). Faz com que qualquer comando OpenGL não executado seja executado. 

Exemplo: ... // Função callback chamada para gerenciar eventos de teclas void Teclado (unsigned char key, int x, int y) { if (key == 27) exit(0); } Abandona a execução do programa se o usuário pressionar ESC.

Exemplo: ... // Programa Principal int main(void) { glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB); glutInitWindowSize(500,500); glutCreateWindow("Desenho de um triângulo em 2D"); ... Define do modo de operação da GLUT. Especifica o tamanho inicial em pixels da janela GLUT. Cria a janela passando como argumento o título da mesma.

Exemplo: ... glutDisplayFunc(Desenha); glutKeyboardFunc (Teclado); glutMainLoop(); return 0; } Registra a função callback de redesenho da janela de visualização.  Registra a função callback para tratamento das teclas ASCII.  Inicia o processamento e aguarda interações do usuário. 

Nomes das funções/métodos

Nomes das funções/métodos Formato do nome das funções: <PrefixoBiblioteca><ComandoRaiz><ContArgsOpcional><TipoArgsOpcional> Exemplos: glColor3i: recebe três valores inteiros glColor3d: recebe três valores double glColor4i: recebe quatro valores (RGB e a-transparência) glutSolidCube(float size) : função da biblioteca glut que recebe um argumento como entrada (tamanho do cubo) gluLookAt: função da biblioteca glu que recebe nove argumentos como entrada

OpenGL – Máquina de Estados OpenGL é uma máquina de estados É possível colocá-la em vários estados, ou modos, que não são alterados, a menos que uma função seja chamada para isto Por exemplo, a cor corrente é uma variável de estado que pode ser “setada” para branco, de tal maneira que todos os objetos, então, são desenhados com a cor branca, até o momento em que é atribuído outro valor para a cor corrente

OpenGL – Máquina de Estados OpenGL mantém uma série de variáveis de estado Cor Estilo (ou padrão) de uma linha Posições e características das luzes Propriedades do material dos objetos `Muitas variáveis de estado referem-se a modos que podem ser habilitados ou desabilitados com os comandos: glEnable() glDisable()

OpenGL – Máquina de Estados Também é possível salvar e restaurar um conjunto de variáveis de estado em uma pilha usando as seguintes funções void glPushAttrib(GLbitfield mask) void glPopAttrib (void) Exemplo: glPushAttrib(GL_LINE_BIT); // Empilha atributo (espessura da linha - default é 1) glPushAttrib(GL_CURRENT_BIT); // Empilha atributo (cor) glColor3f(0.0f, 0.0f, 1.0f); // Especifica a cor azul glLineWidth(5); // Especifica a espessura da linha // Desenha .... glPopAttrib(); // Desempilha atributo (cor) glPopAttrib(); // Desempilha atributo (espessura da linha)

Primitivas geométricas: Objetos e cenas criados com OpenGL consistem em simples e pequenos shapes (ou primitivas, tais como pontos, linhas e polígonos) combinados de várias maneiras OpenGL fornece ferramentas para desenhar pontos, linhas, "polilinhas" e polígonos, que são formados por um ou mais vértices Lista de vértices: glBegin() glVertex2i() // ou, por exemplo, glVertex3f() .... glEnd()

Primitivas geométricas: O argumento passado para glBegin() determina qual objeto será desenhado: GL_POINTS GL_LINES GL_LINE_LOOP GL_POLYGON GL_TRIANGLES GL_QUAD

Referências: WOO, Mason; NEIDER, Jackie; DAVIS, Tom;SHREINER, Dave. OpenGL Programming Guide:the official guide to learning OpenGL, version 1.2.3rd ed. Reading, Massachusetts: Addison Wesley,1999. 730 p. WRIGHT, Richard S. Jr.; SWEET, Michael. OpenGL SuperBible. 2nd ed. Indianapolis, Indiana: Waite Group Press, 2000. 696 p.

Clique para adicionar texto