Kit de ferramentas de utilitários OpenGL

GLUT ( Open GL Utility T oolkit ) é uma biblioteca de utilitários de propriedade de Mark J. Kilgard , que oferece um conjunto de rotinas para o gerenciamento de janelas OpenGL e interações com o sistema operacional (gerenciamento de teclado, mouse, etc.) independentemente dele e do gerenciador de janelas. É usado principalmente para a criação de programas de demonstração.

Apresentação

A biblioteca GLUT foi escrita por Mark J. Kilgard , autor de OpenGL Programming for the X Window System e The CG Tutorial: The Definitive Guide to Programmable Real-Time Graphics , enquanto trabalhava para a Silicon Graphics .

GLUT foi escrito com o objetivo de produzir código portátil entre diferentes sistemas operacionais e para fins educacionais. Sua simplicidade permite que você não se preocupe com a parte do sistema, que é relativamente complexa, e se concentre na substância do próprio programa OpenGL. Criar um programa com GLUT requer apenas algumas linhas de código. Além disso, ele respeita as convenções e a sintaxe do OpenGL; os nomes das funções começam com o prefixo "glut" e as macros com "GLUT" (o OpenGL usa os prefixos "gl" e "GL").

Além do encapsulamento das funções básicas de um gerenciador de janelas, o GLUT oferece rotinas para o desenho de alguns objetos tridimensionais simples como a esfera, o cubo, o cone, o toro ou mesmo o famoso bule de Newell .

A biblioteca GLUT não está mais em desenvolvimento e foi interrompida na versão 3.7 em maio de 1998 . As bibliotecas de código aberto freeglut e OpenGLUT (que deriva de freeglut) agora substituem GLUT. Eles reimplementam a API GLUT e trazem algumas mudanças. A criação dessas outras bibliotecas se deve à imprecisão quanto à licença da GLUT, que segundo alguns não permitiria a redistribuição do código modificado.

Exemplo


Aqui está um exemplo de um programa usando GLUT e OpenGL (compatível com freeglut e OpenGLUT). O resultado é uma janela simples com um triângulo multicolorido no centro.


#include <GL/glut.h> void reshape (int w, int h) { if (h == 0) h = 1; glViewport (0, 0, (GLsizei)w, (GLsizei)h); glMatrixMode (GL_PROJECTION); glLoadIdentity (); gluPerspective (45.0, (GLfloat)w/(GLfloat)h, 0.1, 1000.0); glMatrixMode (GL_MODELVIEW); glLoadIdentity (); glutPostRedisplay (); } void display () { /* efface les tampons de couleur et de profondeur ; réinitialise la matrice de modélisation-visualisation */ glClear (GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); glClearColor(0, 0, 0, 0); glLoadIdentity (); /* dessine un triangle dont les couleurs rouge, vert et bleu sont attribuées aux trois sommets */ glTranslatef (0.0, 0.0, -5.0); glBegin (GL_TRIANGLES); glColor3f (1.0f, 0.0f, 0.0f); glVertex3f (-1.0f, -1.0f, 0.0f); glColor3f (0.0f, 1.0f, 0.0f); glVertex3f (1.0f, -1.0f, 0.0f); glColor3f (0.0f, 0.0f, 1.0f); glVertex3f (0.0f, 1.0f, 0.0f); glEnd (); glFlush(); } int main (int argc, char *argv[]) { /* initialisation de GLUT */ glutInit (&argc, argv); /* création d'une fenêtre OpenGL RVBA avec en simple mémoire tampon avec un tampon de profondeur */ glutInitDisplayMode (GLUT_RGBA | GLUT_SINGLE | GLUT_DEPTH); glutInitWindowSize (350, 300); glutCreateWindow ("Une fenêtre OpenGL avec GLUT"); /* initialisation des fonctions callback appelées par glut pour respectivement le redimensionnement de la fenêtre et le rendu de la scène */ glutReshapeFunc (reshape); glutDisplayFunc (display); /* entre dans la boucle d'évènements */ glutMainLoop (); return 0; }

Podemos então fazer este programa evoluir definindo callbacks para ações do teclado ( glutKeyboardFunc ) ou do mouse ( glutMouseFunc ), ou mesmo com o simples movimento do mouse ( glutMotionFunc ), a fim de, por exemplo, alterar interativamente a posição das pontas do triângulo ou a escolha de cores. Veja também o exemplo interativo simples fornecido no artigo OpenGL .

Notas e referências

  1. Veja a página de discussão do artigo sobre questões de licenciamento GLUT.

Veja também

Links internos

links externos