Главная » Просмотр файлов » Ю.М. Баяковский, А.В. Игнатенко - Начальный курс OpenGL (PDF)

Ю.М. Баяковский, А.В. Игнатенко - Начальный курс OpenGL (PDF) (1124368), страница 14

Файл №1124368 Ю.М. Баяковский, А.В. Игнатенко - Начальный курс OpenGL (PDF) (Ю.М. Баяковский, А.В. Игнатенко - Начальный курс OpenGL (PDF)) 14 страницаЮ.М. Баяковский, А.В. Игнатенко - Начальный курс OpenGL (PDF) (1124368) страница 142019-05-11СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

Текст из файла (страница 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 óêàçàòåëüíàïàðàìåòðû, ïåðåäàâàåìûå ïðîãðàììå ïðè çàïóñêå, êîòîðûé îïèñûâàåòñÿ òàì æå.

Характеристики

Тип файла
PDF-файл
Размер
1,68 Mb
Тип материала
Высшее учебное заведение

Список файлов книги

Свежие статьи
Популярно сейчас
Как Вы думаете, сколько людей до Вас делали точно такое же задание? 99% студентов выполняют точно такие же задания, как и их предшественники год назад. Найдите нужный учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
6451
Авторов
на СтудИзбе
305
Средний доход
с одного платного файла
Обучение Подробнее