Openglopengl
Total Page:16
File Type:pdf, Size:1020Kb
OpenGLOpenGL ВъведениеВъведение гл. ас. д-р А. Пенев ИнтернетИнтернет източнициизточници www.opengl.orgwww.opengl.org www.khronos.orgwww.khronos.org www.glprogramming.com/redwww.glprogramming.com/red www.glprogramming.com/bluewww.glprogramming.com/blue nehe.gamedev.netnehe.gamedev.net www.opengl.org.ruwww.opengl.org.ru www.alexander-penev.infowww.alexander-penev.info …… OpenGL - Въведение 2/29 ЛитератураЛитература The Red Book OpenGL - Въведение 3/29 КаквоКакво ее OpenGLOpenGL OpenGLOpenGL == OpenOpen GGraphicraphic LLibraryibrary OpenGLOpenGL ее софтуеренсофтуерен интерфейсинтерфейс (API)(API) къмкъм графичниятграфичният хардуерхардуер OpenGL - Въведение 4/29 ИсторияИстория (1/3)(1/3) 19901990-те –– SiliconSilicon GraphicsGraphics създавасъздава IRISIRIS GLGL;; 19921992 –– IRISIRIS GLGL ставастава основаоснова нана стандартастандарта OpenGLOpenGL 1.0.1.0. ТойТой сесе утвърждаваутвърждава катокато стандартстандарт отот множествомножество водещиводещи софтуернисофтуерни фирми;фирми; 19951995 –– MicrosoftMicrosoft създавасъздава DirectXDirectX ((Direct3DDirect3D));; 19971997 –– OpenGLOpenGL 1.1;1.1; 19981998 –– OpenGLOpenGL 1.2;1.2; 19991999 –– MicrosoftMicrosoft изоставяизоставя OpenGL;OpenGL; 20012001 –– OpenGLOpenGL 1.3;1.3; 20022002 –– OpenGLOpenGL 1.4;1.4; 20032003 –– OpenGLOpenGL 1.5;1.5; OpenGL - Въведение 5/29 ИсторияИстория (2/3)(2/3) 20042004 –– OpenGLOpenGL 2.02.0 ии OpenGLOpenGL ShadingShading LanguageLanguage 1.10;1.10; 20062006 –– OpenGLOpenGL 2.12.1 ии GLSLGLSL 1.20;1.20; 20062006 –– СъздаваСъздава сесе KhronosKhronos Group;Group; 20082008 –– OpenGLOpenGL 3.03.0 ии GLSLGLSL 1.30;1.30; DeprecationDeprecation Model;Model; 20092009 –– OpenGLOpenGL 3.13.1 ии GLSLGLSL 1.40;1.40; 20092009 –– OpenGLOpenGL 3.23.2 (Core(Core ии Compatibility),Compatibility), GLSLGLSL 1.50;1.50; 20092009 –– ИзлизаИзлиза OpenCL;OpenCL; 20102010 –– OpenGLOpenGL 3.33.3 ии GLSLGLSL 3.30;3.30; ЕдновременноЕдновременно сс товатова излизаизлиза OpenGLOpenGL 4.04.0 ии GLSLGLSL 4.00;4.00; 20102010 –– OpenGLOpenGL 4.14.1 ии GLSLGLSL 4.10;4.10; 20112011 –– OpenGLOpenGL 4.24.2 ии GLSLGLSL 4.20;4.20; OpenGL - Въведение 6/29 ИсторияИстория (3/3)(3/3) 20122012 –– OpenGLOpenGL 4.34.3 ии GLSLGLSL 4.30;4.30; 20132013 –– OpenGLOpenGL 4.44.4 ии GLSLGLSL 4.40;4.40; 20142014 –– OpenGLOpenGL 4.54.5 ии GLSLGLSL 4.50;4.50; 20162016 –– ИзлизаИзлиза VulkanVulkan.. OpenGL - Въведение 7/29 ХарактеристикиХарактеристики Индустриален стандарт; Стабилност; Съвместимост – предишни версии; Надеждност и Преносимост – визуален резултат независимо от операционната система; Скалируемост – от мобилни и PC до суперкомпютри; Лекота на използване – функциите му са с лесен за разбиране интерфейс; Разширяемост – механизъм за разширения възможност за бързо въвеждане на новия хардуер в употреба; Добре документиран. OpenGL - Въведение 8/29 БиблиотекиБиблиотеки ии реализацияреализация ОсновнатаОсновната библиотекабиблиотека нана OpenGLOpenGL имаима десеткидесетки реализацииреализации заза различниразлични платформиплатформи ии графиченграфичен хардуерхардуер OSOS –– Windows,Windows, UNIX,UNIX, MacMac OS,OS, iOS,iOS, LinuxLinux,, Android,Android, OS/2,OS/2, OPENStep,OPENStep, BeOS,BeOS, ии дрдр..;; BindingsBindings –– C,C, C++,C++, C#,C#, Delphi,Delphi, JavaJava,, FortranFortran,, Ada,Ada, Python,Python, Perl,Perl, JavaScriptJavaScript ии многомного др.др. КактоКакто комерсиални,комерсиални, такатака ии сс отворенотворен код.код. OpenGL - Въведение 9/29 ПродуктиПродукти 3DS3DS MaxMax;; MayaMaya;; GoogleGoogle SketchUpSketchUp;; ИИ многомного AdobeAdobe AfterAfter Effects;Effects; други.други. CharacterCharacter StudioStudio;; GoogleGoogle EarthEarth;; VRML;VRML; OpenGL - Въведение 10/29 ИгриИгри Doom3Doom3;; CounterCounter Strike;Strike; CallCall OfOf DutyDuty;; ChessChess CommanderCommander;; QuakeQuake;; HalfHalf LifeLife;; SecondSecond LifeLife;; HomeworldHomeworld;; UnrealUnreal;; IL-2IL-2 SturmovikSturmovik;; AngryAngry Birds;Birds; JediJedi KnightKnight IIII;; ии много,много, многомного другидруги MedalMedal ofof HonorHonor;; OpenGL - Въведение 11/29 БиблиотекиБиблиотеки заза ЕПЕП CC –– gl.h,gl.h, MesaMesa 3D,3D, OpenOpen InventorInventor,, OpenOpen SceneScene GraphGraph,, OpenGLOpenGL PerformerPerformer;; C#C# –– TheThe OpenOpen ToolkitToolkit (OpenTK),(OpenTK), TaoTao Framework,Framework, CsGLCsGL,, GLSharpGLSharp;; JavaJava –– JOGLJOGL,, OpenGLOpenGL forfor JavaJava (GL4Java),(GL4Java), jGL;jGL; DelphiDelphi –– GLSceneGLScene,, dglOpenGL;dglOpenGL; FortranFortran –– F90GL;F90GL; PerlPerl –– POGL,POGL, PerlPerl OpenGLOpenGL Bindings;Bindings; PythonPython –– PyOpenGL,PyOpenGL, PyGlut;PyGlut; JavaScriptJavaScript –– WebGL/HTML5;WebGL/HTML5; ии многомного другидруги.. OpenGL - Въведение 12/29 НадстройкиНадстройки OpenGLOpenGL UtilityUtility (GLU)(GLU);; OpenGLOpenGL UtilityUtility ToolkitToolkit (GLUT)(GLUT);; OpenGLOpenGL AuxiliaryAuxiliary LibraryLibrary (GLAUX)(GLAUX);; OpenGLOpenGL UserUser InterfaceInterface LibraryLibrary (GLUI)(GLUI);; GLTT,GLTT, FTGL;FTGL; OpenGLOpenGL EasyEasy ExtensionExtension LibraryLibrary (GLEE);(GLEE); OpenOpen InventorInventor;; GLX,GLX, WGL,WGL, CGL;CGL; OpenGL - Въведение 13/29 ОперационниОперационни средисреди Windows Приложение UNIX Приложение GLU GLU GDU WGL OpenGL XLib GLX OpenGL OpenGL - Въведение 14/29 СродниСродни СтандартиСтандарти OpenGL - Въведение 15/29 ОсновниОсновни възможностивъзможности (1/2)(1/2) Създаване на растерни изображения; Създаване на изображения изградени от графични примитиви като точки, отсечки, начупени линии, многоъгълници, триъгълници и други. Създаване на изображения на пространствени сцени, описани чрез схемите “гранично представяне” или “реброви модел”; Именуване на примитив или група от примитиви; Дефиниране на символи (Lists); Смяна на координатната система; Координатни преобразувания – транслация, ротация, мащабиране, огледално отражение и др.; Дефиниране на преливащи се цветове и прозрачност; Налагане на текстури върху телата; Дефиниране на различни материали за телата; OpenGL - Въведение 16/29 ОсновниОсновни възможностивъзможности (2/2)(2/2) Отрязване спрямо равнини; Използване на маски; Премахване на скритите повърхности; Използване на различни светлинни източници; Визуализация на реалистични изображения; Реализация на специални ефекти като мъгла, прозрачност и др.; Използване на сплайн криви и повърхнини; Изглаждане – премахване на стълбищтния ефект (anti-aliasing); и др. OpenGL - Въведение 17/29 МашинаМашина съссъс СъстоянияСъстояния (1/2)(1/2) РазглежданРазглеждан катокато виртуалнавиртуална машина,машина, OpenGLOpenGL можеможе дада бъдебъде определенопределен катокато машинамашина съссъс състояниясъстояния,, работещаработеща вв диалоговдиалогов ((клиент-сървърклиент-сървър)) режим.режим. ТоваТова означава,означава, чече нене изпълняваизпълнява програми,програми, аа всякавсяка постъпилапостъпила командакоманда сесе изпълняваизпълнява незабавно,незабавно, следслед коетокоето сесе очакваочаква постъпванетопостъпването нана нованова команда.команда. НачинътНачинът нана изпълнениеизпълнение нана командатакомандата сесе определяопределя от:от: Командата;Командата; ПараметритеПараметрите нана командата;командата; ВътрешнотоВътрешното състояниесъстояние нана машината.машината. OpenGL - Въведение 18/29 МашинаМашина съссъс СъстоянияСъстояния (2/2)(2/2) ЗаЗа дада сесе изясниизясни начинът,начинът, попо койтокойто можеможе дада сесе използваизползва виртуалнатавиртуалната машинамашина ее необходимонеобходимо тятя дада бъдебъде обсъденаобсъдена вв следнитеследните четиричетири аспектааспекта:: Данни;Данни; Състояния;Състояния; Операции;Операции; НачинНачин нана функциониране.функциониране. OpenGL - Въведение 19/29 ДанниДанни ПредставянетоПредставянето нана даннитеданните отот числовчислов типтип трябватрябва дада следваследва синтаксисасинтаксиса нана езикаезика нана програмиранепрограмиране,, вв койтокойто сесе използваизползва библиотекатабиблиотеката нана OpenGL.OpenGL. Видове:Видове: Вектор – наредена четворка от еднотипни числа, интерпретирана като хомогенни координати на вектор; Точка – наредена четворка от еднотипни числа, интерпретирана като хомогенни координати на точка; Матрица – наредена 16-торка от еднотипни числа, интерпретирана като числова 4x4 матрица, линеаризирана по редове; Цвят – наредена четворка от еднотипни числа, интерпретирана като описание на цвят в стандарта RGBA. OpenGL - Въведение 20/29 СистемниСистемни СъстоянияСъстояния ЛогическиЛогически ((GLGL__TRUETRUE ии GL_GL_ FALSEFALSE));; ЧисловЧислов –– цялцял илиили реаленреален;; ИменаИмена;; МатрициМатрици;; СтековеСтекове отот именаимена илиили матрициматрици;; ТаблицаТаблица отот списъксписък отот команди;команди; ТаблицаТаблица отот записизаписи;; Буфери;Буфери; ии други;други; OpenGL - Въведение 21/29 ВекторВектор нана СъстояниятаСъстоянията Режими Стекове Системни стек 1 и C U 2 ограничения Флагове X P T 1 Буфери Резултати OpenGL Команда и параметри Процесор Вектори Таблици Цвят glColor… 1 0 0 1 glVertex… Нормален вектор 2 3.7 1 Изобразяване OpenGL - Въведение 22/29 ОперацииОперации Като виртуална машина може да изпълнява фиксирано количество от операции. Всяка от операциите се описва посредством команда, реализирана като оператор за изпълнение на процедура или функция в програмната среда на съответната библиотека. ВсякаВсяка командакоманда описваописва:: Операцията, която трябва да се изпълни; Библиотеката, в която е реализирана указаната операция; Броят на предаваните параметри; Типът на предаваните