OpenGL verktøysett

GLUT ( Open GL Utility T oolkit ) er et verktøybibliotek som er beskyttet av copyright J. Markgard , og tilbyr et sett med rutiner for styring av OpenGL- vinduer og interaksjoner med operativsystemet (tastaturadministrasjon, mus osv.) Uavhengig av det og vindusansvarlig. Den brukes hovedsakelig til å lage demonstrasjonsprogrammer.

Presentasjon

GLUT-biblioteket ble skrevet av Mark J. Kilgard , forfatter av OpenGL Programming for X Window System og CG Tutorial: The Definitive Guide to Programmable Real-Time Graphics , mens han jobbet for Silicon Graphics .

GLUT ble skrevet for å produsere bærbar kode mellom forskjellige operativsystemer og for pedagogiske formål. Dens enkelhet lar deg ikke bekymre deg for systemdelen, som er relativt kompleks, og å konsentrere deg om innholdet i selve OpenGL-programmet. Å lage et program med GLUT tar bare noen få linjer med kode. I tillegg respekterer den konvensjonene og syntaksen til OpenGL; funksjonsnavn begynner med prefikset "glut" og makroer med "GLUT" (OpenGL bruker prefikset "gl" og "GL").

I tillegg til innkapslingen av de grunnleggende funksjonene til en vindusbehandling, tilbyr GLUT rutiner for tegning av noen få enkle tredimensjonale objekter som kule, terning, kjegle, torus eller til og med Newells berømte tekanne .

GLUT-biblioteket er ikke lenger under utvikling og stoppet ved versjon 3.7 i mai 1998 . Open Source-bibliotekene freeglut og OpenGLUT (som kommer fra freeglut) erstatter nå GLUT. De implementerer GLUT API på nytt og gir noen endringer i det. Opprettelsen av disse andre bibliotekene skyldes uklarheten om lisensen til GLUT, som ifølge noen ikke ville tillate omfordeling av modifisert kode.

Eksempel


Her er et eksempel på et program som bruker GLUT og OpenGL (kompatibel med freeglut og OpenGLUT). Resultatet er et enkelt vindu med en flerfarget trekant i midten.


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

Vi kan da få dette programmet til å utvikle seg ved å definere tilbakeringinger for tastatur ( glutKeyboardFunc ) eller mus ( glutMouseFunc ) handlinger , eller til og med med den enkle bevegelsen av musen ( glutMotionFunc ), for eksempel for eksempel å interaktivt endre posisjonen til punktene i trekanten eller valg av farger. Se også det enkle interaktive eksemplet gitt i OpenGL- artikkelen .

Merknader og referanser

  1. Se diskusjonssiden i artikkelen angående GLUT-lisensiering.

Se også

Interne lenker

Eksterne linker