÷×ÅÄÅÎÉÅ
ðÏ ÚÁÍÙÓÌÕ ÒÁÚÒÁÂÏÔÞÉËÏ×, ÓÐÅÃÉÆÉËÁÃÉÑ 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
|