Kit de herramientas de utilidad OpenGL

format_list_bulleted Contenido keyboard_arrow_down
ImprimirCitar

El OpenGL Utility Toolkit (GLUT) es una biblioteca de utilidades para programas OpenGL, que principalmente realizan E/S a nivel de sistema con el sistema operativo host. Las funciones realizadas incluyen definición de ventana, control de ventana y monitoreo de entrada de teclado y mouse. También se proporcionan rutinas para dibujar una serie de primitivas geométricas (tanto en modo sólido como alámbrico), incluidos cubos, esferas y la tetera de Utah. GLUT también tiene un soporte limitado para crear menús emergentes.

GLUT fue escrito por Mark J. Kilgard, autor de OpenGL Programming for the X Window System y The Cg Tutorial: The Definitive Guide to Programmable Real-Time Graphics, mientras trabajaba para Silicon Graphics Inc.

Los dos objetivos de GLUT son permitir la creación de código portátil entre sistemas operativos (GLUT es multiplataforma) y facilitar el aprendizaje de OpenGL. Comenzar con la programación de OpenGL mientras usa GLUT a menudo requiere solo unas pocas líneas de código y no requiere conocimiento de las API de ventanas específicas del sistema operativo.

Todas las funciones de GLUT comienzan con el prefijo glut (por ejemplo, glutPostRedisplay marca la ventana actual como que necesita ser redibujada).

Implementaciones

La biblioteca GLUT original de Mark Kilgard es compatible con el sistema X Window (GLX) y Nate Robins la transfirió a Microsoft Windows (WGL). Además, macOS se envía con un marco GLUT que admite su propio NSGL/CGL.

La biblioteca GLUT de Kilgard ya no se mantiene y su licencia no permitía la redistribución de versiones modificadas de la biblioteca. Esto estimuló la necesidad de software libre o reimplementaciones de código abierto de la API desde cero. La primera biblioteca de este tipo fue FreeGLUT, que pretende ser una reproducción razonablemente fiel, aunque introduce una pequeña cantidad de funciones nuevas para hacer frente a las limitaciones de GLUT. OpenGLUT, una bifurcación de FreeGLUT, agrega una serie de características nuevas a la API original, pero el trabajo cesó en mayo de 2005.

Mark Kilgard tiene un repositorio de GitHub para GLUT. El archivo de cabecera glut.h contiene la siguiente licencia:

* Derechos de autor c) Mark J. Kilgard, 1994, 1995, 1996, 1998, 2000, 2006, 2010. */

/* Este programa se distribuye libremente sin honorarios de licencia y es
proporcionado sin garantía o garantía expresada o implícita. Esto
programa es -no- en el dominio público. */

Limitaciones

Algunas de las decisiones de diseño originales de GLUT dificultaron que los programadores realizaran las tareas deseadas. Esto llevó a muchos a crear parches y extensiones no canónicos para GLUT.[1] Algunas reimplementaciones de software gratuito o de código abierto también incluyen correcciones.

Algunas de las limitaciones más notables de la biblioteca GLUT original incluyen:

  • La biblioteca requiere que los programadores llamen glutMainLoop(), una función que nunca regresa. Esto hace difícil para los programadores integrar GLUT en un programa o biblioteca que desea tener control de su propio bucle de eventos. Un parche común para arreglar esto es introducir una nueva función, llamada glutCheckLoop() (macOS) o glutMainLoopEvent() (FreeGLUT/OpenGLUT), que funciona sólo una sola iteración del bucle de eventos GLUT. Otra solución común es ejecutar el bucle de eventos de GLUT en un hilo separado, aunque esto puede variar por sistema operativo, y también puede introducir problemas de sincronización u otros problemas: por ejemplo, la implementación de macOS GLUT requiere que glutMainLoop() correr en el hilo principal.
  • El hecho de que glutMainLoop() nunca regresa también significa que un programa GLUT no puede salir del bucle del evento. FreeGLUT lo arregla presentando una nueva función, glutLeaveMainLoop().
  • La biblioteca termina el proceso cuando la ventana está cerrada; para algunas aplicaciones esto puede no ser deseado. Por lo tanto, muchas implementaciones incluyen un callback extra, como glutWMCloseFunc().

Dado que ya no se mantiene (esencialmente reemplazado por FreeGLUT de código abierto), los problemas de diseño anteriores aún no se resuelven en el GLUT original.

Contenido relacionado

Tecnología MOS 65xx

La serie MOS Technology 65xx es una familia de microprocesadores de 8 bits de MOS Technology, basados en el Motorola 6800 (presentado ca. 1975). La familia...

Seguimiento de la fuente

Seguimiento de fuente se refiere a la capacidad de algunos sistemas de hipertexto para rastrear rigurosamente la fuente exacta de cada documento o documento...

Filtro de internet

Un filtro de Internet es un software que restringe o controla el contenido al que puede acceder un usuario de Internet, especialmente cuando se utiliza para...
Más resultados...
Tamaño del texto:
undoredo
format_boldformat_italicformat_underlinedstrikethrough_ssuperscriptsubscriptlink
save