Saltar para o conteúdo

GLUT

Origem: Wikipédia, a enciclopédia livre.


OpenGL Utility Toolkit
Desenvolvedor Mark Kilgard
Plataforma Multiplataforma
Sistema operativo Multiplataforma
Gênero(s) API
Página oficial freeglut.sourceforge.net
Repositório github.com/dcnieho/FreeGLUT

GLUT (OpenGL Utility Toolkit) é uma biblioteca de funcionalidades para OpenGL cujo principal objetivo é a abstração do sistema operacional fazendo com que os aplicativos sejam multiplataforma. A biblioteca possui funcionalidades para criação e controle de janelas, e também tratamento de eventos de dispositivos de entrada (mouse e teclado). Também existem rotinas para o desenho de formas tridimensionais pré-definidas (como cubo, esfera, bule, etc).

A biblioteca foi escrita por Mark Kilgard (autor de livros sobre computação gráfica) enquanto ele trabalhava para a empresa Silicon Graphics.

Os dois objetivos da API são: a criação de aplicativos totalmente independente do sistema operacional e fazer com que o aprendizado de OpenGL torne-se mais simples. Criar aplicações básicas em GLUT demandam apenas poucas linhas de código enquanto fazer o mesmo programa sem utilizar GLUT poderia resultar em dezenas de linhas.

Todas as funções possuem o prefixo glut (por exemplo, glutPostRedisplay, função que marca a janela da aplicação para ser redesenhada).

Implementações

[editar | editar código-fonte]

A versão original da biblioteca foi desenvolvida suportando apenas o X Window System (GLX) e foi portada para o Microsoft Windows (WGL) por Nate Robins.

A versão de Mark Kilgard não continua sendo desenvolvida (sem manutenção e sem novas funcionalidades) e sua licença não permite redistribuição ou versões modificadas da biblioteca. Isto aumentou a necessidade de uma versão livre da biblioteca, cuja primeira foi freeglut, que pretendia ser um clone exato da versão original e acrescentou poucas novas funções. Existe também uma versão chamada OpenGLUT, uma ramificação da freeglut, que adiciona diversas novas funcionalidades, porém seu desenvolvimento também está inativo.

Devido ao design original da biblioteca muitas tarefas são muito difíceis de serem executadas utilizando-se GLUT, o que acarretou na criação de uma grande quantidade de patches e extensões.

Algumas da limitações mais notáveis da biblioteca são:

  • A biblioteca exige que os programadores chamem a função glutMainLoop(), que nunca retorna um valor. Isto torna a integração um sério problema uma vez que diversas bibliotecas ou até programas precisam ter controle do loop de execução. Existe um patch comum que introduz uma função chamada glutCheckLoop() que executa apenas uma iteração do loop de eventos.
  • O fato de glutMainLoop nunca retornar um valor significa que um programa feito com o GLUT nunca poderá sair do loop de eventos. freeglut tenta resolver este problema adicionando a função glutLeaveMainLoop.
  • A biblioteca finaliza o processo quando a janela é fechada o que para muitos aplicativos pode ser indesejado. Muitas implementações adicionam um novo callback para eventos chamado glutWMCloseFunc().

Uma vez que não há ninguém mantendo a biblioteca os problemas de design citados acima ainda estão presentes.

Ligações Externas

[editar | editar código-fonte]