A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

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

Apresentações semelhantes


Apresentação em tema: "Introdução ao OpenGL. OpenGL Open Graphic Library Biblioteca de rotinas gráficas e modelagens bidimensional (2d) e tridimensional (3d) extremamente portável."— Transcrição da apresentação:

1 Introdução ao OpenGL

2 OpenGL Open Graphic Library 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 (OpenGL Utility Library) Matrizes de projeção Orientação da visualização Desenho de superfícies quádricas GLUT (OpenGL Utility Toolkit) Criação de janelas e menus Gerenciamento de janelas e eventos

5 OpenGL – Padronização de nomes void glColor3f(Glfloat red, Glfloat green, Glfloat blue) Argumento glPrefixo que representa a biblioteca OpenGl colorComando raiz que representa a funcionalidade da função 3Número de argumentos que a função possui fIndica que os argumentos são valores de ponto flutuante 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 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 (int largura, int altura); void glutSpecialFunc(TeclasEspeciais) void (int tecla, int x, int y); void glutMouseFunc(GerenciaMouse) void (int botao, int estado, int x, int y)

10 void glutMotionFunc (MoveMouseBotãoPressionado) void (int x, int y); void glutPassiveMotionFunc(MoveMouse) void (int x, int y); void glutIdleFunc(Idle) void (void)

11 Constantes GLUT para eventos do mouse ValorDescrição GLUT_LEFT_BUTTONInforma que foi pressionado o botão esquerdo GLUT_MIDDLE_BUTTONInforma que foi pressionado o botão do meio GLUT_RIGHT_BUTTONInforma que foi pressionado o botão direito ValorDescrição GLUT_DOWNInforma que o botão foi pressionado GLUT_UPInforma que o botão foi precionado

12 Constantes GLUT para eventos de teclas especiais ValorTecla pressionada GLUT_KEY_F 1 Tecla F 1 GLUT_KEY_FnTecla Fn GLUT_KEY_F 12 Tecla F 12 GLUT_KEY_LEFTTecla direção esquerda GLUT_KEY_RIGHTTecla direção direita GLUT_KEY_UPTecla direção cima GLUT_KEY_DOWNTecla direção baixo GLUT_KEY_PAGE_UPTecla PageUp GLUT_KEY_PAGE_DOWNTecla PageDown GLUT_KEY_ENDTecla End GLUT_KEY_INSERTTecla Insert

13 Desenhos Bidimencionais ValorTecla pressionada GL_POINTSDesenha pontos GL_LINESDesenha segmentos de linha GL_LINE_STRIPDesenha segmentos de linha conectados GL_LINE_LOOPDesenha segmentos de linha conectados, unindo o primeiro ao ultimo GL_POLYGONDesenha um polígono convexo GL_TRIANGLESDesenha triângulos GL_TRIANGLE_STRIPDesenha triângulos conectados GL_TRIANGLE_FANDesenha triângulos a partir de um ponto central GL_QUADSDesenha quadriláteros GL_QUAD_STRIPDesenha quadriláteros conectados

14 Desenhos Bidmencionais #include 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 ValorDescrição GLUT_BITMAP_8_BY_13Fonte padrão 8x13 GLUT_BITMAP_9_BY_15Fonte padrão 9x15 GLUT_BITMAP_TIMES_ROMAN_10Fonte times roman tamanho 10 GLUT_BITMAP_TIMES_ROMAN_24Fonte times roman tamanho 24 GLUT_BITMAP_HELVITICA10Fonte helvítica, tamanho 10 GLUT_BITMAP_HELVITICA12Fonte helvítica, tamanho 12 GLUT_BITMAP_HELVITICA18Fonte helvítica, tamanho 18

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


Carregar ppt "Introdução ao OpenGL. OpenGL Open Graphic Library Biblioteca de rotinas gráficas e modelagens bidimensional (2d) e tridimensional (3d) extremamente portável."

Apresentações semelhantes


Anúncios Google