Home Index Search Links About Us
[LinuxFocus Image]
[Navegation Bar]
îÏ×ÏÓÔÉ áÒÈÉ×Ù ëÏÍÐÁÎÉÉ ðÏÄÓËÁÚËÉ

ðÒÏÇÒÁÍÍÉÒÏ×ÁÎÉÅ GLUT: ÏËÎÁ É ÁÎÉÍÁÃÉÑ

á×ÔÏÒ Miguel Angel Sepulveda


÷×ÅÄÅÎÉÅ

éÎÉÃÉÁÌÉÚÁÃÉÑ

ïÂÒÁÂÏÔËÁ ÓÏÂÙÔÉÊ

ðÒÉÍÅÒ ÁÎÉÍÁÃÉÉ



äÏÍÁÛÎÑÑ ÓÔÒÁÎÉÃÁ GLUT
á×ÔÏÒ GLUT
éÓÈÏÄÎÉËÉ GLUT-3.6

÷×ÅÄÅÎÉÅ

ðÏ ÚÁÍÙÓÌÕ ÒÁÚÒÁÂÏÔÞÉËÏ×, ÓÐÅÃÉÆÉËÁÃÉÑ OpenGL ÂÙÌÁ ÓÏÚÄÁÎÁ ÎÅÚÁ×ÉÓÉÍÏÊ ÏÔ ËÁËÏÊ-ÌÉÂÏ ËÏÎËÒÅÔÎÏÊ ÓÉÓÔÅÍÙ ÕÐÒÁ×ÌÅÎÉÑ ÏËÎÁÍÉ. ÷ ÒÅÚÕÌØÔÁÔÅ ÍÙ ÐÏÌÕÞÉÌÉ ÐÅÒÅÎÏÓÉÍÙÊ, ÒÁÃÉÏÎÁÌÉÚÉÒÏ×ÁÎÎÙÊ É ÜÆÆÅËÔÉ×ÎÙÊ ÉÎÔÅÒÆÅÊÓ Ë ÂÉÂÌÉÏÔÅËÅ Ä×ÕÈ- É ÔÒÅÈÍÅÒÎÏÇÏ ÒÅÎÄÅÒÉÎÇÁ. ëÏÎËÒÅÔÎÁÑ ÓÉÓÔÅÍÁ ÕÐÒÁ×ÌÅÎÉÑ ÏËÎÁÍÉ ÄÏÌÖÎÁ ÓÁÍÁ ÐÏÚÁÂÏÔÉÔÓÑ Ï ÏÔËÒÙÔÉÉ É ÏÔÏÂÒÁÖÅÎÉÉ ÏËÏÎ. âÉÂÌÉÏÔÅËÁ OpenGL ×ÚÁÉÍÏÄÅÊÓÔ×ÕÅÔ Ó ÏËÏÎÎÏÊ ÓÉÓÔÅÍÏÊ ÞÅÒÅÚ ÄÏÐÏÌÎÉÔÅÌØÎÙÅ ÂÉÂÌÉÏÔÅËÉ, ÎÁÐÒÉÍÅÒ, ÂÉÂÌÉÏÔÅËÁ GLX ÏÐÉÓÙ×ÁÅÔ ×ÚÁÉÍÏÄÅÊÓÔ×ÉÅ ÍÅÖÄÕ OpenGL É ÓÉÓÔÅÍÏÊ X-Window. 

âÉÂÌÉÏÔÅËÁ ÎÁÂÏÒÁ ÕÔÉÌÉÔ OpenGL (GLUT, ÏÔ GL Utility Toolkit) - ÜÔÏ ÉÎÔÅÒÆÅÊÓ ÄÌÑ ÐÒÏÇÒÁÍÍÉÓÔÏ×, ÓÏÚÄÁÀÝÉÈ ÎÁ ÑÚÙËÁÈ ANSI C É FORTRAN ÐÒÉÌÏÖÅÎÉÑ OpenGL, ÎÅ ÚÁ×ÉÓÑÝÉÅ ÏÔ ÓÉÓÔÅÍÙ ÕÐÒÁ×ÌÅÎÉÑ ÏËÎÁÍÉ. âÉÂÌÉÏÔÅËÁ ÂÙÌÁ ÎÁÐÉÓÁÎÁ Mark J. Kilgard É ÚÁËÒÙÌÁ ÓÏÂÏÊ ÏÇÒÏÍÎÕÀ ÂÒÅÛØ, ÏÓÔÁ×ÌÅÎÎÕÀ ÓÐÅÃÉÆÉËÁÃÉÅÊ OpenGL. âÌÁÇÏÄÁÒÑ ÒÁÚÒÁÂÏÔÞÉËÁÍ GLUT ÍÙ ÉÍÅÅÍ ×ÏÚÍÏÖÎÏÓÔØ ÉÓÐÏÌØÚÏ×ÁÔØ ÅÄÉÎÙÊ ÉÎÔÅÒÆÅÊÓ ÄÌÑ ÒÁÂÏÔÙ Ó ÏËÎÁÍÉ ÎÅÚÁ×ÉÓÉÍÏ ÏÔ ÐÌÁÔÆÏÒÍÙ. ðÒÉÌÏÖÅÎÉÑ OpenGL, ÉÓÐÏÌØÚÕÀÝÉÅ GLUT ÍÏÇÕÔ ÂÙÔØ Ó ÌÅÇËÏÓÔØÀ ÐÅÒÅÎÅÓÅÎÙ Ó ÐÌÁÔÆÏÒÍÙ ÎÁ ÐÌÁÔÆÏÒÍÕ, ÂÅÚ ÍÎÏÇÏÞÉÓÌÅÎÎÙÈ ÐÅÒÅÄÅÌÏË ÉÓÈÏÄÎÏÇÏ ËÏÄÁ. GLUT ÚÎÁÞÉÔÅÌØÎÏ ÏÂÌÅÇÞÁÅÔ ÎÁÐÉÓÁÎÉÅ ËÏÄÁ ÐÒÉÌÏÖÅÎÉÊ É ÄÏÐÏÌÎÑÅÔ ÂÉÂÌÉÏÔÅËÕ OpenGL. 

âÉÂÌÉÏÔÅËÁ GLUT ÏÔÎÏÓÉÔÅÌØÎÏ ÎÅ×ÅÌÉËÁ É ÌÅÇËÁ × ÉÚÕÞÅÎÉÉ. âÉÂÌÉÏÔÅËÁ ÈÏÒÏÛÏ ÒÁÚÒÁÂÏÔÁÎÁ É ÄÏÐÏÌÎÅÎÁ ÚÁÍÅÞÁÔÅÌØÎÏÊ ÄÏËÕÍÅÎÔÁÃÉÅÊ. ôÁËÉÍ ÏÂÒÁÚÏÍ, ÐÏÓ×ÑÝÁÔØ ÜÔÏÍÕ ×ÏÐÒÏÓÕ ÏÔÄÅÌØÎÕÀ ÓÅÒÉÀ ÓÔÁÔÅÊ ÎÁ LinuxFocus ÐÒÅÄÓÔÁ×ÌÑÅÔÓÑ ÉÚÌÉÛÎÉÍ. íÙ ÓÏ×ÅÔÕÅÍ ËÁÖÄÏÍÕ ÓÅÒØÅÚÎÏÍÕ ÒÁÚÒÁÂÏÔÞÉËÕ ÐÒÏÞÉÔÁÔØ ÄÏËÕÍÅÎÔÁÃÉÀ, ÐÒÅÄÏÓÔÁ×ÌÅÎÎÕÀ Á×ÔÏÒÏÍ. ãÅÌØ ÜÔÏÊ ÒÅÇÕÌÑÒÎÏÊ ËÏÌÏÎËÉ, ÐÏÓ×ÑÝÅÎÎÏÊ GLUT, × ÔÏÍ, ÞÔÏÂÙ ÛÁÇ ÚÁ ÛÁÇÏÍ ÎÁ ÐÒÉÍÅÒÁÈ ÏÚÎÁËÏÍÉÔØ ÞÉÔÁÔÅÌÑ Ó ÂÉÂÌÉÏÔÅËÏÊ É ÅÅ ÉÓÐÏÌØÚÏ×ÁÎÉÅÍ, × ÄÏÐÏÌÎÅÎÉÅ Ë ÓÅÒÉÉ ÓÔÁÔÅÊ ÐÏ OpenGL × ÜÔÏÍ ÖÕÒÎÁÌÅ. íÙ ÔÁË ÖÅ ÎÁÄÅÅÍÓÑ, ÞÔÏ ×ÎÅÓÅÍ ÐÏÓÉÌØÎÙÊ ×ËÌÁÄ É ÄÁÄÉÍ ÐÏ×ÏÄ ÂÏÌØÛÅÍÕ ÞÉÓÌÕ ÐÒÏÇÒÁÍÍÉÓÔÏ× ÐÒÉÓÏÅÄÉÎÉÔØÓÑ Ë ÓÏÀÚÕ OpenGL-Linux. ÷ ÌÀÂÏÍ ÓÌÕÞÁÅ, ÓÏÂÓÔ×ÅÎÎÁÑ ËÏÐÉÑ Á×ÔÏÒÓËÏÊ ÄÏËÕÍÅÎÔÁÃÉÉ ÐÏ GLUT ÐÏÓÌÕÖÉÔ ÈÏÒÏÛÉÍ ÓÐÒÁ×ÏÞÎÉËÏÍ. 

ðÒÏÇÒÁÍÍÎÙÊ ÉÎÔÅÒÆÅÊÓ GLUT ÐÒÅÄÓÔÁ×ÌÑÅÔ ÓÏÂÏÊ ËÏÎÅÞÎÙÊ Á×ÔÏÍÁÔ (state machine), ËÁË É ÓÁÍ OpenGL. üÔÏ ÚÎÁÞÉÔ, ÞÔÏ GLUT ÓÏÄÅÒÖÉÔ ÒÑÄ ÐÅÒÅÍÅÎÎÙÈ ÓÏÓÔÏÑÎÉÑ, ËÏÔÏÒÙÅ ÉÚÍÅÎÑÀÔÓÑ ×Ï ×ÒÅÍÑ ÉÓÐÏÌÎÅÎÉÑ ÐÒÉÌÏÖÅÎÉÑ. îÁÞÁÌØÎÙÅ ÓÏÓÔÏÑÎÉÑ ÍÁÛÉÎÙ GLUT ÂÙÌÉ ×ÙÂÒÁÎÙ Ó ÔÁËÉÍ ÒÁÓÞÅÔÏÍ, ÞÔÏÂÙ ÕÄÏ×ÌÅÔ×ÏÒÑÔØ ÂÏÌØÛÉÎÓÔ×Õ ÐÒÉÌÏÖÅÎÉÊ. ðÒÏÇÒÁÍÍÁ ÍÏÖÅÔ ÉÚÍÅÎÑÔØ ÚÎÁÞÅÎÉÑ ÜÔÉÈ ÐÅÒÅÍÅÎÎÙÈ ÓÏÓÔÏÑÎÉÑ, ÄÌÑ ÕÄÏ×ÌÅÔ×ÏÒÅÎÉÑ ÓÐÅÃÉÆÉÞÅÓËÉÈ ÔÒÅÂÏ×ÁÎÉÊ. ëÁÖÄÙÊ ÒÁÚ ÐÒÉ ×ÙÚÏ×Å ÆÕÎËÃÉÉ GLUT ÍÅÎÑÀÔ Ó×ÏÅ ÐÏ×ÅÄÅÎÉÅ × ÚÁ×ÉÓÉÍÏÓÔÉ ÏÔ ÚÎÁÞÅÎÉÊ ÐÅÒÅÍÅÎÎÙÈ ÓÏÓÔÏÑÎÉÑ. æÕÎËÃÉÉ GLUT ÐÒÏÓÔÙ É ÔÒÅÂÕÀÔ ÍÉÎÉÍÕÍÁ ÐÁÒÁÍÅÔÒÏ×. ïÎÉ ÎÅ ×ÏÚ×ÒÁÝÁÀÔ ÕËÁÚÁÔÅÌÅÊ, Á ÅÄÉÎÓÔ×ÅÎÎÙÍÉ ÕËÁÚÁÔÅÌÑÍÉ × ÐÁÒÁÍÅÔÒÁÈ ÆÕÎËÃÉÊ Ñ×ÌÑÀÔÓÑ ÕËÁÚÁÔÅÌÉ ÎÁ ÔÅËÓÔÏ×ÙÅ ÓÔÒÏÞËÉ É ÄÅÓËÒÉÐÔÏÒÙ ÛÒÉÆÔÏ×. 

æÕÎËÃÉÉ GLUT ÍÏÇÕÔ ÂÙÔØ ËÌÁÓÓÉÆÉÃÉÒÏ×ÁÎÙ ÎÁ ÎÅÓËÏÌØËÏ ÇÒÕÐÐ ÓÏÇÌÁÓÎÏ Ó×ÏÅÊ ÆÕÎËÃÉÏÎÁÌØÎÏÓÔÉ: 

  • éÎÉÃÉÁÌÉÚÁÃÉÑ 
  • îÁÞÁÌÏ ÏÂÒÁÂÏÔËÉ ÓÏÂÙÔÉÊ 
  • õÐÒÁ×ÌÅÎÉÅ ÏËÎÁÍÉ 
  • õÐÒÁ×ÌÅÎÉÅ ÐÅÒÅËÒÙÔÉÅÍ 
  • õÐÒÁ×ÌÅÎÉÅ ÍÅÎÀ 
  • òÅÇÉÓÔÒÁÃÉÑ ×ÙÚÙ×ÁÅÍÙÈ (callback) ÆÕÎËÃÉÊ 
  • õÐÒÁ×ÌÅÎÉÅ ÉÎÄÅËÓÉÒÏ×ÁÎÎÏÊ ÐÁÌÉÔÒÏÊ Ã×ÅÔÏ× 
  • þÔÅÎÉÅ ÓÏÓÔÏÑÎÉÑ 
  • ïÔÏÂÒÁÖÅÎÉÅ ÛÒÉÆÔÏ× 
  • ïÔÏÂÒÁÖÅÎÉÅ ÇÅÏÍÅÔÒÉÞÅÓËÉÈ ÆÉÇÕÒ 
÷ ÜÔÏÊ ÓÔÁÔØÅ ÍÙ ÏÚÎÁËÏÍÉÍÓÑ Ó ÎÅËÏÔÏÒÙÍÉ ÆÕÎËÃÉÑÍÉ ÉÎÉÃÉÁÌÉÚÁÃÉÉ, ÏÂÒÁÂÏÔËÉ ÓÏÂÙÔÉÊ É ÕÐÒÁ×ÌÅÎÉÑ ÏËÎÁÍÉ, ËÏÔÏÒÙÅ ÎÅÏÂÈÏÄÉÍÙ ÄÌÑ ÚÁÐÕÓËÁ ÐÒÏÓÔÅÊÛÅÊ ÐÒÏÇÒÁÍÍÙ OpenGL. 

éÎÉÃÉÁÌÉÚÁÃÉÑ

ëÁÖÄÁÑ ÐÒÏÇÒÁÍÍÁ OpenGL, ÉÓÐÏÌØÚÕÀÝÁÑ GLUT, ÄÏÌÖÎÁ ÎÁÞÉÎÁÔØÓÑ Ó ÉÎÉÃÉÁÌÉÚÁÃÉÉ GLUT-ÍÁÛÉÎÙ. ÷ÓÅ ÆÕÎËÃÉÉ ÉÎÉÃÉÁÌÉÚÁÃÉÉ ÉÍÅÀÔ ÐÒÅÆÉËÓ glutInit-. çÌÁ×ÎÁÑ ÉÎÉÃÉÁÌÉÚÉÒÕÀÝÁÑ ÆÕÎËÃÉÑ ÎÁÚÙ×ÁÅÔÓÑ glutInit
éÓÐÏÌØÚÏ×ÁÎÉÅ 
  glutInit(int **argcp, char **argv); 
  argcp - ÜÔÏ ÕËÁÚÁÔÅÌØ ÎÁ ÅÝÅ ÎÅ ÉÚÍÅÎÅÎÎÕÀ ÐÅÒÅÍÅÎÎÕÀ argc ÇÌÁ×ÎÏÊ ÆÕÎËÃÉÉ ÐÒÏÇÒÁÍÍÙ (main). ðÏÓÌÅ ×ÏÚ×ÒÁÔÁ ÉÚ ÆÕÎËÃÉÉ, ÚÎÁÞÅÎÉÅ, ÎÁ ËÏÔÏÒÏÅ ÕËÁÚÙ×ÁÅÔ argcp, ÍÏÖÅÔ ÉÚÍÅÎÉÔØÓÑ, ÔÁË ËÁË glutInit ×ÙÞÌÅÎÑÅÔ ×ÓÅ ÏÐÃÉÉ ËÏÍÁÎÄÎÏÊ ÓÔÒÏËÉ, ÏÔÎÏÓÑÝÉÅÓÑ Ë ÂÉÂÌÉÏÔÅËÅ GLUT, ÎÁÐÒÉÍÅÒ, × ÓÉÓÔÅÍÅ X-Window ×ÓÅ ÏÐÃÉÉ, ÏÔÎÏÓÑÝÉÅÓÑ Ë ÕÐÒÁ×ÌÅÎÉÀ ÏËÎÁÍÉ, ÁÓÓÏÃÉÉÒÕÀÔÓÑ Ó GLUT
  argv - ÜÔÏ ÅÝÅ ÎÅ ÉÚÍÅÎÅÎÎÁÑ ÐÅÒÅÍÅÎÎÁÑ argv ÇÌÁ×ÎÏÊ ÆÕÎËÃÉÉ.  

glutInit ÐÏÚÁÂÏÔÉÔÓÑ Ï ÉÎÉÃÉÁÌÉÚÁÃÉÉ ÐÅÒÅÍÅÎÎÙÈ ÓÏÓÔÏÑÎÉÑ GLUT É ÏÔËÒÏÅÔ ÓÅÓÓÉÀ Ó ÓÉÓÔÅÍÏÊ ÕÐÒÁ×ÌÅÎÉÑ ÏËÎÁÍÉ. åÓÔØ ×ÓÅÇÏ ÌÉÛØ ÎÅÓËÏÌØËÏ ÆÕÎËÃÉÊ, ËÏÔÏÒÙÅ ÍÏÇÕÔ ÂÙÔØ ×ÙÚ×ÁÎÙ ÐÅÒÅÄ glutInit; ÜÔÏ ÔÏÌØËÏ ÔÅ ÆÕÎËÃÉÉ, ËÏÔÏÒÙÅ ÉÍÅÀÔ ÐÒÅÆÉËÓ glutInit-. äÁÎÎÙÅ ÆÕÎËÃÉÉ ÍÏÇÕÔ ÂÙÔØ ÉÓÐÏÌØÚÏ×ÁÎÙ ÄÌÑ ÕÓÔÁÎÏ×ËÉ ÎÁÞÁÌØÎÏÇÏ ÓÏÓÔÏÑÎÉÑ ÏËÎÁ.  îÁÐÒÉÍÅÒ: 
éÓÐÏÌØÚÏ×ÁÎÉÅ 
  glutInitWindowPosition(int x, int **y); 
  glutInitWindowSize(int width, int **height); 
  x,y  = ÐÏÚÉÃÉÑ ÏËÎÁ ÎÁ ÜËÒÁÎÅ × ÐÉËÓÅÌÑÈ (ÔÏÞÎÅÅ - ÐÏÚÉÃÉÑ ÌÅ×ÏÇÏ ×ÅÒÈÎÅÇÏ ÕÇÌÁ ÏËÎÁ) 
  width,height  - ÛÉÒÉÎÁ É ×ÙÓÏÔÁ ÏËÎÁ × ÐÉËÓÅÌÑÈ. 

åÓÔØ ÅÝÅ ÏÄÎÁ ÆÕÎËÃÉÑ, ËÏÔÏÒÁÑ ÐÒÉÓÕÔÓÔ×ÕÅÔ ÐÒÁËÔÉÞÅÓËÉ ×Ï ×ÓÅÈ ÐÒÉÌÏÖÅÎÉÑÈ OpenGL, glutInitDisplayMode()
éÓÐÏÌØÚÏ×ÁÎÉÅ 
  glutInitDisplayMode(unsigned int mode); 
  mode - ÜÔÏ ÒÅÖÉÍ ÓÏÓÔÏÑÎÉÑ ÜËÒÁÎÁ, ËÏÔÏÒÙÊ ÍÏÖÅÔ ÂÙÔØ ÐÏÌÕÞÅÎ Ó ÐÏÍÏÝØÀ Ä×ÏÉÞÎÏÊ éìé-ËÏÍÂÉÎÁÃÉÉ ÒÅÖÉÍÏ× GLUT (ËÁÖÄÙÊ ÒÅÖÉÍ ÐÒÅÄÓÔÁ×ÌÑÅÔ ÓÏÂÏÊ Ä×ÏÉÞÎÕÀ ÍÁÓËÕ). ÷ÏÚÍÏÖÎÙÅ ÚÎÁÞÅÎÉÑ ÒÅÖÉÍÏ×: 
GLUT_RGBA  òÅÖÉÍ RGBA. éÓÐÏÌØÚÕÅÔÓÑ ÐÏ ÕÍÏÌÞÁÎÉÀ, ÅÓÌÉ ÎÅ ÕËÁÚÁÎÙ Ñ×ÎÏ ÒÅÖÉÍÙ GLUT_RGBA ÉÌÉ GLUT_INDEX. 
GLUT_RGB  ôÏ ÖÅ, ÞÔÏ É GLUT_RGBA. 
GLUT_INDEX  òÅÖÉÍ ÉÎÄÅËÓÉÒÏ×ÁÎÎÙÈ Ã×ÅÔÏ×. ïÔÍÅÎÑÅÔ GLUT_RGBA. 
GLUT_SINGLE  ïËÎÏ Ó ÏÄÉÎÏÞÎÙÍ ÂÕÆÅÒÏÍ. éÓÐÏÌØÚÕÅÔÓÑ ÐÏ ÕÍÏÌÞÁÎÉÀ. 
GLUT_DOUBLE  ïËÎÏ Ó Ä×ÏÊÎÙÍ ÂÕÆÅÒÏÍ. ïÔÍÅÎÑÅÔ GLUT_SINGLE. 
GLUT_ACCUM  ïËÎÏ Ó ÁËËÕÍÕÌÉÒÕÀÝÉÍ ÂÕÆÅÒÏÍ. 
GLUT_ALPHA  ïËÎÏ Ó ÁÌØÆÁ-ËÏÍÐÏÎÅÎÔÏÊ Ë Ã×ÅÔÏ×ÙÍ ÂÕÆÅÒÁÍ. 
GLUT_DEPTH  ïËÎÏ Ó ÂÕÆÅÒÏÍ ÇÌÕÂÉÎÙ. 
GLUT_STENCIL  ïËÎÏ Ó ÂÕÆÅÒÏÍ ÔÒÁÆÁÒÅÔÏ×. 
GLUT_MULTISAMPLE  ïËÎÏ Ó ÐÏÄÄÅÒÖËÏÊ multisampling. 
GLUT_STEREO óÔÅÒÅÏ-ÏËÎÏ. 
GLUT_LUMINANCE óÔÅÒÅÏ ÏËÎÏ Ó ÑÒËÏÓÔÎÏÊ ("luminance") ÍÏÄÅÌØÀ Ã×ÅÔÏ×. 
îÅ ÂÅÓÐÏËÏÊÔÅÓØ, ÅÓÌÉ ÎÅËÏÔÏÒÙÅ ÉÚ ÕËÁÚÁÎÎÙÈ ÒÅÖÉÍÏ× ËÁÖÕÔÓÑ ÷ÁÍ ÎÅÚÎÁËÏÍÙÍÉ, ÒÁÎÏ ÉÌÉ ÐÏÚÄÎÏ ÍÙ ÏÐÉÛÅÍ ÉÈ ×ÓÅ. äÁ×ÁÊÔÅ ÏÂÒÁÔÉÍÓÑ Ë ÎÅÓËÏÌØËÉÍ ÐÒÉÍÅÒÁÍ.  ðÅÒ×ÙÊ - ÐÒÏÓÔÁÑ ÉÎÉÃÉÁÌÉÚÁÃÉÑ ÄÌÑ ÐÒÉÌÏÖÅÎÉÑ Ó ÏÄÎÉÍ ËÁÄÒÏÍ: 

#include <GL/glut.h> 

void main(int argcp, char **argv){ 

/* õÓÔÁÎÏ×ËÁ ÒÁÚÍÅÒÏ× É ÐÏÌÏÖÅÎÉÑ ÏËÎÁ */ 
glutInitWindowSize(640, 480); 
glutInitWindowPosition(0, 0); 

/* ÷ÙÂÏÒ ÒÅÖÉÍÁ ÏËÎÁ:  
   ïÄÉÎÏÞÎÙÊ ÂÕÆÅÒ É RGBA ÐÁÌÉÔÒÁ */ 
glutInitDisplayMode(GLUT_RGBA | GLUT_SINGLE); 

/* éÎÉÃÉÁÌÉÚÁÃÉÑ ÐÅÒ×ÏÎÁÞÁÌØÎÏÇÏ ÓÏÓÔÏÑÎÉÑ GLUT */ 
glutInit(&argcp, argv);  

.....ÎÅÍÎÏÇÏ ËÏÄÁ; 

}; 

÷ÔÏÒÏÊ - ÐÒÉÍÅÒ ÁÎÉÍÁÃÉÏÎÎÏÊ ÐÒÏÇÒÁÍÍÙ: 

#include <GL/glut.h> 

void main(int argcp, char **argv){ 

/* õÓÔÁÎÏ×ËÁ ÒÁÚÍÅÒÏ× É ÐÏÌÏÖÅÎÉÑ ÏËÎÁ */ 
glutInitWindowSize(640, 480); 
glutInitWindowPosition(0, 0); 

/* ÷ÙÂÏÒ ÒÅÖÉÍÁ ÏËÎÁ:  
   ä×ÏÊÎÏÊ ÂÕÆÅÒ É RGBA ÐÁÌÉÔÒÁ */ 
glutInitDisplayMode(GLUT_RGBA | GLUT_DOUBLE); 

/* éÎÉÃÉÁÌÉÚÁÃÉÑ ÐÅÒ×ÏÎÁÞÁÌØÎÏÇÏ ÓÏÓÔÏÑÎÉÑ GLUT */ 
glutInit(&argcp, argv);  

.....ÅÝÅ ÎÅÍÎÏÇÏ ËÏÄÁ; 

}; 

íÙ ÂÕÄÅÍ ×ÏÚ×ÒÁÝÁÔØÓÑ Ë ÜÔÉÍ Ä×ÕÍ ÐÒÉÍÅÒÁÍ ÐÏ ÍÅÒÅ ÔÏÇÏ, ËÁË ÂÕÄÅÍ ÕÚÎÁ×ÁÔØ GLUT ×ÓÅ ÇÌÕÂÖÅ. çÌÁ×ÎÏÅ ÒÁÚÌÉÞÉÅ ÐÒÉÍÅÒÏ× × ÔÏÍ, ÞÔÏ ×Ï ×ÔÏÒÏÍ ÓÌÕÞÁÅ ÏËÎÏ ÉÎÉÃÉÁÌÉÚÉÒÕÅÔÓÑ × ÒÅÖÉÍÅ Ä×ÏÊÎÏÇÏ ÂÕÆÅÒÁ, ÞÔÏ ÉÄÅÁÌØÎÏ ÄÌÑ ÁÎÉÍÁÃÉÉ, ÔÁË ËÁË ÕÓÔÒÁÎÑÅÔ ÜÆÆÅËÔ ÍÅÒÃÁÎÉÑ ÐÒÉ ÓÍÅÎÅ ËÁÄÒÏ× × ÁÎÉÍÁÃÉÏÎÎÏÊ ÐÏÓÌÅÄÏ×ÁÔÅÌØÎÏÓÔÉ. 

ïÂÒÁÂÏÔËÁ ÓÏÂÙÔÉÊ

ëÁË ÍÙ ÕÖÅ ÕÐÏÍÉÎÁÌÉ ×ÙÛÅ, GLUT ÐÒÅÄÓÔÁ×ÌÑÅÔ ÓÏÂÏÊ ËÏÎÅÞÎÙÊ Á×ÔÏÍÁÔ (ÂÕË×ÁÌØÎÏ - ÍÁÛÉÎÕ ÓÏÓÔÏÑÎÉÊ). ôÅÐÅÒØ ÍÙ ÐÏËÁÖÅÍ, ÞÔÏ GLUT ÒÁÚÒÁÂÏÔÁÎ É ËÁË ÓÏÂÙÔÉÊÎÏ-ÕÐÒÁ×ÌÑÅÍÙÊ ÍÅÈÁÎÉÚÍ. üÔÏ ÏÚÎÁÞÁÅÔ, ÞÔÏ ÅÓÔØ ÎÅËÏÔÏÒÙÊ ÔÁÊÍÅÒ ÉÌÉ ÐÏÓÌÅÄÏ×ÁÔÅÌØÎÙÊ ÃÉËÌ, ËÏÔÏÒÙÊ ÚÁÐÕÓËÁÅÔÓÑ ÐÏÓÌÅ ÓÏÏÔ×ÅÔÓÔ×ÕÀÝÅÊ ÉÎÉÃÉÁÌÉÚÁÃÉÉ É ÏÂÒÁÂÁÔÙ×ÁÅÔ, ÏÄÉÎ ÚÁ ÄÒÕÇÉÍ, ×ÓÅ ÓÏÂÙÔÉÑ, ÏÂßÑ×ÌÅÎÎÙÅ GLUT ×Ï ×ÒÅÍÑ ÉÎÉÃÉÁÌÉÚÁÃÉÉ. ë ÓÏÂÙÔÉÑÍ ÏÔÎÏÓÑÔÓÑ: ÝÅÌÞÏË ÍÙÛÉ, ÚÁËÒÙÔÉÅ ÏËÎÁ, ÉÚÍÅÎÅÎÉÅ Ó×ÏÊÓÔ× ÏËÎÁ, ÐÅÒÅÄ×ÉÖÅÎÉÅ ËÕÒÓÏÒÁ, ÎÁÖÁÔÉÅ ËÌÁ×ÉÛÉ, É ÄÁÖÅ ÄÏ×ÏÌØÎÏ ÌÀÂÏÐÙÔÎÏÅ "ÐÕÓÔÏÅ" (idle) ÓÏÂÙÔÉÅ, ËÏÇÄÁ ÎÉÞÅÇÏ ÎÅ ÐÒÏÉÚÏÛÌÏ! ëÁÖÄÏÅ ÉÚ ×ÏÚÍÏÖÎÙÈ ÓÏÂÙÔÉÊ ÄÏÌÖÎÏ ÂÙÔØ ÚÁÒÅÇÉÓÔÒÉÒÏ×ÁÎÏ × ÏÄÎÏÊ ÉÚ ÐÅÒÅÍÅÎÎÙÈ ÓÏÓÔÏÑÎÉÑ GLUT ÄÌÑ ÔÏÇÏ, ÞÔÏÂÙ ÐÏ ÔÁÊÍÅÒÕ ÉÌÉ × ÐÏÓÌÅÄÏ×ÁÔÅÌØÎÏÍ ÃÉËÌÅ ÐÒÏÉÓÈÏÄÉÌÁ ÐÅÒÉÏÄÉÞÅÓËÁÑ ÐÒÏ×ÅÒËÁ ×ÙÚÏ×Á ÐÏÌØÚÏ×ÁÔÅÌÅÍ ÔÏÇÏ ÉÌÉ ÉÎÏÇÏ ÓÏÂÙÔÉÑ. 
 
îÁÐÒÉÍÅÒ, ÍÙ ÍÏÖÅÍ ÚÁÒÅÇÉÓÔÒÉÒÏ×ÁÔØ "ÝÅÌÞÏË ÍÙÛËÉ" ËÁË ÓÏÂÙÔÉÅ, ÚÁ ËÏÔÏÒÙÍ ÂÕÄÅÔ ÓÌÅÄÉÔØ GLUT. óÏÂÙÔÉÑ ÒÅÇÉÓÔÒÉÒÕÀÔÓÑ ÞÅÒÅÚ ÒÅÇÉÓÔÒÁÃÉÀ ×ÙÚÙ×ÁÅÍÙÈ (callback) ÆÕÎËÃÉÊ. ÷ÓÅ ÏÎÉ ÉÍÅÀÔ ÓÉÎÔÁËÓ glut[óÏÂÙÔÉÅ]Func, × ÓÌÕÞÁÅ ÝÅÌÞËÁ ÍÙÛÉ ÍÙ ÉÍÅÅÍ glutMouseFunc. òÅÇÉÓÔÒÁÃÉÑ ×ÙÚÙ×ÁÅÍÙÈ ÆÕÎËÃÉÊ ÎÁÚÎÁÞÁÅÔ ÍÅÈÁÎÉÚÍÕ GLUT ÏÐÒÅÄÅÌÅÎÎÙÅ ÐÏÌØÚÏ×ÁÔÅÌÅÍ ÆÕÎËÃÉÉ, ËÏÔÏÒÙÅ ÄÏÌÖÎÙ ÂÙÔØ ×ÙÚ×ÁÎÙ ÐÒÉ ÎÁÓÔÕÐÌÅÎÉÉ ÔÏÇÏ ÉÌÉ ÉÎÏÇÏ ÓÏÂÙÔÉÑ. ôÁËÉÍ ÏÂÒÁÚÏÍ, ÅÓÌÉ Ñ ÎÁÐÉÛÕ ÍÏÀ ÓÏÂÓÔ×ÅÎÎÕÀ ÐÒÏÃÅÄÕÒÕ MyMouse ËÏÔÏÒÁÑ ÏÐÒÅÄÅÌÑÅÔ, ÞÔÏ ÄÅÌÁÔØ ÐÏ ÝÅÌÞËÕ ÌÅ×ÏÊ ËÎÏÐËÉ ÍÙÛÉ, (ÉÌÉ ÐÒÁ×ÏÊ, ÉÔÄ.), ÔÏ Ñ ÍÏÇÕ ÚÁÒÅÇÉÓÔÒÉÒÏ×ÁÔØ ÍÏÀ ×ÙÚÙ×ÁÅÍÕÀ ÆÕÎËÃÉÀ ÐÏÓÌÅ glutInit() × ÇÌÁ×ÎÏÊ ÆÕÎËÃÉÉ main() Ó ÐÏÍÏÝØÀ ÕÔ×ÅÒÖÄÅÎÉÑ "glutMouseFunc(MyMouse);" . 

ïÓÔÁ×ÉÍ ÎÁ ÐÏÔÏÍ, ËÁËÉÅ ×ÙÚÙ×ÁÅÍÙÅ ÆÕÎËÃÉÉ É ÓÏÂÙÔÉÑ ÒÁÚÒÅÛÅÎÙ × GLUT. äÌÑ ÎÁÓ ÓÅÊÞÁÓ ×ÁÖÎÏ, ÞÔÏ ÐÏÓÌÅ ÒÅÇÉÓÔÒÁÃÉÉ ×ÓÅÈ ÔÒÅÂÕÅÍÙÈ ÓÏÂÙÔÉÊ × ÎÁÛÅÍ ÐÒÉÌÏÖÅÎÉÉ, ÍÙ ÄÏÌÖÎÙ ×ÙÚ×ÁÔØ ÐÒÏÃÅÄÕÒÕ ÏÂÒÁÂÏÔËÉ ÓÏÂÙÔÉÊ × GLUT, Á ÉÍÅÎÎÏ - glutMainLoop(). üÔÁ ÆÕÎËÃÉÉ ÎÉËÏÇÄÁ ÎÅ ×ÏÚ×ÒÁÝÁÅÔÓÑ, ÎÁÛÁ ÐÒÏÇÒÁÍÍÁ ÐÏ ÓÕÝÅÓÔ×Õ ×ÈÏÄÉÔ × ÂÅÓËÏÎÅÞÎÙÊ ÃÉËÌ. ÷ ËÁÖÄÏÍ ÐÒÉÌÏÖÅÎÉÉ OpenGL ÆÕÎËÃÉÑ main() ÄÏÌÖÎÁ ÚÁËÁÎÞÉ×ÁÔØÓÑ ×ÙÚÏ×ÏÍ glutMainLoop(). îÁÐÒÉÍÅÒ, × ÚÁÇÏÔÏ×ËÅ ÎÁÛÅÇÏ ÐÒÉÍÅÒÁ Ó ÁÎÉÍÁÃÉÅÊ: 

#include <GL/glut.h> 

void main(int argcp, char **argv){ 

/* éÎÉÃÉÁÌÉÚÁÃÉÑ GLUT */ 
glutInit(&argcp, argv);  
glutInitWindowSize(640, 480); 
glutInitWindowPosition(0, 0); 

/* ïÔËÒÙÔÉÅ ÏËÎÁ */ 
glutCreateWindow("My OpenGL Application"); 

/* ÷ÙÂÏÒ ÒÅÖÉÍÁ:  
   ä×ÏÊÎÏÊ ÂÕÆÅÒ É RGBA ÐÁÌÉÔÒÁ */ 
glutInitDisplayMode(GLUT_RGBA | GLUT_DOUBLE); 
 

/* òÅÇÉÓÔÒÁÃÉÑ ×ÙÚÙ×ÁÅÍÙÈ ÆÕÎËÃÉÊ */ 
..... 

/* úÁÐÕÓË ÍÅÈÁÎÉÚÍÁ ÏÂÒÁÂÏÔËÉ ÓÏÂÙÔÉÊ */ 
glutMainLoop(); 
}; 

úÁÍÅÔØÔÅ, ÞÔÏ Ñ ÄÏÂÁ×ÉÌ × ËÏÄ ×ÙÚÏ× ÆÕÎËÃÉÉ, ËÏÔÏÒÕÀ ÎÉÇÄÅ ÒÁÎÅÅ ÎÅ ÕÐÏÍÉÎÁÌ. üÔÏ - ÏÄÎÁ ÉÚ ÆÕÎËÃÉÊ ÕÐÒÁ×ÌÅÎÉÑ ÏËÎÁÍÉ GLUT, glutCreateWindow(char **name). ÷ÏÔ ÞÔÏ ÍÎÅ ÏÓÏÂÅÎÎÏ ÎÒÁ×ÉÔÓÑ × ÆÉÌÏÓÏÆÉÉ OpenGL É GLUT - ÄÏÓÔÁÔÏÞÎÏ ×ÚÇÌÑÎÕÔØ ÎÁ ÎÁÚ×ÁÎÉÅ ÆÕÎËÃÉÉ, ÞÔÏÂÙ ÐÏÎÑÔØ, ÞÔÏ ÏÎÁ ÄÅÌÁÅÔ! (Create Window - ÓÏÚÄÁÔØ ÏËÎÏ). æÕÎËÃÉÑ ÐÏÚÁÂÏÔÉÔÓÑ Ï ÐÅÒÅÄÁÞÅ ÕËÁÚÁÎÉÊ ÏÔËÒÙÔØ ÏËÎÏ ÄÌÑ ÐÒÉÌÏÖÅÎÉÑ OpenGL ÎÉÖÅÓÔÏÑÝÅÊ ÓÉÓÔÅÍÅ ÕÐÒÁ×ÌÅÎÉÑ ÏËÎÁÍÉ. ïËÎÏ ÂÕÄÅÔ ÉÍÅÔØ ÚÁÇÏÌÏ×ÏË, ËÏÔÏÒÙÊ ÐÅÒÅÄÁÅÔÓÑ × ËÁÞÅÓÔ×Å ÓÔÒÏËÏ×ÏÇÏ ÐÁÒÁÍÅÔÒÁ ÆÕÎËÃÉÉ. ÷ ÓÉÓÔÅÍÅ X-Window ÜÔÏÔ ÚÁÇÏÌÏ×ÏË ÐÏÑ×ÉÔÓÑ × ÌÅ×ÏÍ ×ÅÒÈÎÅÍ ÕÇÌÕ ÚÁÇÏÌÏ×ËÁ ÏËÎÁ. óÅËÃÉÑ ÕÐÒÁ×ÌÅÎÉÑ ÏËÎÁÍÉ GLUT ×ËÌÀÞÁÅÔ × ÓÅÂÑ ÍÎÏÇÏ ÄÒÕÇÉÈ ÆÕÎËÃÉÊ, Ë ËÏÔÏÒÙÍ ÎÁÍ ×ÒÅÍÑ ÏÔ ×ÒÅÍÅÎÉ ÐÒÉÄÅÔÓÑ ÏÂÒÁÝÁÔØÓÑ. óÅÊÞÁÓ ÖÅ ÎÁÍ ÄÏÓÔÁÔÏÞÎÏ ÜÔÏÊ ÏÄÎÏÊ ÆÕÎËÃÉÉ. ñ ÔÁËÖÅ ÉÚÍÅÎÉÌ ÐÏÒÑÄÏË ÓÌÅÄÏ×ÁÎÉÑ ÉÎÉÃÉÁÌÉÚÁÃÉÏÎÎÙÈ ÆÕÎËÃÉÊ, ÞÔÏÂÙ ÐÏËÁÚÁÔØ, ÞÔÏ ÏÎÉ ÍÏÇÕÔ ÂÙÔØ ÐÏÍÅÝÅÎÙ É ÐÏÓÌÅ ×ÙÚÏ×Á glutInit(). 

÷ÅÒÎÅÍÓÑ Ë ÓÏÂÙÔÉÑÍ... ñ ÈÏÞÕ ÐÒÅÄÓÔÁ×ÉÔØ Ä×Å ×ÙÚÙ×ÁÅÍÙÅ ÆÕÎËÃÉÉ, ËÏÔÏÒÙÅ ÆÕÎÄÁÍÅÎÔÁÌØÎÙ × ÌÀÂÏÊ ÁÎÉÍÁÃÉÏÎÎÏÊ ÐÒÏÇÒÁÍÍÅ. ðÅÒ×ÁÑ - glutDisplayFunc, ËÏÔÏÒÁÑ ÕÓÔÁÎÁ×ÌÉ×ÁÅÔ ÆÕÎËÃÉÀ ÒÉÓÏ×ÁÎÉÑ ÄÌÑ ÔÅËÕÝÅÇÏ ÏËÎÁ, ×ÔÏÒÁÑ - glutIdleFunc, ËÏÔÏÒÁÑ ÕÓÔÁÎÁ×ÌÉ×ÁÅÔ ÆÕÎËÃÉÀ ÏÂÒÁÂÏÔËÉ ÐÕÓÔÏÇÏ ÓÏÂÙÔÉÑ. ïÂÅ ÒÅÇÉÓÔÒÁÃÉÏÎÎÙÅ ÆÕÎËÃÉÉ × ËÁÞÅÓÔ×Å ÐÁÒÁÍÅÔÒÁ ÉÓÐÏÌØÚÕÀÔ ÆÕÎËÃÉÉ ÔÉÐÁ void *(void). ë ÐÒÉÍÅÒÕ, ÍÙ ÎÁÐÉÛÅÍ ÄÏÐÏÌÎÉÔÅÌØÎÏ Ä×Å ×ÙÚÙ×ÁÅÍÙÅ ÆÕÎËÃÉÉ Ë ÎÁÛÅÊ ÚÁÇÏÔÏ×ËÅ ÁÎÉÍÁÃÉÏÎÎÏÊ ÐÒÏÇÒÁÍÍÙ, void MyDisplay(void), ËÏÔÏÒÁÑ ÐÏÚÁÂÏÔÉÔÓÑ Ï ×ÙÚÏ×Å ÉÎÓÔÒÕËÃÉÊ OpenGL ÄÌÑ ÏÔÒÉÓÏ×ËÉ ÓÏÂÓÔ×ÅÎÎÏ ÓÃÅÎÙ × ÏËÎÅ, É void MyIdle(void), ËÏÔÏÒÁÑ ÂÕÄÅÔ ×ÙÚÙ×ÁÔØÓÑ ËÁÖÄÙÊ ÒÁÚ, ËÏÇÄÁ ÎÅÔ ÓÏÂÙÔÉÊ ÏÔ ÐÏÌØÚÏ×ÁÔÅÌÑ, ÄÒÕÇÉÍÉ ÓÌÏ×ÁÍÉ - ×ÓÅÇÄÁ, ËÏÇÄÁ ÍÅÈÁÎÉÚÍ ÏÂÒÁÂÏÔËÉ ÓÏÂÙÔÉÊ GLUT ÐÒÏÈÏÄÉÔ × ÏÞÅÒÅÄÎÏÊ ÒÁÚ ÂÅÓËÏÎÅÞÎÙÊ ÃÉËÌ (glutMainLoop()) É ÎÅ ÎÁÈÏÄÉÔ ÎÉ ÏÄÎÏÇÏ ÎÏ×ÏÇÏ ÓÏÂÙÔÉÑ, ÏÎ ÏÂÒÁÝÁÅÔÓÑ Ë MyIdle. ðÏÞÅÍÕ Ñ ÄÏÌÖÅÎ ÒÅÇÉÓÔÒÉÒÏ×ÁÔØ ×ÙÚÙ×ÁÅÍÕÀ ÆÕÎËÃÉÀ ÄÌÑ ÐÕÓÔÏÇÏ ÓÏÂÙÔÉÑ × ÁÎÉÍÁÃÉÏÎÎÏÊ ÐÒÏÇÒÁÍÍÅ? ðÏÔÏÍÕ ÞÔÏ ÅÓÌÉ ÍÙ ÖÅÌÁÅÍ ÉÚÍÅÎÉÔØ ËÁËÏÅ-ÌÉÂÏ ÉÚ ÉÚÏÂÒÁÖÅÎÉÊ (ËÁÄÒÏ×), ÐÏËÁÚÙ×ÁÅÍÙÈ ×Ï ×ÒÅÍÑ ÁÎÉÍÁÃÉÉ, ÎÅÚÁ×ÉÓÉÍÏ ÏÔ ÄÅÊÓÔ×ÉÊ ÐÏÌØÚÏ×ÁÔÅÌÑ, ÄÏÌÖÎÁ ÓÕÝÅÓÔ×Ï×ÁÔØ ÆÕÎËÃÉÑ (×ÙÚÙ×ÁÅÍÁÑ ÆÕÎËÃÉÑ ÐÕÓÔÏÇÏ ÓÏÂÙÔÉÑ) ËÏÔÏÒÁÑ ÂÕÄÅÔ ×ÙÚÙ×ÁÔØÓÑ ÔÁË ÞÁÓÔÏ × ÔÅÞÅÎÉÉ ÒÁÂÏÔÙ ÐÒÉÌÏÖÅÎÉÑ OpenGL, ÞÔÏÂÙ ÉÚÍÅÎÑÔØ ËÁÄÒÙ ÐÒÅÖÄÅ, ÞÅÍ ÏÎÉ ÂÕÄÕÔ ÏÔÒÉÓÏ×ÁÎÙ ÆÕÎËÃÉÅÊ MyDisplay()

ðÒÉÍÅÒ ÁÎÉÍÁÃÉÉ

îÁËÏÎÅÃ, ÐÅÒÅÄ ÷ÁÍÉ ÚÁÇÏÔÏ×ËÁ ÁÎÉÍÁÃÉÏÎÎÏÊ ÐÒÏÇÒÁÍÍÙ: 
#include <GL/glut.h> 

void MyIdle(void){ 
/* ëÏÄ, ËÏÔÏÒÙÊ ÍÅÎÑÅÔ ÐÅÒÅÍÅÎÎÙÅ, ÏÐÒÅÄÅÌÑÀÝÉÅ ÓÌÅÄÕÀÝÉÊ ËÁÄÒ */ 
.... 
}; 

void MyDisplay(void){ 
/* ëÏÄ OpenGL, ËÏÔÏÒÙÊ ÏÔÏÂÒÁÖÁÅÔ ËÁÄÒ */ 
.... 
/* ðÏÓÌÅ ÏÔÒÉÓÏ×ËÉ ÍÙ ÐÅÒÅÓÔÁ×ÌÑÅÍ (ÚÁÍÅÎÑÅÍ) ÂÕÆÅÒÁ */ 
glutSwapBuffers(); 
}; 

void main(int argcp, char **argv){ 

/* éÎÉÃÉÁÌÉÚÁÃÉÑ GLUT */ 
glutInit(&argcp, argv);  
glutInitWindowSize(640, 480); 
glutInitWindowPosition(0, 0); 

/* ïÔËÒÙÔÉÅ ÏËÎÁ */ 
glutCreateWindow("My OpenGL Application"); 

/* ÷ÙÂÏÒ ÒÅÖÉÍÁ:  
   ä×ÏÊÎÏÊ ÂÕÆÅÒ É RGBA ÐÁÌÉÔÒÁ */ 
glutInitDisplayMode(GLUT_RGBA | GLUT_DOUBLE); 

/* òÅÇÉÓÔÒÁÃÉÑ ×ÙÚÙ×ÁÅÍÙÈ ÆÕÎËÃÉÊ */ 
glutDisplayFunc(MyDisplay) 
glutIdleFunc(MyIdle) 

/* úÁÐÕÓË ÍÅÈÁÎÉÚÍÁ ÏÂÒÁÂÏÔËÉ ÓÏÂÙÔÉÊ */ 
glutMainLoop(); 
}; 

úÁÍÅÔØÔÅ, ÞÔÏ × ËÏÎÃÅ ÆÕÎËÃÉÉ MyDisplay Ñ ÄÏÂÁ×ÉÌ ×ÙÚÏ× ÎÏ×ÏÊ ÆÕÎËÃÉÉ GLUT, glutSwapBuffers(). (Swap Buffers - ÏÂÍÅÎ ÂÕÆÅÒÏ×). üÔÏ ÏÞÅÎØ ÐÏÌÅÚÎÏ ÐÒÉ ÁÎÉÍÁÃÉÉ. íÙ ÉÓÐÏÌØÚÕÅÍ ÏËÎÏ Ó Ä×ÏÊÎÏÊ ÂÕÆÅÒÉÚÁÃÉÅÊ, ÏÄÉÎ ÂÕÆÅÒ ÏÔÏÂÒÁÖÁÅÍÙÊ É ×ÔÏÒÏÊ - ÓÐÒÑÔÁÎÎÙÊ. ÷ ÔÁËÏÍ ÒÅÖÉÍÅ ÉÎÓÔÒÕËÃÉÉ OpenGL ÐÏ ÒÉÓÏ×ÁÎÉÀ ÉÚÏÂÒÁÖÅÎÉÊ ×ÓÅÇÄÁ ÐÒÉÍÅÎÑÀÔÓÑ Ë ÓÐÒÑÔÁÎÎÏÍÕ ÂÕÆÅÒÕ. ÷ÙÚÏ× ÆÕÎËÃÉÉ glutSwapBuffers ÏÂÍÅÎÉ×ÁÅÔ ÂÕÆÅÒÁ, ÏÔÏÂÒÁÖÁÑ ÏËÎÏ ÃÅÌÉËÏÍ ÐÏÓÌÅ ÔÏÇÏ, ËÁË ÏÎÏ ÕÖÅ ÓÆÏÒÍÉÒÏ×ÁÎÏ. üÔÁ ÔÅÈÎÏÌÏÇÉÑ ÏÂÙÞÎÁ × ËÏÍÐØÀÔÅÒÎÏÊ ÁÎÉÍÁÃÉÉ, ÔÁË ËÁË ÎÅ ÐÏÚ×ÏÌÑÅÔ ÞÅÌÏ×ÅÞÅÓËÏÍÕ ÇÌÁÚÕ ×ÉÄÅÔØ, ËÁË ÌÉÎÉÑ ÚÁ ÌÉÎÉÅÊ ÆÏÒÍÉÒÕÅÔÓÑ ËÁÄÒ. 

äÁÎÎÏÇÏ ÍÁÔÅÒÉÁÌÁ ÄÏÓÔÁÔÏÞÎÏ ÄÌÑ ÔÏÇÏ, ÞÔÏÂÙ ÎÁÞÁÔØ ÐÉÓÁÔØ ÓÏÂÓÔ×ÅÎÎÏÅ ÐÒÉÌÏÖÅÎÉÅ OpenGL. íÙ ÏÐÕÓÔÉÌÉ ÔÏÌØËÏ ÉÎÓÔÒÕËÃÉÉ OpenGL × ÆÕÎËÃÉÉ MyDisplay, ËÏÔÏÒÙÅ ÓÏÂÓÔ×ÅÎÎÏ ÚÁÎÉÍÁÀÔÓÑ ÒÉÓÏ×ÁÎÉÅÍ... ÎÏ ÜÔÏ ÕÖÅ ÄÒÕÇÁÑ ÉÓÔÏÒÉÑ ;-). 

÷ ÓÌÅÄÕÀÝÅÊ ÓÔÁÔØÅ ÐÏ ÐÒÏÇÒÁÍÍÉÒÏ×ÁÎÉÀ GLUT ÍÙ ÕÇÌÕÂÉÍÓÑ × ÆÕÎËÃÉÏÎÁÌØÎÙÅ ×ÏÚÍÏÖÎÏÓÔÉ ÓÅËÃÉÉ ÕÐÒÁ×ÌÅÎÉÑ ÏËÎÁÍÉ × GLUT, ÎÁÐÒÉÍÅÒ - ËÁË ÍÏÖÎÏ ÏÔËÒÙÔØ ÎÅÓËÏÌØËÏ ÓÃÅÎ ×ÎÕÔÒÉ ÏÄÎÏÇÏ ÏËÎÁ. íÙ ÉÚÕÞÉÍ ÔÁËÖÅ ÉÓÐÏÌØÚÏ×ÁÎÉÅ ÍÅÎÀ, ×ËÌÀÞÁÑ ÏÓÏÂÅÎÎÏÓÔÉ ÐÅÒÅÎÏÓÉÍÏÓÔÉ. 

ðÅÒÅ×ÏÄ: Vladas Lapinskas


äÁÌØÎÅÊÛÁÑ ÉÎÆÏÒÍÁÃÉÑ:
© 1998 Miguel Angel Sepúlveda
This website is mantained by Miguel A Sepulveda.