Ю.М. Баяковский, А.В. Игнатенко - Начальный курс OpenGL (PDF) (1124368), страница 14
Текст из файла (страница 14)
Íàïðèìåð:struct c i t y _ l i s t{};int num_cities ; /*float * p o s i t i o n ; /*char ** name ;/*float s i z e ;/*÷èñëî ã î ð î ä î â â ñïèñêå */êîîðäèíàòû ã î ð î ä à */óêàçàòåëü íà íàçâàíèÿ ã î ð î ä î â */ðàçìåð òî÷êè , îáîçíà÷àþùåé ã î ð î ä */Òåïåðü ãîðîäà ðàçíûõ ðàçìåðîâ õðàíÿòñÿ â ðàçíûõ ñïèñêàõ.Ïîëîæåíèÿ òî÷åê õðàíÿòñÿ îòäåëüíî â äèíàìè÷åñêîì ìàññèâå.Ïîñëå ðåîðãàíèçàöèè ìû èñêëþ÷àåì íåîáõîäèìîñòü â óñëîâíîìîïåðàòîðå âíóòðèglBegin/glEnd è ïîëó÷àåì âîçìîæíîñòü èñïîëü-çîâàòü ìàññèâû âåðøèí äëÿ îïòèìèçàöèè.  ðåçóëüòàòå íàøàôóíêöèÿ âûãëÿäèò ñëåäóþùèì îáðàçîì:void d r a w _ c i t i e s ( struct c i t y _ l i s t{*list )int i ;/* ðèñóåì òî÷êè */g l P o i n t S i z e ( l i s t −>s i z e ) ;g l V e r t e x P o i n t e r ( 2 , GL_FLOAT, 0 ,l i s t −>num_cities ,l i s t −>p o s i t i o n ) ;glDrawArrays ( GL_POINTS, 0 , l i s t −>num_cities ) ;/* ðèñóåì íàçâàíèå ã î ð î ä à */for ( i =0; i < l i s t −>num_cities ; i ++){}}DrawText ( c i t y l i s t [ i ] .
l o n g i t u d e ,ci ty li st [ i ] . latitudec i t y l i s t [ i ] . name ) ;Ãëàâà 9. Îïòèìèçàöèÿ ïðîãðàìì1209.2. Îïòèìèçàöèÿ âûçîâîâ OpenGL9.2.1. Ïåðåäà÷à äàííûõ â OpenGL äàííîì ðàçäåëå ðàññìîòðèì ñïîñîáû ìèíèìèçàöèè âðåìåíèíà ïåðåäà÷ó äàííûõ î ïðèìèòèâàõ â OpenGL.Èñïîëüçóéòå ñâÿçàííûå ïðèìèòèâûÑâÿçàííûåïðèìèòèâû,òàêèåêàêGL_LINES,GL_LINE_LOOP, GL_TRIANGLE_STRIP, GL_TRIANGLE_FANè GL_QUAD_STRIP òðåáóþò äëÿ îïðåäåëåíèÿ ìåíüøå âåðøèí,÷åìîòäåëüíûåëèíèÿèëèìíîãîóãîëüíèê.Ýòîóìåíüøàåòêîëè÷åñòâî äàííûõ, ïåðåäàâàåìûõ OpenGL.Èñïîëüçóéòå ìàññèâû âåðøèíÍà áîëüøèíñòâå àðõèòåêòóð çàìåíà ìíîæåñòâåííûõ âûçîâîâglVertex/glColor/glNormalíà ìåõàíèçì ìàññèâîâ âåðøèí ìîæåòáûòü î÷åíü âûèãðûøíîé.Èñïîëüçóéòå èíäåêñèðîâàííûå ïðèìèòèâû íåêîòîðûõ ñëó÷àÿõ äàæå ïðè èñïîëüçîâàíèè ñâÿçàííûõïðèìèòèâîâGL_TRIANGLE_STRIP (GL_QUAD_STRIP)âåðøè-íû äóáëèðóþòñÿ.
×òîáû íå ïåðåäàâàòü â OpenGL äóáëè, óâåëè÷èâàÿ íàãðóçêó íà øèíó, èñïîëüçóéòå êîìàíäóglDrawElements().Çàäàâàéòå íåîáõîäèìûå ìàññèâû îäíîé êîìàíäîéÂìåñòî èñïîëüçîâàíèÿ êîìàíäglNormalPointerglVertexPointer, glColorPointer,ëó÷øå ïîëüçîâàòüñÿ îäíîé êîìàíäîévoid g l I n t e r l e a v e d A r r a y s ( G l i n t format ,Glsizei stride ,* ptr ) ;void9.2. Îïòèìèçàöèÿ âûçîâîâ OPENGL121Òàê, åñëè èìååòñÿ ñòðóêòóðàtypedef struct tag_VERTEX_DATA{float c o l o r [ 4 ] ;float normal [ 3 ] ;float v e r t e x [ 3 ] ;}VERTEX_DATA;VERTEX_DATA * pData ;òî ïàðàìåòðû ìîæíî ïåðåäàòü ñ ïîìîùüþ ñëåäóþùåé êîìàíäûg l I n t e r l e a v e d A r r a y s (GL_C4F_N3F_V3F, 0 , pData ) ;÷òî îçíà÷àåò, ÷òî ïåðâûå ÷åòûðåòðèoatoatê íîðìàëè, è ïîñëåäíèå òðèîòíîñÿòñÿ ê öâåòó, çàòåìoatçàäàþò êîîðäèíàòûâåðøèíû.
Áîëåå ïîäðîáíîå îïèñàíèå êîìàíäû ñìîòðèòå â ñïåöèôèêàöèè OpenGL.Õðàíèòå äàííûå î âåðøèíàõ â ïàìÿòè ïîñëåäîâàòåëüíîÏîñëåäîâàòåëüíîå ðàñïîëîæåíèå äàííûõ â ïàìÿòè óëó÷øàåòñêîðîñòü îáìåíà ìåæäó îñíîâíîé ïàìÿòüþ è ãðàôè÷åñêîé ïîäñèñòåìîé.Èñïîëüçóéòå âåêòîðíûå âåðñèèglTexCoord.ÔóíêöèèglVertex, glColorglVertex, glColor, glNormalèè ò.ä., êîòîðûå â êà÷åñòâå àðãó-ìåíòîâ ïðèíèìàþò óêàçàòåëè (íàïðèìåð,glVertex3fv(v)),ìîãóòðàáîòàòü çíà÷èòåëüíî áûñòðåå, ÷åì èõ ñîîòâåòñòâóþùèå âåðñèèglVertex3f(x,y,z).Óìåíüøàéòå ñëîæíîñòü ïðèìèòèâîâÂî ìíîãèõ ñëó÷àÿõ áóäüòå âíèìàòåëüíû, ÷òîáû íå ðàçáèâàòüáîëüøèå ïëîñêîñòè íà ÷àñòè ñèëüíåå, ÷åì íåîáõîäèìî.
Ïîýêñïåðèìåíòèðóéòå, íàïðèìåð, ñ ïðèìèòèâàìè GLU äëÿ îïðåäåëåíèÿ íàèëó÷øåãî ñîîòíîøåíèÿ êà÷åñòâà è ïðîèçâîäèòåëüíîñòè.Ãëàâà 9. Îïòèìèçàöèÿ ïðîãðàìì122Òåêñòóðèðîâàííûå îáúåêòû, íàïðèìåð, ìîãóò áûòü êà÷åñòâåííîîòîáðàæåíû ñ íåáîëüøîé ñëîæíîñòüþ ãåîìåòðèè.Èñïîëüçóéòå äèñïëåéíûå ñïèñêèÈñïîëüçóéòå äèñïëåéíûå ñïèñêè äëÿ íàèáîëåå ÷àñòî âûâîäèìûõ îáúåêòîâ. Äèñïëåéíûå ñïèñêè ìîãóò õðàíèòüñÿ â ïàìÿòè ãðàôè÷åñêîé ïîäñèñòåìû è, ñëåäîâàòåëüíî, èñêëþ÷àòü ÷àñòûåïåðåìåùåíèÿ äàííûõ èç îñíîâíîé ïàìÿòè.Íå óêàçûâàéòå íåíóæíûå àòðèáóòû âåðøèíglNormal.
ÅñëèglTexCoord, è ò.ä.Åñëè îñâåùåíèå âûêëþ÷åíî, íå âûçûâàéòåèñïîëüçóþòñÿ òåêñòóðû, íå âûçûâàéòåíåÌèíèìèçèðóéòå êîëè÷åñòâî ëèøíåãî êîäà ìåæäó îïåðàòîðíûìè ñêîáêàìèglBegin/glEndÄëÿ ìàêñèìàëüíîé ïðîèçâîäèòåëüíîñòè íà high-end ñèñòåìàõâàæíî, ÷òîáû èíôîðìàöèÿ î âåðøèíàõ áûëà ïåðåäàíà ãðàôè÷åñêîé ïîäñèñòåìå ìàêñèìàëüíî áûñòðî. Èçáåãàéòå ëèøíåãî êîäàìåæäóglBegin/glEnd.Ïðèìåð íåóäà÷íîãî ðåøåíèÿ:g l B e g i n (GL_TRIANGLE_STRIP) ;for ( i =0; i < n ; i ++){if ( lighting ){glNormal3fv ( norm [ i ] ) ;}glVertex3fv ( vert [ i ] ) ;}glEnd ( ) ;9.2.
Îïòèìèçàöèÿ âûçîâîâ OPENGL123Ýòà êîíñòðóêöèÿ ïëîõà òåì, ÷òî ìû ïðîâåðÿåì ïåðåìåííóþlightingïåðåä êàæäîé âåðøèíîé. Ýòîãî ìîæíî èçáåæàòü, çà ñ÷åò÷àñòè÷íîãî äóáëèðîâàíèÿ êîäà:if ( lighting ){g l B e g i n (GL_TRIANGLE_STRIP) ;for ( i =0; i < n ; i ++){}glNormal3fv ( norm [ i ] ) ;glVertex3fv ( vert [ i ] ) ;}glEnd ( ) ;else{g l B e g i n (GL_TRIANGLE_STRIP) ;for ( i =0; i < n ; i ++){}glVertex3fv ( vert [ i ] ) ;}glEnd ( ) ;9.2.2.
ÏðåîáðàçîâàíèÿÏðåîáðàçîâàíèÿ âêëþ÷àþò â ñåáÿ òðàíñôîðìàöèè âåðøèí îòêîîðäèíàò, óêàçàííûõ âglVertex,ê îêîííûì êîîðäèíàòàì, îòñå-÷åíèå, îñâåùåíèå è ò.ä.ÎñâåùåíèåÈçáåãàéòå èñïîëüçîâàíèÿ òî÷å÷íûõ èñòî÷íèêîâ ñâåòà.Èçáåãàéòå èñïîëüçîâàíèÿ äâóõñòîðîííåãî îñâåùåíèÿ (twosided lighting).Ãëàâà 9. Îïòèìèçàöèÿ ïðîãðàìì124Èçáåãàéòå èñïîëüçîâàíèÿ ëîêàëüíîé ìîäåëè îñâåùåíèÿ.Èçáåãàéòå ÷àñòîé ñìåíû ïàðàìåòðàGL_SHININESS.Ðàññìîòðèòå âîçìîæíîñòü çàðàíåå ïðîñ÷èòàòü îñâåùåíèå.Ìîæíî ïîëó÷èòü ýôôåêò îñâåùåíèÿ, çàäàâàÿ öâåòà âåðøèíâìåñòî íîðìàëåé.Îòêëþ÷àéòåíîðìàëèçàöèþâåêòîðîâíîðìàëåé,êîãäàýòî íå ÿâëÿåòñÿ íåîáõîäèìûìÊîìàíäàglEnable/Disable(GL_NORMALIZE) óïðàâëÿåò íîðìà-ëèçàöèåé âåêòîðîâ íîðìàëåé ïåðåä èñïîëüçîâàíèåì.
Åñëè âû íåèñïîëüçóåòå êîìàíäóglScale , òî íîðìàëèçàöèþ ìîæíî îòêëþ÷èòüáåç ïîñòîðîííèõ ýôôåêòîâ. Ïî óìîë÷àíèþ ýòà îïöèÿ âûêëþ÷åíà.Èñïîëüçóéòå ñâÿçàííûå ïðèìèòèâûÑâÿçàííûåïðèìèòèâû,òàêèåêàêGL_LINES,GL_LINE_LOOP, GL_TRIANGLE_STRIP, GL_TRIANGLE_FAN,è GL_QUAD_STRIP óìåíüøàþò íàãðóçêó íà êîíâåéåð OpenGL,à òàêæå óìåíüøàþò êîëè÷åñòâî äàííûõ, ïåðåäàâàåìûõ ãðàôè÷åñêîé ïîäñèñòåìå.9.2.3. ÐàñòåðèçàöèÿÐàñòåðèçàöèÿ ÷àñòî ÿâëÿåòñÿ óçêèì ìåñòîì ïðîãðàììíûõ ðåàëèçàöèé OpenGL.Îòêëþ÷àéòå òåñò íà ãëóáèíó, êîãäà â ýòîì íåò íåîáõîäèìîñòèÔîíîâûå îáúåêòû, íàïðèìåð, ìîãóò áûòü íàðèñîâàíû áåç òåñòà íà ãëóáèíó, åñëè îíè âèçóàëèçèðóåòñÿ ïåðâûìè.9.2.
Îïòèìèçàöèÿ âûçîâîâ OPENGL125Èñïîëüçóéòå îòñå÷åíèå îáðàòíûõ ãðàíåé ïîëèãîíîâÇàìêíóòûå îáúåêòû ìîãóò áûòü íàðèñîâàíû ñ óñòàíîâëåííûìðåæèìîì îòñå÷åíèÿ îáðàòíûõ ãðàíåéglEnable(GL_CULL_FACE)Èíîãäà ýòî ïîçâîëÿåò îòáðîñèòü äî ïîëîâèíû ìíîãîóãîëüíèêîâ,íå ðàñòåðèçóÿ èõ.Èçáåãàéòå ëèøíèõ îïåðàöèé ñ ïèêñåëÿìèÌàñêèðîâàíèå, àëüôà-ñìåøèâàíèå è äðóãèå ïîïèêñåëüíûåîïåðàöèè ìîãóò çàíèìàòü ñóùåñòâåííîå âðåìÿ íà ýòàïå ðàñòåðèçàöèè. Îòêëþ÷àéòå âñå îïåðàöèè, êîòîðûå âû íå èñïîëüçóåòå.Óìåíüøàéòå ðàçìåð îêíà èëè ðàçðåøåíèå ýêðàíàÏðîñòîé ñïîñîá óìåíüøèòü âðåìÿ ðàñòåðèçàöèè óìåíüøèòü÷èñëî ïèêñåëåé, êîòîðûå áóäóò íàðèñîâàíû.
Åñëè ìåíüøèå ðàçìåðû îêíà èëè ìåíüøåå ðàçðåøåíèå ýêðàíà ïðèåìëåìû, òî ýòîõîðîøèé ïóòü äëÿ óâåëè÷åíèÿ ñêîðîñòè ðàñòåðèçàöèè.9.2.4. ÒåêñòóðèðîâàíèåÍàëîæåíèå òåêñòóð ÿâëÿåòñÿ äîðîãîé îïåðàöèåé, êàê â ïðîãðàììíûõ, òàê è â àïïàðàòíûõ ðåàëèçàöèÿõ.Èñïîëüçóéòå ýôôåêòèâíûå ôîðìàòû õðàíåíèÿ èçîáðàæåíèéÔîðìàòGL_UNSIGNED_BYTE îáû÷íî íàèáîëåå âñåãî ïîäõî-äèò äëÿ ïåðåäà÷è òåêñòóðû â OpenGL.Îáúåäèíÿéòå òåêñòóðû â òåêñòóðíûå îáúåêòû èëè äèñïëåéíûå ñïèñêè.Ýòî îñîáåííî âàæíî, åñëè âû èñïîëüçóåòå íåñêîëüêî òåêñòóð,è ïîçâîëÿåò ãðàôè÷åñêîé ïîäñèñòåìå ýôôåêòèâíî óïðàâëÿòüÃëàâà 9.
Îïòèìèçàöèÿ ïðîãðàìì126ðàçìåùåíèåì òåêñòóð â âèäåîïàìÿòè.Íå èñïîëüçóéòå òåêñòóðû áîëüøîãî ðàçìåðàÍåáîëüøèå òåêñòóðû áûñòðåå îáðàáàòûâàþòñÿ è çàíèìàþòìåíüøå ïàìÿòè, ÷òî ïîçâîëÿåò õðàíèòü ñðàçó íåñêîëüêî òåêñòóðâ ïàìÿòè ãðàôè÷åñêîé ïîäñèñòåìû.Êîìáèíèðóéòå íåáîëüøèå òåêñòóðû â îäíóÅñëè âû èñïîëüçóåòå íåñêîëüêî ìàëåíüêèõ òåêñòóð, òî ìîæíîîáúåäèíèòü èõ â îäíó áîëüøåãî ðàçìåðà è èçìåíèòü òåêñòóðíûåêîîðäèíàòû äëÿ ðàáîòû ñ íóæíîé ïîäòåêñòóðîé. Ýòî ïîçâîëÿåòóìåíüøèòü ÷èñëî ïåðåêëþ÷åíèé òåêñòóð.Àíèìèðîâàííûå òåêñòóðûÅñëè âû õîòèòå èñïîëüçîâàòü àíèìèðîâàííûå òåêñòóðû, íåèñïîëüçóéòå êîìàíäóglTexImage2D÷òîáû îáíîâëÿòü îáðàç òåê-ñòóðû.
Âìåñòî ýòîãî ðåêîìåíäóåòñÿ âûçûâàòüèëèglTexCopyTexSubImage2D.glTexSubImage2D9.2.5. Î÷èñòêà áóôåðîâÎ÷èñòêà áóôåðîâ öâåòà, ãëóáèíû, ìàñêè è áóôåðà-íàêîïèòåëÿ ìîæåò òðåáîâàòü çíà÷èòåëüíîãî âðåìåíè.  ýòîì ðàçäåëå îïèñàíû íåêîòîðûå ïðèåìû, êîòîðûå ìîãóò ïîìî÷ü îïòèìèçèðîâàòüýòó îïåðàöèþ.Èñïîëüçóéòå êîìàíäó glClear ñ îñòîðîæíîñòüþÎ÷èùàéòå âñå íóæíûå áóôåðû ñ ïîìîùüþ îäíîé êîìàíäûglClear.Íåâåðíî:9.2. Îïòèìèçàöèÿ âûçîâîâ OPENGL127g l C l e a r (GL_COLOR_BUFFER_BIT) ;i f ( s t e n c i l i n g ) /* î÷èñòèòü áóôåð ìàñêè? */{g l C l e a r (GL_STENCIL_BUFFER_BIT) ;}Âåðíî:if ( stenciling ){}/* î÷èñòèòü áóôåð ìàñêè? */g l C l e a r (GL_COLOR_BUFFER_BIT |STENCIL_BUFFER_BIT ) ;else{}g l C l e a r (GL_COLOR_BUFFER_BIT) ;9.2.6.
ÐàçíîåÏðîâåðÿéòå îøèáêè GL âî âðåìÿ íàïèñàíèÿ ïðîãðàììÂûçûâàéòå êîìàíäóglGetError() äëÿ ïðîâåðêè, íå ïðîèçîøëîëè îøèáêè âî âðåìÿ âûçîâà îäíîé èç ôóíêöèé OpenGL. Êàêïðàâèëî, îøèáêè âîçíèêàþò èç-çà íåâåðíûõ ïàðàìåòðîâ êîìàíäOpenGL èëè íåâåðíîé ïîñëåäîâàòåëüíîñòè êîìàíä. Äëÿ ôèíàëüíûõ âåðñèé êîäà îòêëþ÷àéòå ýòè ïðîâåðêè, òàê êàê îíè ìîãóòñóùåñòâåííî çàìåäëèòü ðàáîòó. Äëÿ ïðîâåðêè ìîæíî èñïîëüçîâàòü, íàïðèìåð, òàêîé ìàêðîñ:#include <a s s e r t . h>#define CHECK_GL \a s s e r t ( glGetError ( ) != GL_NO_ERROR) ;Èñïîëüçîâàòü åãî ìîæíî òàê:g l B e g i n (GL_TRIANGLES) ;glVertex3f (1 ,1 ,1);glEnd ( ) ;Ãëàâà 9.
Îïòèìèçàöèÿ ïðîãðàìì128CHECK_GL;ÈñïîëüçóéòåglColorMaterialâìåñòîglMaterialÅñëè â ñöåíå ìàòåðèàëû îáúåêòîâ ðàçëè÷àþòñÿ ëèøü îäíèìïàðàìåòðîì, êîìàíäàglMaterial.glColorMaterialìîæåò áûòü áûñòðåå, ÷åìÌèíèìèçèðóéòå ÷èñëî èçìåíåíèé ñîñòîÿíèÿ OpenGLglEnable, glDisable,Êîìàíäû, èçìåíÿþùèå ñîñòîÿíèå OpenGL (glBindTextureè äðóãèå), âûçûâàþò ïîâòîðíûå âíóòðåííèå ïðî-âåðêè öåëîñòíîñòè, ñîçäàíèå äîïîëíèòåëüíûõ ñòðóêòóð äàííûõè ò.ä., ÷òî ìîæåò ïðèâîäèòü ê çàäåðæêàì.Èçáåãàéòå èñïîëüçîâàíèÿ êîìàíäû glPolygonModeÅñëè âàì íåîáõîäèìî ðèñîâàòü ìíîãî íåçàêðàøåííûõ ìíî-glBegin ñ GL_POINTS, GL_LINES,GL_LINE_LOOP èëè GL_LINE_STRIP âìåñòî èçìåíåíèÿ ðåæèìàãîóãîëüíèêîâ, èñïîëüçóéòåðèñîâàíèÿ ïðèìèòèâîâ, òàê êàê ýòî ìîæåò áûòü íàìíîãî áûñòðåå.Êîíå÷íî, ýòè ðåêîìåíäàöèè îõâàòûâàþò ëèøü ìàëóþ ÷àñòüâîçìîæíîñòåé ïî îïòèìèçàöèè OpenGL-ïðèëîæåíèé.
Òåì íå ìåíåå, ïðè èõ ïðàâèëüíîì èñïîëüçîâàíèè ìîæíî äîñòè÷ü ñóùåñòâåííîãî óñêîðåíèÿ ðàáîòû âàøèõ ïðîãðàìì.9.3. Êîíòðîëüíûå âîïðîñû1) Ïåðå÷èñëèòå èçâåñòíûå âàì ìåòîäû âûñîêîóðîâíåâîé îïòèìèçàöèè OpenGL-ïðèëîæåíèé.2) Ïî÷åìó ïðåäïî÷òèòåëüíåå èñïîëüçîâàíèå ñâÿçàííûõ ïðèìèòèâîâ?9.3. Êîíòðîëüíûå âîïðîñû3) Êàêàÿ èç äâóõ êîìàíä âûïîëíÿåòñÿ OpenGL áûñòðåå?glVertex3f (1 ,1 ,1);èëèfloat vct [ 3 ] = { 1 , 1 , 1 } ;g l V e r t e x 3 f v ( vct ) ;129×àñòü IIIÑîçäàíèå ïðèëîæåíèé ñOpenGL131Ãëàâà 10.OpenGL-ïðèëîæåíèÿ ñïîìîùüþ GLUT10.1.
Ñòðóêòóðà GLUT-ïðèëîæåíèÿÄàëåå áóäåì ðàññìàòðèâàòü ïîñòðîåíèå êîíñîëüíîãî ïðèëîæåíèÿ ïðè ïîìîùè áèáëèîòåêè GLUT. Ýòà áèáëèîòåêà îáåñïå÷èâàåò åäèíûé èíòåðôåéñ äëÿ ðàáîòû ñ îêíàìè âíå çàâèñèìîñòè îòïëàòôîðìû, ïîýòîìó îïèñûâàåìàÿ íèæå ñòðóêòóðà ïðèëîæåíèÿîñòàåòñÿ íåèçìåííîé äëÿ îïåðàöèîííûõ ñèñòåì Windows, Linuxè äðóãèõ.Ôóíêöèè GLUT ìîãóò áûòü êëàññèôèöèðîâàíû íà íåñêîëüêîãðóïï ïî ñâîåìó íàçíà÷åíèþ:èíèöèàëèçàöèÿ;íà÷àëî îáðàáîòêè ñîáûòèé;óïðàâëåíèå îêíàìè;óïðàâëåíèå ìåíþ;ðåãèñòðàöèÿ ôóíêöèé ñ îáðàòíûì âûçîâîì;133Ãëàâà 10. OPENGL-ïðèëîæåíèÿ ñ ïîìîùüþ GLUT134óïðàâëåíèå èíäåêñèðîâàííîé ïàëèòðîé öâåòîâ;îòîáðàæåíèå øðèôòîâ;îòîáðàæåíèå äîïîëíèòåëüíûõ ãåîìåòðè÷åñêèõ ôèãóð (òîð,êîíóñ è äð.).Èíèöèàëèçàöèÿ ïðîâîäèòñÿ ñ ïîìîùüþ ôóíêöèè:g l u t I n i t ( int * argcp , char ** argv )Ïåðåìåííàÿíóþargc,argcpåñòü óêàçàòåëü íà ñòàíäàðòíóþ ïåðåìåí-îïèñûâàåìóþ â ôóíêöèèmain(),àargv óêàçàòåëüíàïàðàìåòðû, ïåðåäàâàåìûå ïðîãðàììå ïðè çàïóñêå, êîòîðûé îïèñûâàåòñÿ òàì æå.