GLUT

OpenGL Utility Toolkit
DesenvolvedorMark Kilgard
Repositóriogithub.com/dcnieho/FreeGLUT
Sistema
operacional
Multiplataforma
PlataformaMultiplataforma
TipoAPI
Websitefreeglut.sourceforge.net

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

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.

Limitações

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.

Ver Também

Ligações Externas

Content Disclaimer

Informasi ini disarikan dari Wikipedia dan disajikan kembali untuk tujuan edukasi. Konten tersedia di bawah lisensi CC BY-SA 3.0. Kami tidak bertanggung jawab atas ketidakakuratan data yang bersumber dari kontribusi publik tersebut.

  1. The information displayed on this website is sourced in part or in whole from Wikipedia and has been adapted for the purpose of restating it. We strive to provide accurate and relevant information, however:
  2. There is no guarantee of absolute accuracy. Wikipedia is an open, collaborative project that can be edited by anyone, so information is subject to change.
  3. It is not intended to constitute professional advice. The content displayed is for informational and educational purposes only. For important decisions (e.g., medical, legal, or financial), please consult a professional.
  4. Content copyright. Wikipedia is licensed under the Creative Commons Attribution-ShareAlike License (CC BY-SA). This means that content may be reused with appropriate attribution and shared under a similar license.
  5. Responsible use. Any risk arising from the use of information from this website is entirely the responsibility of the user.