1 / 117

OpenGL – Uma abordagem prática e objetiva

OpenGL – Uma abordagem prática e objetiva. Última atualização: 16-nov-2008. 1 - Introdução. Computação Gráfica é uma área da Ciência da Computação que se dedica ao estudo e ao desenvolvimento de técnicas e algoritmos para geração, manipulação e análise de imagens pelo computador. Introdução.

Download Presentation

OpenGL – Uma abordagem prática e objetiva

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. OpenGL – Uma abordagem prática e objetiva Última atualização: 16-nov-2008

  2. 1 - Introdução • Computação Gráfica é uma área da Ciência da Computação que se dedica ao estudo e ao desenvolvimento de técnicas e algoritmos para geração, manipulação e análise de imagens pelo computador

  3. Introdução • aplicações gráficas • processamento gráfico

  4. Pipeline • A palavra pipeline é usada para descrever um processo composto de duas ou mais etapas para geração de uma imagem

  5. Framebuffer • framebuffer – memória do dispositivo gráfico

  6. 2 - Instalação

  7. No DEV-C++ • <alt>+<P> --> abre o menu Projeto • Selecionar Opções de Projeto • Selecione a aba Parâmetros e em Linker verifique: -lglut32 -lopengl32 -lglu32 -lwinmm -lgdi32

  8. 3 – Primeiros passos em OpenGL • Função Desenha • Função Teclado • Função Inicializa • Função Principal

  9. Primeiros passos em OpenGL • Veja exemplo em: http://www.novatec.com.br/livros/opengl/

  10. 4 – Padronização dos Nomes das Funções e Tipos de Dados

  11. Funções - Exemplos • void glColor(GLint red, GLint green, GLint blue); • void glColor3d(GLdouble red, GLdouble green, GLdouble blue)

  12. Tipos de dados OpenGL

  13. 5 – GLUT – GL Utility Toolkit • Responsável pelo gerenciamento de janelas e tratamento de eventos

  14. GLUT - Funções // Especifica a posição inicial da janela GLUT glutInitWindowPosition(int x, int y); // Especifica o tamanho inicial em pixels da janela GLUT glutInitWindowSize(int largura, int altura);

  15. Criação da Janela // Cria a janela passando como argumento o título da mesma glutCreateWindow(char *string);

  16. Funções para tratamento de eventos • glutDisplayFunc • glutReshapeFunc • glutKeyboardFunc • glutSpecialFunc • glutMouseFunc • glutMotionFunc • glutPassiveMotionFunc • glutIdleFunc

  17. 6 – Máquinas de Estado • Uma máquina de estados corresponde a um dispositivo ou sistema que guarda o estado de um ou mais elementos em um momento específico • Comandos de entrada são utilizados para alterar este estado e/ou gerar uma função de saída

  18. Máquina de estados • OpenGL é considerado uma máquina de estados • É composto de várias variáveis de estado que armazenam determinado valor e podem ser alteradas pela chamada a uma função • Cada variável de estado possui um valor padrão (default) que pode ser alterado

  19. Funções para alteração de estado • void glEnable(GLenum cap) • void glDisable(GLenum cap) • GLBoolean glIsEnabled(GLenum cap) --> verifica o estado que se encontra uma propriedade

  20. Variáveis de estado Variáveis de estado relacionadas são agrupadas em um atributo • void glPushAttrib(GLbitfield mask) • void glPopAttrib(void)

  21. 7 – Definição do Espaço de Trabalho • modelo • coordenadas geométricas • sistema de referencia • Sistema de Referência do Universo (SRU) • Sistema de Referência da Tela (SRT)

  22. Definições • Modelo-> é uma representação computacional de um objeto, isto é, corresponde a uma estrutura de dados que tem sua descrição geométrica • Imagem -> matriz de pontos • Universo -> é a região do plano (ou do espaço) utilizada em uma aplicação

  23. Definições • coordenadas geométricas • sistema de referência -> define uma origem em relação a qual todos os posicionamentos do universo são descritos.

  24. 7.1 Visualização Bidimensional

  25. Sistema de Referencia do Universo • Sistema de Referência do Universo (SRU) -> consiste em um plano cartesiano com dois eixos (x e y) perpendiculares entre si e que se cruzam na origem

  26. Sistema de Referência da Tela • Sistema de Referência da Tela (SRT) -> no SRT a origem fica no canto superior esquerdo do monitor

  27. Definições • modelos são criados independentes do dispositivo • windows ou janela de seleção --> é a área do universo que delimita a região de interesse do usuário em um dado instante • viewport ou janela de exibição --> define a área do monitor onde desejamos exibir o conteúdo da window

  28. Mapeamento SRU --> SRT

  29. Funções de conversão SRU para SRT • void glViewport(GLint x, GLint y, GLsizei largura, GLsizei altura); • void gluOrtho2d(GLdouble left, GLdouble right, GLdouble bottom, GLdouble top)

  30. 7.2 Visualização Tridimensional • Câmera Sintética • Projeção • Funções OpenGL

  31. Visualização Tridimensional • Quando se trabalha em três dimensões, o SRU (Sistema de Referência do Universo) passa a ser composto por três eixos ortogonais entre si (x, y e z) e pela origem (0.0, 0.0, 0.0)

  32. Visualização Tridimensional • Projeção: é a operação de obter representações bidimensionais de objetos tridimensionais • Raios de projeção (segmentos de reta) chamados projetantes • Plano de projeção

  33. Projeções Geométricas Planares • Projeção Paralela Ortográfica --> as projetantes são paralelas entre si, passam pelos pontos qeu definem os objetos e interseccionam o plano com um ângulo de 90º • Projeção Perspectiva --> as projetantes emanam de um único ponto que está a uma distancia finita do plano de projeção e passam pelos pontos que definem um objeto

  34. Funções OpenGL • void gluLookAt() --> permite especificar a posição e a orientação da câmera sintética ou observador virtual • void gluPerspective() --> utilizada para estabelecer a projeção perspectiva • void glOrtho() --> função utilizada para estabelecer projeção ortográfica

  35. Funções OpenGL • void glLoadIdentity(void) --> função utilizada para inicializar o sistema de coordenadas (carrega a matriz identidade) • void glMatrixMode(GLenum mode) --> permite selecionar com qual matriz será trabalhado • GL_MODELVIEW --> seleciona a matriz do modelo (de modelagem e transformação) • GL_PROJECTION --> seleciona a matriz de projeção • GL_TEXTURE --> seleciona a matriz de textura

  36. Funções GLUT • void glutWireCube(GLdouble tamanho) --> função da biblioteca GLUT responsável pelo traçado de um cubo

  37. 8 – Desenhos bidimensionais • 8.1 Primitivas Gráficas • 8.2 Cores e Estilos de Traçados de Primitivas • 8.3 Exibição de Texto • 8.4 Desenhos de Curvas Paramétricas

  38. 8.1 - Primitivas Gráficas • Primitivas gráficas consistem nos elementos básicos que compõem um desenho, tais como pontos, segmentos de reta e círculos

  39. Primitivas Gráficas • vértices • objetos • cenas • modelos

  40. Desenho de primitivas glBegin(<argumento>); // lista de vértices glEnd(); onde <argumento>determina qual objeto será desenhado

  41. Primitivas Gráficas em OpenGL (valores usados em <argumento>) • GL_POINTS – desenha pontos • GL_LINES – desenha linhas • GL_LINE_STRIP – desenha segmentos de linhas conectados • GL_LINE_LOOP – desenha segmentos de linhas conectados, unindo o primeiro ao último • GL_POLYGON – desenha um polígono • GL_TRIANGLES – desenha um triângulo • GL_TRIANGLES_STRIP – desenha um triângulos conectados • GL_TRIANGLES_FAN – desenha triângulos a partir de um ponto central • GL_QUADS – desenha quadriláteros • GL_QUADS_STRIP – desenha quadriláteros conectados

  42. Exemplos glBegin(GL_LINES); glVertex2f(12.0f, 12.0f); glVertex2f(100.5f, 100.5f); glEnd(); Desenha uma linha entre os dois vértices

  43. 8.2 Cores e Estilos de Traçado de Primitivas • Primitivas podem ser desenhadas com diversas aparências como: cores, estilos e padrões diferentes

  44. Exemplo de Funções Alteração do tamanho dos pontos • void glPointSize(GLfloat tamanho) Linhas: alteração de cor, espessura e estilo • void glLineWidth(GLfloat largura)

  45. 8.3 Exibição de Texto • Não suportado diretamente pela OpenGL, porém suportado pela GLUT • Suporta dois tipos de fontes de caracteres: • strokes (segmentos de reta) -->mais flexíveis (podem ser escaladas e rotacionadas) • bitmap (formando por imagens que representam caracteres) --> mais rápidas para serem exibidas

  46. Caracteres – bitmap • void glutBitmapCharacter(void *font, int character), onde: • font: define o tamanho da fonte • caracter: define o caracter

  47. Constantes para tipos de fontes • GLUT_BITMAP_8_BY_13 • GLUT_BITMAP_9_BY_15 • GLUT_BITMAP_TIMES_ROMAN_10 • GLUT_BITMAP_TIMES_ROMAN_24 • GLUT_BITMAP_HELVETICA_10 • GLUT_BITMAP_HELVETICA_12 • GLUT_BITMAP_HELVETICA_18

  48. Posicionamento • void glRasterPos2f(x,y)

  49. Exibição de caracteres usando font stroke • void glutStrokeCharacter(void *font, int caracter), onde • font: define o nome da fonte (GLUT_STROKE_ROMAN e GLUT_STROKE_MONO_ROMAN) • caractere: define o código ASCII do caractere a ser exibido

More Related