Главная » Просмотр файлов » Баяковский.Начальный курс OpenGL

Баяковский.Начальный курс OpenGL (1124482), страница 6

Файл №1124482 Баяковский.Начальный курс OpenGL (Раздаточные материалы) 6 страницаБаяковский.Начальный курс OpenGL (1124482) страница 62019-05-11СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

Текст из файла (страница 6)

Àâòîìàòè÷åñêîå íàëîæåíèå òåêñòóðû ïðåäóñìîòðåíî òîëüêî äëÿ ôèãóðèç áèáëèîòåêè GLU (ñîçäàíèå òåêñòóð â OpenGL áóäåò ðàññìàòðèâàòüñÿ â ãëàâå 6).3.4. Äèñïëåéíûå ñïèñêè47Íàïðèìåð, ÷òîáû íàðèñîâàòü ñôåðó èëè öèëèíäð, íàäî ñíà÷àëà ñîçäàòü îáúåêò ñïåöèàëüíîãî òèïàGLUquadricObjñ ïîìîùüþêîìàíäûGLUquadricObj * gluNewQuadric ( void ) ;à çàòåì âûçâàòü ñîîòâåòñòâóþùóþ êîìàíäó:void gluSphere ( GLUquadricObj* qobj ,GLdouble radius ,GLint s l i c e s ,GLint s t a c k s )void g l u C y l i n d e r ( GLUquadricObj* qobj ,GLdouble baseRadius ,GLdouble topRadius ,GLdouble height ,GLint s l i c e s ,GLint s t a c k s )ãäå ïàðàìåòðstacks âäîëüslicesçàäàåò êîëè÷åñòâî ðàçáèåíèé âîêðóã îñè z, àîñè z.Áîëåå ïîäðîáíóþ èíôîðìàöèþ îá ýòèõ è äðóãèõ êîìàíäàõïîñòðîåíèÿ ïðèìèòèâîâ ìîæíî íàéòè â ïðèëîæåíèè À.3.4.

Äèñïëåéíûå ñïèñêèÅñëè ìû íåñêîëüêî ðàç îáðàùàåìñÿ ê îäíîé è òîé æå ãðóïïåêîìàíä, òî èõ ìîæíî îáúåäèíèòü â òàê íàçûâàåìûé äèñïëåéíûé ñïèñîê (display list) è âûçûâàòü åãî ïðè íåîáõîäèìîñòè. Äëÿòîãî, ÷òîáû ñîçäàòü íîâûé äèñïëåéíûé ñïèñîê, íàäî ïîìåñòèòüâñå êîìàíäû, êîòîðûå äîëæíû â íåãî âîéòè, ìåæäó ñëåäóþùèìèîïåðàòîðíûìè ñêîáêàìè:void glNewList ( GLuint l i s t , GLenum mode )void glEndList ( )Ãëàâà 3. Ðèñîâàíèå ãåîìåòðè÷åñêèõ îáúåêòîâ48Äëÿ ðàçëè÷åíèÿ ñïèñêîâ èñïîëüçóþòñÿ öåëûå ïîëîæèòåëüíûå ÷èñëà, çàäàâàåìûå ïðè ñîçäàíèè ñïèñêà çíà÷åíèåì ïàðàìåòðàlist .modeÏàðàìåòðîïðåäåëÿåò ðåæèì îáðàáîòêè êîìàíä,âõîäÿùèõ â ñïèñîê:GL_COMPILE êîìàíäû çàïèñûâàþòñÿ â ñïèñîê áåç âûïîë-íåíèÿ;GL_COMPILE_AND_EXECUTE êîìàíäû âûïîëíÿþò-ñÿ, à çàòåì çàïèñûâàþòñÿ â ñïèñîê.Ïîñëå òîãî, êàê ñïèñîê ñîçäàí, åãî ìîæíî âûçâàòü êîìàíäîévoid g l C a l l L i s t ( GLuint l i s t )óêàçàâ â ïàðàìåòðå list èäåíòèôèêàòîð íóæíîãî ñïèñêà.×òîáû âûçâàòü ñðàçó íåñêîëüêî ñïèñêîâ, ìîæíî âîñïîëüçîâàòüñÿ êîìàíäîévoid g l C a l l L i s t s (G L s i z e i n , GLenum type ,*lists )const GLvoidâûçûâàþùåé n ñïèñêîâ ñ èäåíòèôèêàòîðàìè èç ìàññèâà lists,òèï ýëåìåíòîâ êîòîðîãî óêàçûâàåòñÿ â ïàðàìåòðå type.

Ýòî ìî-GL_BYTE, GL_UNSIGNED_BYTE, GL_SHORT,GL_INT, GL_UNSIGNED_INT è íåêîòîðûå äðóãèå. Äëÿ óäàëå-ãóò áûòü òèïûíèÿ ñïèñêîâ èñïîëüçóåòñÿ êîìàíäàvoid g l D e l e t e L i s t s ( GLint l i s t , G L s i z e i range )êîòîðàÿ óäàëÿåò ñïèñêè ñ èäåíòèôèêàòîðàìè ID èç äèàïàçîíàlist ≤ ID ≤ list + range − 1.Ïðèìåð:glNewList ( 1 , GL_COMPILE) ;g l B e g i n (GL_TRIANGLES) ;glVertex3f (1.0 f , 1.0 f , 1.0 f ) ;glVertex3f (10.0 f , 1.0 f , 1.0 f ) ;glVertex3f (10.0 f , 10.0 f , 1.0 f ) ;3.5.

Ìàññèâû âåðøèí49glEnd ( ) ;glEndList ( )...glCallList (1);Äèñïëåéíûå ñïèñêè â îïòèìàëüíîì (ñêîìïèëèðîâàííîì) âèäå õðàíÿòñÿ â ïàìÿòè ñåðâåðà, ÷òî ïîçâîëÿåò ðèñîâàòü ïðèìèòèâû â òàêîé ôîðìå ìàêñèìàëüíî áûñòðî.  òî æå âðåìÿ áîëüøèå îáúåìû äàííûõ çàíèìàþò ìíîãî ïàìÿòè, ÷òî âëå÷åò, â ñâîþî÷åðåäü, ïàäåíèå ïðîèçâîäèòåëüíîñòè.

Òàêèå áîëüøèå îáúåìû(áîëüøå íåñêîëüêèõ äåñÿòêîâ òûñÿ÷ ïðèìèòèâîâ) ëó÷øå ðèñîâàòü ñ ïîìîùüþ ìàññèâîâ âåðøèí.3.5. Ìàññèâû âåðøèíÅñëè âåðøèí ìíîãî, òî, ÷òîáû íå âûçûâàòü äëÿ êàæäîé êîìàíäóglVertex,óäîáíî îáúåäèíÿòü âåðøèíû â ìàññèâû, èñïîëü-çóÿ êîìàíäóvoid g l V e r t e x P o i n t e r ( GLint s i z e , GLenum type ,G L s i z e i s t r i d e , void * ptr )êîòîðàÿ îïðåäåëÿåò ñïîñîá õðàíåíèÿ è êîîðäèíàòû âåðøèí.Ïðè ýòîì size îïðåäåëÿåò ÷èñëî êîîðäèíàò âåðøèíû (ìîæåò áûòüðàâåí 2, 3, 4), type îïðåäåëÿåò òèï äàííûõ (ìîæåò áûòü ðàâåíGL_SHORT, GL_INT, GL_FLOAT, GL_DOUBLE).Èíîãäà óäîáíîõðàíèòü â îäíîì ìàññèâå äðóãèå àòðèáóòû âåðøèíû, òîãäà ïàðàìåòð stride çàäàåò ñìåùåíèå îò êîîðäèíàò îäíîé âåðøèíû äîêîîðäèíàò ñëåäóþùåé; åñëè stride ðàâåí íóëþ, ýòî çíà÷èò, ÷òîêîîðäèíàòû ðàñïîëîæåíû ïîñëåäîâàòåëüíî.

 ïàðàìåòðå ptr óêàçûâàåòñÿ àäðåñ, ãäå íàõîäÿòñÿ äàííûå.Àíàëîãè÷íî ìîæíî îïðåäåëèòü ìàññèâ íîðìàëåé, öâåòîâ èíåêîòîðûõ äðóãèõ àòðèáóòîâ âåðøèíû, èñïîëüçóÿ êîìàíäûvoid glNormalPointer ( GLenum type , G L s i z e i s t r i d e ,Ãëàâà 3. Ðèñîâàíèå ãåîìåòðè÷åñêèõ îáúåêòîâ50void * p o i n t e r )void g l C o l o r P o i n t e r ( GLint s i z e , GLenum type ,G L s i z e i s t r i d e , void * p o i n t e r )Äëÿ òîãî, ÷òîáû ýòè ìàññèâû ìîæíî áûëî èñïîëüçîâàòü âäàëüíåéøåì, íàäî âûçâàòü êîìàíäóvoidg l E n a b l e C l i e n t S t a t e (GLenum array )ñ ïàðàìåòðàìè GL_VERTEX_ARRAY, GL_NORMAL_ARRAY,GL_COLOR_ARRAY ñîîòâåòñòâåííî.Ïîñëå îêîí÷àíèÿ ðàáîòû ñ ìàññèâîì æåëàòåëüíî âûçâàòü êîìàíäóvoid g l D i s a b l e C l i e n t S t a t e (GLenum array )ñ ñîîòâåòñòâóþùèì çíà÷åíèåì ïàðàìåòðàarray.Äëÿ îòîáðàæåíèÿ ñîäåðæèìîãî ìàññèâîâ èñïîëüçóåòñÿ êîìàíäàvoid glArrayElement ( GLint index )êîòîðàÿ ïåðåäàåò OpenGL àòðèáóòû âåðøèíû, èñïîëüçóÿ ýëåìåíòû ìàññèâà ñ íîìåðîì index.

Ýòî àíàëîãè÷íî ïîñëåäîâàòåëüíîìó ïðèìåíåíèþ êîìàíä âèäàglColor, glNormal, glVertexc ñîîò-âåòñòâóþùèìè ïàðàìåòðàìè. Îäíàêî âìåñòî íåå îáû÷íî âûçûâàåòñÿ êîìàíäàvoid glDrawArrays (GLenum mode , GLint f i r s t ,G L s i z e i count )ðèñóþùàÿcount ïðèìèòèâîâ, îïðåäåëÿåìûõ ïàðàìåòðîì mode,èñïîëüçóÿ ýëåìåíòû èç ìàññèâîâ ñ èíäåêñàìè îòcount − 1.f irstäîf irst +Ýòî ýêâèâàëåíòíî âûçîâó ïîñëåäîâàòåëüíîñòè êîìàíäglArrayElement()ñ ñîîòâåòñòâóþùèìè èíäåêñàìè. ñëó÷àå, åñëè îäíà âåðøèíà âõîäèò â íåñêîëüêî ïðèìèòèâîâ,âìåñòî äóáëèðîâàíèÿ åå êîîðäèíàò â ìàññèâå óäîáíî èñïîëüçîâàòü åå èíäåêñ.Äëÿ ýòîãî íàäî âûçâàòü êîìàíäó3.6. Êîíòðîëüíûå âîïðîñû51void glDrawElements (GLenum mode , G L s i z e i count ,GLenum type , void * i n d i c e s )ãäåindices ýòîìàññèâíîìåðîââåðøèí,êîòîðûåíà-type îïðåäåGL_UNSIGNED_BYTE,GL_UNSIGNED_SHORT, GL_UNSIGNED_INT, à count çàäàåò èõäîèñïîëüçîâàòüëÿåòòèïäëÿýëåìåíòîâïîñòðîåíèÿýòîãîïðèìèòèâîâ,ìàññèâà:êîëè÷åñòâî.Âàæíî îòìåòèòü, ÷òî èñïîëüçîâàíèå ìàññèâîâ âåðøèí ïîçâîëÿåò îïòèìèçèðîâàòü ïåðåäà÷ó äàííûõ íà ñåðâåð OpenGL, è,êàê ñëåäñòâèå, ïîâûñèòü ñêîðîñòü ðèñîâàíèÿ òðåõìåðíîé ñöåíû.Òàêîé ìåòîä îïðåäåëåíèÿ ïðèìèòèâîâ ÿâëÿåòñÿ îäíèì èç ñàìûõáûñòðûõ è õîðîøî ïîäõîäèò äëÿ âèçóàëèçàöèè áîëüøèõ îáúåìîâäàííûõ.3.6.

Êîíòðîëüíûå âîïðîñû1) ×òî òàêîå ôóíêöèÿ îáðàòíîãî âûçîâà è êàê ôóíêöèè îáðàòíîãî âûçîâà ìîãóò áûòü èñïîëüçîâàíû äëÿ ðàáîòû ñOpenGL?2) Äëÿ ÷åãî íóæíà ôóíêöèÿ îáíîâëåíèÿ èçîáðàæåíèÿ è ÷òîîíà äåëàåò?3) ×òî òàêîå ïðèìèòèâ â OpenGL?4) ×òî òàêîå àòðèáóò? Ïåðå÷èñëèòå èçâåñòíûå âàì àòðèáóòûâåðøèí â OpenGL.5) ×òî â OpenGL ÿâëÿåòñÿ àòîìàðíûì ïðèìèòèâîì? Êàêèåòèïû ïðèìèòèâîâ âû çíàåòå?6) Äëÿ ÷åãî â OpenGL èñïîëüçóþòñÿ êîìàíäûglDisable?glEnableèÃëàâà 3. Ðèñîâàíèå ãåîìåòðè÷åñêèõ îáúåêòîâ527) ×òî òàêîå îïåðàòîðíûå ñêîáêè è äëÿ ÷åãî îíè èñïîëüçóþòñÿâ OpenGL?8) ×òî òàêîå äèñïëåéíûå ñïèñêè? Êàê îïðåäåëèòü ñïèñîê èêàê âûçâàòü åãî îòîáðàæåíèå?9) Ïîÿñíèòå îðãàíèçàöèþ ðàáîòû ñ ìàññèâàìè âåðøèí è èõîòëè÷èå îò äèñïëåéíûõ ñïèñêîâ.10) Ïîÿñíèòå ðàáîòó êîìàíäûglDrawElements().3.6.

Êîíòðîëüíûå âîïðîñûÐèñ. 3.1. Ïðèìèòèâû OpenGL.53Ãëàâà 4.Ïðåîáðàçîâàíèÿ îáúåêòîâ OpenGL èñïîëüçóþòñÿ êàê îñíîâíûå òðè ñèñòåìû êîîðäèíàò: ëåâîñòîðîííÿÿ, ïðàâîñòîðîííÿÿ è îêîííàÿ. Ïåðâûå äâå ñèñòåìû ÿâëÿþòñÿ òðåõìåðíûìè è îòëè÷àþòñÿ äðóã îò äðóãà íàïðàâëåíèåì îñè z: â ïðàâîñòîðîííåé îíà íàïðàâëåíà íà íàáëþäàòåëÿ, â ëåâîñòîðîííåé â ãëóáèíó ýêðàíà.

Îñü x íàïðàâëåíàâïðàâî îòíîñèòåëüíî íàáëþäàòåëÿ, îñü y ââåðõ.Ëåâîñòîðîííÿÿ ñèñòåìà èñïîëüçóåòñÿ äëÿ çàäàíèÿ çíà÷åíèéïàðàìåòðàì êîìàíäûgluPerspective() , glOrtho(),êîòîðûå áóäóòðàññìîòðåíû â ïóíêòå 4.3. Ïðàâîñòîðîííÿÿ ñèñòåìà êîîðäèíàòèñïîëüçóåòñÿ âî âñåõ îñòàëüíûõ ñëó÷àÿõ. Îòîáðàæåíèå òðåõìåðíîé èíôîðìàöèè ïðîèñõîäèò â äâóõìåðíóþ îêîííóþ ñèñòåìóêîîðäèíàò.Ñòðîãî ãîâîðÿ, OpenGL ïîçâîëÿåò ïóòåì ìàíèïóëÿöèé ñ ìàòðèöàìè ìîäåëèðîâàòü êàê ïðàâóþ, òàê è ëåâóþ ñèñòåìó êîîðäèíàò. Íî íà äàííîì ýòàïå ëó÷øå ïîéòè ïðîñòûì ïóòåì è çàïîìíèòü: îñíîâíîé ñèñòåìîé êîîðäèíàò OpenGL ÿâëÿåòñÿ ïðàâîñòîðîííÿÿ ñèñòåìà.55Ãëàâà 4.

Ïðåîáðàçîâàíèÿ îáúåêòîâ56(à)(á)(â)Ðèñ. 4.1. Ñèñòåìû êîîðäèíàò â OpenGL. (à) ïðàâîñòîðîííÿÿ,(á) ëåâîñòîðîííÿÿ, (â) îêîííàÿ.4.1. Ðàáîòà ñ ìàòðèöàìèÄëÿ çàäàíèÿ ðàçëè÷íûõ ïðåîáðàçîâàíèé îáúåêòîâ ñöåíû âOpenGL èñïîëüçóþòñÿ îïåðàöèè íàä ìàòðèöàìè, ïðè ýòîì ðàç-Öëè÷àþò òðè òèïà ìàòðèö: ìîäåëüíî-âèäîâàÿ, ìàòðèöà ïðîåêöèéè ìàòðèöà òåêñòóðû. Âñå îíè èìåþò ðàçìåð 44. Âèäîâàÿ ìàòðè-öà îïðåäåëÿåò ïðåîáðàçîâàíèÿ îáúåêòà â ìèðîâûõ êîîðäèíàòàõ,òàêèå êàê ïàðàëëåëüíûé ïåðåíîñ, èçìåíåíèå ìàñøòàáà è ïîâîðîò.Ìàòðèöà ïðîåêöèé îïðåäåëÿåò, êàê áóäóò ïðîåöèðîâàòüñÿ òðåõìåðíûå îáúåêòû íà ïëîñêîñòü ýêðàíà (â îêîííûå êîîðäèíàòû), àìàòðèöà òåêñòóðû îïðåäåëÿåò íàëîæåíèå òåêñòóðû íà îáúåêò.Óìíîæåíèå êîîðäèíàò íà ìàòðèöû ïðîèñõîäèò â ìîìåíò âûçîâà ñîîòâåòñòâóþùåé êîìàíäû OpenGL, îïðåäåëÿþùåé êîîðäèíàòó (êàê ïðàâèëî, ýòî êîìàíäàglVertex.)Äëÿ òîãî ÷òîáû âûáðàòü, êàêóþ ìàòðèöó íàäî èçìåíèòü, èñïîëüçóåòñÿ êîìàíäà:void glMatrixMode (GLenum mode )âûçîâêîòîðîéñîçíà÷åíèåìmode, ðàâíûìGL_TEXTURE, âêëþ-ïàðàìåòðàGL_MODELVIEW, GL_PROJECTIONèëè÷àåò ðåæèì ðàáîòû ñ ìîäåëüíî-âèäîâîé ìàòðèöåé, ìàòðèöåéïðîåêöèé, èëè ìàòðèöåé òåêñòóðû ñîîòâåòñòâåííî.

Äëÿ âûçîâàêîìàíä, çàäàþùèõ ìàòðèöû òîãî èëè èíîãî òèïà, íåîáõîäèìî4.1. Ðàáîòà ñ ìàòðèöàìè57ñíà÷àëà óñòàíîâèòü ñîîòâåòñòâóþùèé ðåæèì.Äëÿ îïðåäåëåíèÿ ýëåìåíòîâ ìàòðèöû òåêóùåãî òèïà âûçûâàåòñÿ êîìàíäàvoid glLoadMatrix [ f d ] ( GLtype *m)ãäåm óêàçûâàåò íà ìàññèâ èç 16 ýëåìåíòîâ òèïà oat èëè doubleâ ñîîòâåòñòâèè ñ íàçâàíèåì êîìàíäû, ïðè ýòîì ñíà÷àëà â íåìäîëæåí áûòü çàïèñàí ïåðâûé ñòîëáåö ìàòðèöû, çàòåì âòîðîé,òðåòèé è ÷åòâåðòûé. Åùå ðàç îáðàòèì âíèìàíèå: â ìàññèâåmìàòðèöà çàïèñàíà ïî ñòîëáöàì.Êîìàíäàvoidg l L o a d I d e n t i t y ( void )çàìåíÿåò òåêóùóþ ìàòðèöó íà åäèíè÷íóþ.×àñòî áûâàåò íåîáõîäèìî ñîõðàíèòü ñîäåðæèìîå òåêóùåéìàòðèöû äëÿ äàëüíåéøåãî èñïîëüçîâàíèÿ, äëÿ ÷åãî ïðèìåíÿþòñÿ êîìàíäûvoid glPushMatrix ( void )void glPopMatrix ( void )Îíè çàïèñûâàþò è âîññòàíàâëèâàþò òåêóùóþ ìàòðèöó èç ñòåêà, ïðè÷åì äëÿ êàæäîãî òèïà ìàòðèö ñòåê ñâîé.

Äëÿ ìîäåëüíîâèäîâûõ ìàòðèö åãî ãëóáèíà ðàâíà êàê ìèíèìóì 32, äëÿ îñòàëüíûõ êàê ìèíèìóì 2.Äëÿ óìíîæåíèÿ òåêóùåé ìàòðèöû íà äðóãóþ ìàòðèöó èñïîëüçóåòñÿ êîìàíäàvoid glMultMatrix [ f d ] ( GLtype *m)ãäå ïàðàìåòðmÖäîëæåí çàäàâàòü ìàòðèöó ðàçìåðîì 4îáîçíà÷èòü òåêóùóþ ìàòðèöó çàòî â ðåçóëüòàòå âûïîëíåíèÿ êîìàíäûíîâèòñÿ ìàòðèöà4. ÅñëèM , ïåðåäàâàåìóþ ìàòðèöó çà T ,glMultMatrixòåêóùåé ñòà-M ∗ T . Îäíàêî îáû÷íî äëÿ èçìåíåíèÿ ìàòðèöûòîãî èëè èíîãî òèïà óäîáíî èñïîëüçîâàòü ñïåöèàëüíûå êîìàíäû, êîòîðûå ïî çíà÷åíèÿì ñâîèõ ïàðàìåòðîâ ñîçäàþò íóæíóþìàòðèöó è óìíîæàþò åå íà òåêóùóþ.Ãëàâà 4. Ïðåîáðàçîâàíèÿ îáúåêòîâ58 öåëîì, äëÿ îòîáðàæåíèÿ òðåõìåðíûõ îáúåêòîâ ñöåíû â îêíî ïðèëîæåíèÿ èñïîëüçóåòñÿ ïîñëåäîâàòåëüíîñòü, ïîêàçàííàÿ íàðèñóíêå 4.2.Ðèñ.

4.2. Ïðåîáðàçîâàíèÿ êîîðäèíàò â OpenGLÇàïîìíèòå: âñå ïðåîáðàçîâàíèÿ îáúåêòîâ è êàìåðû â OpenGLïðîèçâîäÿòñÿ ñ ïîìîùüþ óìíîæåíèÿ âåêòîðîâ êîîðäèíàò íà ìàòðèöû. Ïðè÷åì óìíîæåíèå ïðîèñõîäèò íà òåêóùóþ ìàòðèöó â ìîìåíò îïðåäåëåíèÿ êîîðäèíàòû êîìàíäîé glVertex è íåêîòîðûìèäðóãèìè.4.2. Ìîäåëüíî-âèäîâûå ïðåîáðàçîâàíèÿÊ ìîäåëüíî-âèäîâûì ïðåîáðàçîâàíèÿì áóäåì îòíîñèòü ïåðåíîñ, ïîâîðîò è èçìåíåíèå ìàñøòàáà âäîëü êîîðäèíàòíûõ îñåé.Äëÿ ïðîâåäåíèÿ ýòèõ îïåðàöèé äîñòàòî÷íî óìíîæèòü íà ñîîòâåòñòâóþùóþ ìàòðèöó êàæäóþ âåðøèíó îáúåêòà è ïîëó÷èòü èç-4.2. Ìîäåëüíî-âèäîâûå ïðåîáðàçîâàíèÿ59ìåíåííûå êîîðäèíàòû ýòîé âåðøèíû: 0 xxy 0 y  =M z 0 z 11ãäåM ìàòðèöà ìîäåëüíî-âèäîâîãî ïðåîáðàçîâàíèÿ.

Ïåðñïåê-òèâíîå ïðåîáðàçîâàíèå è ïðîåöèðîâàíèå ïðîèçâîäèòñÿ àíàëîãè÷íî. Ñàìà ìàòðèöà ìîæåò áûòü ñîçäàíà ñ ïîìîùüþ ñëåäóþùèõêîìàíä:void g l T r a n s l a t e [ f d ] ( GLtype x , GLtype y , GLtype z )void g l R o t a t e [ f d ] ( GLtype angle ,GLtype x , GLtype y , GLtype z )void g l S c a l e [ f d ] ( GLtype x , GLtype y , GLtype z )glTranslateïðîèçâîäèò ïåðåíîñ îáúåêòà, ïðèáàâëÿÿ ê êîîðäè-íàòàì åãî âåðøèí çíà÷åíèÿ ñâîèõ ïàðàìåòðîâ.glRotate ïðîèçâîäèò ïîâîðîò îáúåêòà ïðîòèâ ÷àñîâîé ñòðåëêè(x,y,z).glScale ïðîèçâîäèò ìàñøòàáèðîâàíèå îáúåêòà (ñæàòèå èëèðàñòÿæåíèå) âäîëü âåêòîðà (x,y,z) , óìíîæàÿ ñîîòâåòñòâóþùèåíà óãîë angle (èçìåðÿåòñÿ â ãðàäóñàõ) âîêðóã âåêòîðàêîîðäèíàòû åãî âåðøèí íà çíà÷åíèÿ ñâîèõ ïàðàìåòðîâ.Âñå ýòè ïðåîáðàçîâàíèÿ èçìåíÿþò òåêóùóþ ìàòðèöó, à ïîòîìó ïðèìåíÿþòñÿ ê ïðèìèòèâàì, êîòîðûå îïðåäåëÿþòñÿ ïîçæå. ñëó÷àå, åñëè íàäî, íàïðèìåð, ïîâåðíóòü îäèí îáúåêò ñöåíû,à äðóãîé îñòàâèòü íåïîäâèæíûì, óäîáíî ñíà÷àëà ñîõðàíèòü òåêóùóþ âèäîâóþ ìàòðèöó â ñòåêå êîìàíäîéâûçâàòüglRotateglPushMatrix,çàòåìñ íóæíûìè ïàðàìåòðàìè, îïèñàòü ïðèìèòèâû,èç êîòîðûõ ñîñòîèò ýòîò îáúåêò, à çàòåì âîññòàíîâèòü òåêóùóþìàòðèöó êîìàíäîéglPopMatrix.Êðîìå èçìåíåíèÿ ïîëîæåíèÿ ñàìîãî îáúåêòà, ÷àñòî áûâàåòíåîáõîäèìî èçìåíèòü ïîëîæåíèå íàáëþäàòåëÿ, ÷òî òàêæå ïðèâîäèò ê èçìåíåíèþ ìîäåëüíî-âèäîâîé ìàòðèöû.Ýòî ìîæíî ñäåëàòü ñ ïîìîùüþ êîìàíäûÃëàâà 4.

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

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

Список файлов учебной работы

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