OpenGLOpenGL

ВъведениеВъведение

гл. ас. д-р А. Пенев ИнтернетИнтернет източнициизточници

 www..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, MacMac OS,OS, iOS,iOS, LinuxLinux,, Android,Android, OS/2,OS/2, OPENStep,OPENStep, BeOS,BeOS, ии дрдр..;;  BindingsBindings –– ,C, C++,C++, C#,C#, Delphi,Delphi, JavaJava,, FortranFortran,, Ada,Ada, Python,Python, ,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 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 ОперацииОперации

Като виртуална машина може да изпълнява фиксирано количество от операции. Всяка от операциите се описва посредством команда, реализирана като оператор за изпълнение на процедура или функция в програмната среда на съответната библиотека.

ВсякаВсяка командакоманда описваописва::  Операцията, която трябва да се изпълни;  Библиотеката, в която е реализирана указаната операция;  Броят на предаваните параметри;  Типът на предаваните параметри;  Начинът на предаване на параметрите;  Стойностите на параметрите на операцията.

OpenGL - Въведение 23/29 НачинНачин нана ФункциониранеФункциониране

ЗаЗа всякавсяка постъпилапостъпила командакоманда сесе изпълняваизпълнява следнияследния алгоритъмалгоритъм::  Командата се декодира;  Параметрите се преобразуват във вътрешно представяне;  Активира се описаната чрез командата операция;  Операцията се изпълнява във съответствие със стойностите на предаваните параметри и текущото вътрешно състояние;  Актуализира се текущото вътрешно състояние, ако не е възникнала грешка при изпълнението;  Връщат се резултатите от изпълнената команда.

OpenGL - Въведение 24/29 ФункционалнаФункционална СхемаСхема

ВЪТРЕШНО СЪСТОЯНИЕ

Буфери Резултати OpenGL Процесор

Команда и параметри  Изобразяване

OpenGL - Въведение 25/29 КонвейерКонвейер нана ВизуализацияВизуализация

Изображения Операции над Растеризация на (пиксели) пиксели изображения

Д исплеен Текстури Буфер на Фрагменти файл Примитиви кадъра

Геометрия Операции над Геометрична

(върхове) върхове растеризация

OpenGL - Въведение 26/29 ОбработкаОбработка нана геометричнагеометрична информацияинформация

Координати Преобразуване Матрични във вътрешно на върхове преобразува- представяне ния

Върхове

Нормали- Проективни Отрязване зация преобразува- ния

Примитиви

Операции над Растеризация Изображение фрагменти

Фрагменти

OpenGL - Въведение 27/29 СинтаксисСинтаксис нана КомандитеКомандите

typetype ((glgl||gluglu||glutglut||……))CommandCommand__namename[1|2|3|4[1|2|3|4]] [[bb||ss||ii||ff||dd||ubub||usus||uiui][][vv]] ((typetype11 argarg1,…,1,…,typeNtypeN argNargN))

Примери:Примери:

glVertex2i(1,glVertex2i(1, 1);1); glVertexglVertex33f(1.5,f(1.5, 3.8,3.8, 2.0);2.0); glColorglColor33fv(&color1);fv(&color1);

OpenGL - Въведение 28/29 OpenGLOpenGL ВъведениеВъведение

Въпроси?Въпроси?

OpenGL - Въведение 29/29