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

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

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

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

Èñïîëüçóåòñÿ ïî óìîë÷àíèþ, åñ-ëè íå óêàçàíû ðåæèìû GLUT_RGBA èëèGLUT_RGB Òî æå, ÷òî èGLUT_INDEX.GLUT_RGBA.GLUT_INDEX Ðåæèì èíäåêñèðîâàííûõ öâåòîâ (èñïîëüçîâà-íèå ïàëèòðû). ÎòìåíÿåòGLUT_RGBA.GLUT_SINGLE Îêíî ñ îäèíî÷íûì áóôåðîì. Èñïîëüçóåòñÿïî óìîë÷àíèþ.GLUT_DOUBLE Îêíî ñ äâîéíûì áóôåðîì.ÎòìåíÿåòGLUT_SINGLE.10.1. Ñòðóêòóðà GLUT-ïðèëîæåíèÿ135GLUT_STENCIL Îêíî ñ áóôåðîì ìàñêè.GLUT_ACCUM Îêíî ñ áóôåðîì-íàêîïèòåëåì.GLUT_DEPTH Îêíî ñ áóôåðîì ãëóáèíû.Ýòî íåïîëíûé ñïèñîê ïàðàìåòðîâ äëÿ äàííîé ôóíêöèè, îäíàêî äëÿ áîëüøèíñòâà ñëó÷àåâ ýòîãî áûâàåò äîñòàòî÷íî.Ðàáîòà ñ áóôåðîì ìàñêè è áóôåðîì íàêîïëåíèÿ îïèñàíà âãëàâå 7.Ôóíêöèè áèáëèîòåêè GLUT ðåàëèçóþò òàê íàçûâàåìûé ñîáûòèéíî-óïðàâëÿåìûé ìåõàíèçì.

Ýòî îçíà÷àåò, ÷òî åñòü íåêîòîðûé âíóòðåííèé öèêë, êîòîðûé çàïóñêàåòñÿ ïîñëå ñîîòâåòñòâóþùåé èíèöèàëèçàöèè è îáðàáàòûâàåò îäíî çà äðóãèì âñå ñîáûòèÿ, îáúÿâëåííûå âî âðåìÿ èíèöèàëèçàöèè. Ê ñîáûòèÿì îòíîñÿòñÿ: ùåë÷îê ìûøè, çàêðûòèå îêíà, èçìåíåíèå ñâîéñòâ îêíà,ïåðåäâèæåíèå êóðñîðà, íàæàòèå êëàâèøè è ¾ïóñòîå¿ (idle) ñîáûòèå, êîãäà íè÷åãî íå ïðîèñõîäèò.

Äëÿ ïðîâåäåíèÿ ïåðèîäè÷åñêîéïðîâåðêè ñîâåðøåíèÿ òîãî èëè èíîãî ñîáûòèÿ íàäî çàðåãèñòðèðîâàòü ôóíêöèþ, êîòîðàÿ áóäåò åãî îáðàáàòûâàòü. Äëÿ ýòîãî èñïîëüçóþòñÿ ôóíêöèè âèäà:void glutDisplayFunc ( void ( * func ) ( void ) )void glutReshapeFunc ( void ( * func ) ( int width ,int h e i g h t ) )void glutMouseFunc ( void ( * func ) ( int button ,int s t a t e , int x , int y ) )void g l u t I d l e F u n c ( void ( * func ) ( void ) )void glutMotionFunc ( void ( * func ) ( int x , int y ) ) ;void glutPassiveMotionFunc (void ( * func ) ( int x , int y ) ) ;Ïàðàìåòðîì äëÿ íèõ ÿâëÿåòñÿ èìÿ ñîîòâåòñòâóþùåé ôóíêöèè çàäàííîãî òèïà. Ñ ïîìîùüþglutDisplayFunc() çàäàåòñÿ ôóíê-öèÿ ðèñîâàíèÿ äëÿ îêíà ïðèëîæåíèÿ, êîòîðàÿ âûçûâàåòñÿ ïðèíåîáõîäèìîñòè ñîçäàíèÿ èëè âîññòàíîâëåíèÿ èçîáðàæåíèÿ. ÄëÿÃëàâà 10.

OPENGL-ïðèëîæåíèÿ ñ ïîìîùüþ GLUT136ÿâíîãî óêàçàíèÿ, ÷òî îêíî íàäî îáíîâèòü, èíîãäà óäîáíî èñïîëüçîâàòü ôóíêöèþvoid g l u t P o s t R e d i s p l a y ( void )×åðåçglutReshapeFunc()óñòàíàâëèâàåòñÿ ôóíêöèÿ îáðàáîòêèèçìåíåíèÿ ðàçìåðîâ îêíà ïîëüçîâàòåëåì, êîòîðîé ïåðåäàþòñÿíîâûå ðàçìåðû.glutMouseFunc() îïðåäåëÿåò ôóíêöèþ-îáðàáîò÷èê êîìàíä îòglutIdleFunc() çàäàåò ôóíêöèþ, êîòîðàÿ áóäåò âûçûâàòü-ìûøè, àñÿ êàæäûé ðàç, êîãäà íåò ñîáûòèé îò ïîëüçîâàòåëÿ.Ôóíêöèÿ, îïðåäåëÿåìàÿglutMotionFunñ(),âûçûâàåòñÿ, êîãäàïîëüçîâàòåëü äâèãàåò óêàçàòåëü ìûøè, óäåðæèâàÿ êíîïêó ìûøè.glutPassiveMotionFuncðåãèñòðèðóåò ôóíêöèþ, âûçûâàåìóþ,åñëè ïîëüçîâàòåëü äâèãàåò óêàçàòåëü ìûøè è íå íàæàòî íè îäíîé êïîïêè ìûøè.Êîíòðîëü âñåõ ñîáûòèé ïðîèñõîäèò âíóòðè áåñêîíå÷íîãî öèêëà â ôóíêöèèvoidglutMainLoop( void )êîòîðàÿ îáû÷íî âûçûâàåòñÿ â êîíöå ëþáîé ïðîãðàììû, èñïîëüçóþùåé GLUT.

Ñòðóêòóðà ïðèëîæåíèÿ, èñïîëüçóþùåãî àíèìàöèþ, áóäåò ñëåäóþùåé:#i n c l u d e <GL/ g l u t . h>void MyIdle ( void ){/* Êîä , êîòîðûé ìåíÿåò ïåðåìåííûå ,îïðåäåëÿþùèå ñëåäóþùèé êàäð */...};void MyDisplay ( void ){/* Êîä OpenGL , êîòîðûé îòîáðàæàåò êàäð */...10.2. GLUT â ñðåäå MICROSOFT VISUAL C++ 6.0/* Ïîñëå ðèñîâàíèÿ ïåðåñòàâëÿåìglutSwapBuffers ( ) ;};void main ( int argcp , char{137áóôåðû */** argv )/* Èíèöèàëèçàöèÿ GLUT */g l u t I n i t (&argcp , argv ) ;glutInitWindowSize ( 6 4 0 , 4 8 0 ) ;gl u tI ni tW in do wP os it i on ( 0 , 0 ) ;/* Îòêðûòèå îêíà */glutCreateWindow ( "My OpenGL A p p l i c a t i o n " ) ;/* Âûáîð ðåæèìà :äâîéíîé áóôåð è RGBA öâåòà */g l u t I n i t D i s p l a y M o d e (GLUT_RGBA |GLUT_DOUBLE | GLUT_DEPTH) ;/* Ðåãèñòðàöèÿ âûçûâàåìûõ ôóíêöèé */glutDisplayFunc ( MyDisplay ) ;g l u t I d l e F u n c ( MyIdle ) ;/* Çàïóñê ìåõàíèçìà îáðàáîòêè ñîáûòèé */glutMainLoop ( ) ;}; ñëó÷àå , åñëè ïðèëîæåíèå äîëæíî ñòðîèòü ñòàòè÷íîå èçîáðàæåíèå, ìîæíî çàìåíèòüGLUT_DOUBLEíàGLUT_SINGLE,òàê êàê îäíîãî áóôåðà â ýòîì ñëó÷àå áóäåò äîñòàòî÷íî, è óáðàòüâûçîâ ôóíêöèèglutIdleFunc().10.2.

GLUT â ñðåäå Microsoft Visual C++ 6.0Ïåðåä íà÷àëîì ðàáîòû íåîáõîäèìî ñêîïèðîâàòü ôàéëû glut.h,glut32.lib glut32.dll â êàòàëîãè MSVC\Include\Gl, MSVC\Lib,Windows\System ñîîòâåòñòâåííî. Òàêæå â ýòèõ êàòàëîãàõ íàäî ïðîâåðèòü íàëè÷èå ôàéëîâ gl.h, glu.h, opengl32.lib, glu32.lib,opengl32.dll, glu32.dll, êîòîðûå îáû÷íî âõîäÿò â ñîñòàâ VisualC++ è Windows. Ïðè èñïîëüçîâàíèè êîìàíä èç áèáëèîòåêèÃëàâà 10. OPENGL-ïðèëîæåíèÿ ñ ïîìîùüþ GLUT138GLAUX ê ïåðå÷èñëåííûì ôàéëàì íàäî äîáàâèòü ïîäêëþ÷àåìûåôàéëû áèáëèîòåêè glaux.h è glaux.lib.Äëÿ ñîçäàíèÿ ïðèëîæåíèÿ íàäî âûïîëíèòü ñëåäóþùèå äåéñòâèÿ:ˆProjectsOK.ˆˆÑîçäàíèå ïðîåêòà: äëÿ ýòîãî íàäî âûáðàòü File NewWin32 Console Application, íàáðàòü èìÿ ïðîåêòà, ïîÿâèâøåìñÿ îêíå âûáðàòü ¾An empty project¿, Finish,OK. Òåêñò ïðîãðàììû ìîæíî ëèáî ðàçìåñòèòü â ñîçäàííîì òåêñòîâîì ôàéëå (âûáðàâ FileNewFilesText File), ëèáîäîáàâèòü ôàéë ñ ðàñøèðåíèåì *.c èëè *.cpp â ïðîåêò (âûáðàâ ProjectˆAdd To ProjectFiles).Ïîäêëþ÷èòü ê ïðîåêòó áèáëèîòåêè OpenGL.

Äëÿ ýòîãî íàäî âûáðàòü ProjectSettingsLink è â ïîëå Object\librarymodules íàáðàòü íàçâàíèÿ íóæíûõ áèáëèîòåê: opengl32.lib,glu32.lib, glut32.lib è, åñëè íàäî, glaux.lib.ˆˆÄëÿ êîìïèëÿöèè âûáðàòü Buildâûïîëíåíèÿ BuildBuild program.exe, äëÿExecute program.exe.×òîáû ïðè çàïóñêå íå ïîÿâëÿëîñü òåêñòîâîå îêíî, íàäî âûáðàòü ProjectSettingsLink è â ïîëå Project Options âìå-ñòî ¾subsystem:console¿ íàáðàòü ¾subsystem:windows¿, è íàáðàòü òàì æå ñòðîêó ¾/entry:mainCRTStartup¿.Êîãäà ïðîãðàììà ãîòîâà, ðåêîìåíäóåòñÿ ïåðåêîìïèëèðîâàòüåå â ðåæèìå ¾Release¿ äëÿ îïòèìèçàöèè ïî áûñòðîäåéñòâèþ èîáúåìó.

Äëÿ ýòîãî íàäî âûáðàòü BuildSet Active Congurationè îòìåòèòü ¾. . . -Win32 Release¿, à çàòåì çàíîâî ïîäêëþ÷èòü íåîáõîäèìûå áèáëèîòåêè.10.3. GLUT â ñðåäå MICROSOFT VISUAL C++ 200513910.3. GLUT â ñðåäå Microsoft Visual C++2005Ïåðåä íà÷àëîì ðàáîòû íåîáõîäèìî ñêîïèðîâàòü ôàéëû glut.h,glut32.lib è glut32.dll â êàòàëîãè MVS8\VC\PlatformSDK\Include,MVS8\VC\PlatformSDK\Lib,Windows\Systemñîîòâåòñòâåííî.Òàêæå â ýòèõ êàòàëîãàõ íàäî ïðîâåðèòü íàëè÷èå ôàéëîâ gl.h,glu.h, opengl32.lib, glu32.lib, opengl32.dll, glu32.dll, êîòîðûå îáû÷íî âõîäÿò â ñîñòàâ Visual C++ è Windows. Ïðè èñïîëüçîâàíèèêîìàíä èç áèáëèîòåêè GLAUX ê ïåðå÷èñëåííûì ôàéëàì íàäîäîáàâèòü ïîäêëþ÷àåìûå ôàéëû áèáëèîòåêè glaux.h è glaux.lib.Äëÿ ñîçäàíèÿ ïðèëîæåíèÿ íàäî âûïîëíèòü ñëåäóþùèå äåéñòâèÿ:ˆˆˆÑîçäàíèå ïðîåêòà: äëÿ ýòîãî íàäî âûáðàòü FileProjectsWin32ïðîåêòà, OK.

NewWin32 Console Application, íàáðàòü èìÿ ïîÿâèâøåìñÿ îêíå âî âêëàäêå Application Settings âûáðàòü ¾Console application¿, ¾An empty project¿, Finish. Òåêñò ïðîãðàììû ìîæíî ëèáî ðàçìåñòèòü â ñîçäàííîìòåêñòîâîì ôàéëå (âûáðàâ FileNewFilesVisual C++C++File ), ëèáî äîáàâèòü ôàéë ñ ðàñøèðåíèåì *.c èëè *.cppˆâ ïðîåêò (âûáðàâ ProjectAdd To ProjectFiles).Ïîäêëþ÷èòü ê ïðîåêòó áèáëèîòåêè OpenGL. Äëÿ ýòîãî íà-äî âûáðàòü ProjectLinkerPropertiesConguration PropertiesInput è â ïîëå Additional dependencies íàáðàòü íà-çâàíèÿ íóæíûõ áèáëèîòåê: opengl32.lib, glu32.lib, glut32.libˆè, åñëè íàäî, glaux.lib.Äëÿ êîìïèëÿöèè âûáðàòü Buildíåíèÿ DebugDebugging.program.exe, äëÿ âûïîë-Start Debugging èëè DebugStart WithoutÃëàâà 10. OPENGL-ïðèëîæåíèÿ ñ ïîìîùüþ GLUT140ˆ×òîáû ïðè çàïóñêå ïðîãðàììû íå ïîÿâëÿëîñü êîíñîëüíîåòåêñòîâîåîêíî,CongurationSubSystemíàäîPropertiesâìåñòîLinker¾Console¿ðåéòè â ðàçäåë LinkerâûáðàòüProjectSystemâûáðàòüPropertiesèâïîëå¾Windows¿.Ïå-Advanced è â ïîëå Entry Pointíàïèñàòü ¾wmainCRTStartup¿ (áåç êàâû÷åê).Êîãäà ïðîãðàììà ãîòîâà, ðåêîìåíäóåòñÿ ïåðåêîìïèëèðîâàòüåå â ðåæèìå ¾Release¿ äëÿ îïòèìèçàöèè ïî áûñòðîäåéñòâèþ èîáúåìó.

Äëÿ ýòîãî íàäî âûáðàòü BuildConguration Manager èâ ïîëå ¾Active solution conguration¿ âûáðàòü ¾Release¿, à çàòåìçàíîâî ïîäêëþ÷èòü íåîáõîäèìûå áèáëèîòåêè äëÿ ýòîé êîíôèãóðàöèè.10.4. GLUT â ñðåäå Borland C++ Builder 6Ïåðåäglut.h,íà÷àëîìglut32.lib,ðàáîòûglut32.dllíåîáõîäèìîâêàòàëîãèCBuilder6\Lib,Windows\Systemýòèõíàäîêàòàëîãàõopengl32.lib,glu32.lib,ïðîâåðèòüñêîïèðîâàòüñîîòâåòñòâåííî.íàëè÷èåopengl32.dll,ôàéëûCBuilder6\Include\Gl,ôàéëîâglu32.dll,Òàêæågl.h,êîòîðûåâglu.h,îáû÷íîâõîäÿò â ñîñòàâ Borland C++ è Windows.Ïðè ýòîì íàäî ó÷èòûâàòü, ÷òî îðèãèíàëüíûå (äëÿ MicrosoftVisual C++) âåðñèè ôàéëà glut32.lib c Borland C++ Builder6 ðàáîòàòü íå áóäóò, è ñëåäóåò èñïîëüçîâàòü òîëüêî ñîâìåñòèìóþ âåðñèþ.

×òîáû ñîçäàòü òàêóþ âåðñèþ, íàäî èñïîëüçîâàòüñòàíäàðòíóþ ïðîãðàììó 'implib', êîòîðàÿ íàõîäèòñÿ â êàòàëîãåÑBuilder6\Bin. Äëÿ ýòîãî â êîìàíäíîé ñòðîêå íàäî âûïîëíèòüêîìàíäóimplib glut32.libglut32.dllêîòîðàÿ ñîçäàåò íóæíûé lib-ôàéë èç ñîîòâåòñòâóþùåãî dll-ôàéëà.10.5. GLUT â ñðåäå BORLAND C++ BUILDER 2006141Äëÿ ñîçäàíèÿ ïðèëîæåíèÿ íàäî âûïîëíèòü ñëåäóþùèå äåéñòâèÿ:ˆˆˆÑîçäàíèå ïðîåêòà: äëÿ ýòîãî íàäî âûáðàòü FileOtherConsole Wizard, OK. New ïîÿâèâøåìñÿ îêíå âûáðàòü Source Type Ñ++, ConsoleApplication, ñáðîñèòü îïöèè ¾Use VCL¿, ¾Use CLX¿, ¾MultiThreaded¿. Íàæàòü ÎÊ.Òåêñò ïðîãðàììû ìîæíî ëèáî ðàçìåñòèòü â ñîçäàííîìòåêñòîâîì ôàéëå, ëèáî óäàëèòü åãî èç ïðîåêòà (ProjectRemove From Project) è äîáàâèòü ôàéë ñ ðàñøèðåíèåì *.cˆˆˆèëè *.cpp â ïðîåêò (âûáðàâ ProjectAdd To Project).Ñîõðàíèòå ñîçäàííûé ïðîåêò â æåëàåìîì êàòàëîãå (âûáðàâFileSave All).Ïîäêëþ÷èòü ê ïðîåêòó áèáëèîòåêó GLUT.

Äëÿ ýòîãî íàäîâûáðàòü ProjectAdd To Project è äîáàâèòü ôàéë glut32.libÄëÿ êîìïèëÿöèè âûáðàòü Projectíèÿ RunRun.Build . . . , äëÿ âûïîëíå-Êîãäà ïðîãðàììà ãîòîâà, ðåêîìåíäóåòñÿ ïåðåêîìïèëèðîâàòüåå â ðåæèìå ¾Release¿ äëÿ îïòèìèçàöèè ïî áûñòðîäåéñòâèþ èîáúåìó. Äëÿ ýòîãî ñíà÷àëà íàäî âûáðàòü ProjectCompiler è íàæàòü êíîïêó ¾Release¿.Options10.5. GLUT â ñðåäå Borland C++ Builder2006Ïåðåäíà÷àëîìglut.h,ðàáîòûâàòüôàéëûãèBorland\BDS\4.0\Include\Gl,glut32.lib,íåîáõîäèìîglut32.dllñêîïèðîâêàòàëî-Borland\BDS\4.0\Lib,Ãëàâà 10.

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

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

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

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