Sada nástrojů OpenGL

GLUT ( Open GL Utility T oolkit ) je knihovna nástrojů chráněná autorskými právy Marka J. Kilgarda , která nabízí sadu rutin pro správu oken OpenGL a interakce s operačním systémem (správa klávesnice, myši atd.) Nezávisle na něm a správce oken. Používá se hlavně k vytváření demonstračních programů.

Prezentace

Knihovnu GLUT napsal Mark J. Kilgard , autor OpenGL Programming for the X Window System a The CG Tutorial: The Definitive Guide to Programmable Real-Time Graphics , while working for Silicon Graphics .

GLUT byl napsán za účelem výroby přenosného kódu mezi různými operačními systémy a pro vzdělávací účely. Jeho jednoduchost vám umožňuje nestarat se o systémovou část, která je poměrně složitá, a soustředit se na podstatu samotného programu OpenGL. Vytvoření programu s GLUT trvá jen několik řádků kódu. Kromě toho respektuje konvence a syntaxi OpenGL; názvy funkcí začínají předponou „glut“ a makra „GLUT“ (OpenGL používá předpony „gl“ a „GL“).

Kromě zapouzdření základních funkcí správce oken nabízí GLUT rutiny pro kreslení několika jednoduchých trojrozměrných objektů, jako je koule, krychle, kužel, torus nebo dokonce Newellova známá čajová konvice .

Knihovna GLUT již není ve vývoji a zastavila se ve verzi 3.7 v květnu 1998 . Knihovny open source freeglut a OpenGLUT (které jsou odvozeny z freeglut) nyní nahrazují GLUT. Reimplementují GLUT API a přinášejí do něj nějaké změny. Vytvoření těchto dalších knihoven je způsobeno vágností ohledně licence GLUT, která podle některých neumožňuje redistribuci upraveného kódu.

Příklad


Zde je příklad programu používajícího GLUT a OpenGL (kompatibilní s freeglut a OpenGLUT). Výsledkem je jednoduché okno s vícebarevným trojúhelníkem uprostřed.


#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; }

Poté můžeme tento program vyvinout definováním zpětných volání pro akce klávesnice ( glutKeyboardFunc ) nebo myši ( glutMouseFunc ), nebo dokonce s jednoduchým pohybem myši ( glutMotionFunc ), abychom například interaktivně změnili polohu bodů trojúhelníku nebo výběr barev. Viz také jednoduchý interaktivní příklad uvedený v článku OpenGL .

Poznámky a odkazy

  1. Podívejte se na diskusní stránku článku o problémech s licencí GLUT.

Podívejte se také

Interní odkazy

externí odkazy