OpenGL - Въведение

OpenGL е безплатна библиотека, многоплатформена ( т.е. не е приложима само под Windows, но и под останалите операционни системи). Тя е гъвкаво средство за създаване на професионална 3D графика, която може да бъде използвана за много цели. Библиотеката е създадена от компанията SiliconGraphics. Още от началото си OpenGL се развива непрекъснато. В процеса на увеличаване функциалността на OpenGL взимат участие много компании, т.н. консорциум OpenGL Architecture Review Board ( ARB ). Създадени са много библиотеки и допълнителни модули ( т.н. OpenGL extensions ), някои от които улесняват допълнително работата с OpenGL, а други осъществяват връзката между OpenGL и най-новите технологии за 3D графика в модерните видеоускорители. С последната си версия 2.0 издадена официално от ARB на 7 септември 2004г, OpenGL показва че няма никаквo намерение да отстъпи на своя пряк конкурент DirectX, създаден от Microsoft.

В настоящият web сайт е разгледана голяма част от OpenGL, като много от уроците са съпроводени и с примерни сорс кодове. Ще намерите и доста OpenGL разработки за по напреднали, от които съм сигурен че ще има какво да научите. От сега ви казвам че за да продължите напред трябва да имате опит със C/C++ програмирането. Сам по себе OpenGL не включва функции за създаването на прозорец, в който ще бъде визуализирана създадената от вас 3D графика, т.е. не можете да контактувате директно с операционна система, не можете да следите за натиснат бутон от клавиатурата, няма готови функции за изрисуване на сложни обекти, както и за пресъздаване на ефекти като пушък, огън. Объркани ли сте вече? Няма за какво да се притеснявате, защото всичко това (или почти всичко) може да бъде извършено с някоя от помощните библиотеки към OpenGL, за които стана въпрос вече. В сайта са разгледани библиотеки като GLU, GLAUX, GLUT, последната от които има завидна функционалност за построяването на OpenGL прозорец. Ще научите как да построите OpenGL прозорец, като използвате и Win32API на Microsoft за Windows, което е по-трудно, но и по-добро решение за мащабни, Windows ориентирани проекти. Разгледана е и библиотеката OpenAL, чиято главна цел е пресъздаването на реалистиен 3D звук, ако решите случайно да си правите 3D шутър...

Всяка функция, която принадлежи към OpenGL библиотеката започва с "gl" ( нaпример: glRotate ). Функциите от GLU започват с "glu", от GLAUX със "aux" ( тук е по-различно ) , a oт GLUT съответно със "glut". Tака ще знаете коя библиотека трябва да включите, когато използвате определени функции. Също така някои функции от OpenGL завършват накрая с буква или с число и буква, което обозначава колко и от какъв тип аргумени приема съответната функция. Например: f - float, d - double , i - int. Наставка като 3f означава, че функцията приема 3 аргумента от тип float. Например: glVertex3f( ). Някои функции могат да завършват с една от буквите " f ", " d " или " i " заедно с буквата " v ". Например наставка като " fv ", означава че функцията приема указател към масив от тип float. Голяма част от функциите имат по няколко разновидности, всяка от които се различва от другите по броя и типа на стойностите, които приемат. Например: function{234}{fd}( ) - тази функция може да приеме 2, 3 или 4 аргумента от тип float или double. В този случай, ако искате да подадете 2 аргумента от тип float, ще трябва да използвате следния вариант: function2f( ).

В OpenGL можете да ползвате стандартните типове данни, както в С/С++, но също така може да ползвате и вградените в ОpenGL типове данни, които отговарят съответно на :

GLbyte = signed char
GLubyte / GLboolean = unsigned char
GLshort = short int
GLushort = unsigned short int
GLint / GLsizei = long
GLuint / GLenum / GLbitfield = unsigned long
GLfloat / GLclampf = float
GLdouble / GLclampd = double

В настоящия сайт за създаването на примерните сорсове е използван безплатния компилатор Microsoft Visual C++ Learning Edition, а при голяма част от тях за връзка с операционната система е използвана библиотеката GLUT, която е изключително лесна за усвояване, но примерите за напреднали използват Win32 API. Както може би сте забелязали, сорсовете ще бъдат предназначени за Microsoft Windows, защото все пак това е най-ширикоразпространената ОС. Разбира се, кода може да бъде прекомпилиран и за други операционни системи, като използваме версията на GLUT за други OC.

Това беше увода и надявам се, достатъчно информативно ви представих основната концепция на ОpenGL програмирането. Останалата част от сайта ще ви покаже как да си направите прозорец и да започнете истинската работа в 3D пространството.

Автор: Иван Георгиев Иванов