1 / 20

Computação Gráfica

Computação Gráfica. Introdução ao OpenGL. OpenGL. Open Graphic Library Biblioteca de rotinas gráficas e modelagens bidimensional (2d) e tridimensional (3d) extremamente portável e rápida

sezja
Download Presentation

Computação Gráfica

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. Computação Gráfica Introdução ao OpenGL

  2. OpenGL • Open GraphicLibrary • Biblioteca de rotinas gráficas e modelagens bidimensional (2d) e tridimensional (3d) extremamente portável e rápida • Incorpora diversos algoritmos otimizados para desenho de primitivas gráficas, mapeamento de texturas e efeitos especiais • Gerenciado por um consórcio formado pelas principais empresas da área • 3Dlabs, Apple Computer, NVIDIA, SGI e SUN • Freqüentes revisões proporciona a incorporação das mais recentes técnicas e da evolução do hardware

  3. OpenGL • Usado na construção de ferramentas CAD, programas de modelagem, jogos, etc. • Funcionalidades • Desenho de primitivas gráficas • Iluminação • Coloração • Mapeamento de texturas • Transparências • Animações

  4. OpenGL • Restrições • As funcionalidades fornecidas pelo OpenGL são de baixo nível • Não fornecem funcionalidades de gerenciamento de janelas • Solução • Extensão da OpenGL através de novas bibliotecas • GLU (OpenGLUtilityLibrary) • Matrizes de projeção • Orientação da visualização • Desenho de superfícies quádricas • GLUT (OpenGLUtility Toolkit) • Criação de janelas e menus • Gerenciamento de janelas e eventos

  5. OpenGL – Padronização de nomes <PrefixoBiblioteca> <ComandoRaiz> <ContadorArgumentosOpc> <TipoArgumentosOp> void glColor3f(Glfloat red, Glfloat green, Glfloat blue) • Os duas ultimas partes do padrão são opcionais • Funções das bibliotecas Glu e GLUT não as utilizam

  6. OpenGL – Primeiros Passos #include <stdlib.h> #include <GL/openglut.h> int main(void) { glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB); glutInitWindowSize(400,400); glutCreateWindow("Primeiro programa OpenGL"); //Inicializa(); //glutDisplayFunc(Desenha); //glutKeyboardFunc(Teclado); glutMainLoop(); return 0; }

  7. void Desenha(void) { glClearColor(1,1,1,0); glClear(GL_COLOR_BUFFER_BIT); glColor3f(1,0,0); glBegin(GL_TRIANGLES); glVertex3f(-0.5, -0.5, 0); glVertex3f(0.0, 0.5, 0); glVertex3f(0.5, -0.5, 0); glEnd(); glFlush(); } void Teclado(unsigned char key, int x, int y) { if (key == 27) exit(0); }

  8. void Inicializa(void) { glMatrixMode(GL_PROJECTION); gluOrtho2D(-1.0,1.0,-1.0,1.0); glMatrixMode(GL_MODELVIEW); }

  9. Tratamento de eventos • void glutReshapeFunc(AlteraTamanhoTela) • void <nomeFunção>(int largura, int altura); • void glutSpecialFunc(TeclasEspeciais) • void <nomeFunção>(int tecla, int x, int y); • void glutMouseFunc(GerenciaMouse) • void <nomeFunção>(int botao, int estado, int x, int y)

  10. void glutMotionFunc (MoveMouseBotãoPressionado) • void <nomeFunção>(int x, int y); • void glutPassiveMotionFunc(MoveMouse) • void <nomeFunção>(int x, int y); • void glutIdleFunc(Idle) • void <nomeFunção>(void)

  11. Constantes GLUT para eventos do mouse

  12. Constantes GLUT para eventos de teclas especiais

  13. Desenhos Bidimencionais

  14. Desenhos Bidmencionais #include <math.h> float ang; glBegin(GL_POINTS); for(ang=0;ang<2*M_PI;ang+=M_PI/7.0) glVertex2f(20*cos(ang), 20*sin(ang)); glEnd();

  15. Criação de menus • int glutCreateMenu(void (*func) (int value)) • func – função responsável pelo tratamento do menu • retorna um inteiro que identifica o menu criado • void glutAddMenuEntry(char *name, int value) • void glutAddSubMenu(char *name, int menu) • name – nome do sub-menu • menu – valor inteiro correspondente ao menu ao qual o sub-menu deve ser adcionado • void glutAttachMenu(int button) • Associa um botão ao menu • void glutDetachMenu(int button) • Desassocia o menu

  16. Alterando Propriedades dos Desenhos • void glPointSize(GLfloat size) • void glLineWidth(Glfloat width) • Altera a espessura da linha • glEnable(GL_LINE_STIPPLE) • Habilita a variável de estado que armazena o estilo de linha • void glLineStipple(GLint factor, Glushort pattern) • Factor – valor entre 1 e 256 que altera o número de pixels do tracejado • Pattern – valor de 16 bits utilizado p/ especificar o tipo de tracejado

  17. Exibição de Textos • Utiliza a GLUT para exibição de textos na tela gráfica • Dois tipos de fontes de caracteres • Segmentos de reta (STROKE) • Mais flexíveis (escalável e rotacionável) • Imagens (BITMAP) • Mais rápidas • As funções de texto presentes na GLUT são básicas, para textos com melhor qualidades devem ser utilizadas bibliotecas específicas, como a FTGL (http://homepages.paradise.net/henryj/code)

  18. void glutBitmapCharacter(void *font, int character) • void glRasterPos2f, void glRasterPos2i, void glRasterPos2d • Modifica a posição matricial corrente utilizada para desenhar o texto

  19. void glutStrokeCharacter(void *font, int character) • Exibe caracteres formados por segmentos de reta • GLUT_STROKE_ROMAN e GLUT_STROKE_MONO_ROMAN • Funções que afetam as linhas também afetam as letras escritas com este método

  20. void DesenhaTexto(void *font, char *string){ while(*string) glutBitmapCharacter(*font, *string++); } *obs: Utilizar a função glRasterPos2f(int x,int y) para posicionar o texto

More Related