Open GL

Од Википедија — слободната енциклопедија
(Пренасочено од OpenGL)
Прејди на: содржини, барај
OpenGL
Изворни автори Silicon Graphics
Програмери Khronos Group
Првично издание јануари 1992; пред 24 години (1992-01)
Стабилно издание 4.3[1] / август 6, 2012; пред 3 години (2012-08-06)
Опер. систем Cross-platform
Подлога Cross-platform
Вид API
Лиценца Various[2]
Мреж. место www.opengl.org

Open GL е мулти платформен АПИ за рендирање 2D и 3D компјутерска графика.

Историја на графичкиот софтвер[уреди | уреди извор]

Во 1980тите години развивањето на софтвер кој би можел да функционира со широк аспект на графички хардвер било вистински предизвик. Софтверските инжинери пишувале општи инетрфејси и драјвери за секој хардверски дел. Ова било премногу скапо и резултирало во вложување на преголем труд. Во 1990тите години SIilicon Graphics бил лидер во 3Д графики за серверски машини. Нивниот интерфејс бил прифатен како стандард во таа индустрија бидејќи тој интерфејс бил многу полесен за употреба бидејќи поддржувал можност за истовремено генерирање на графичките елементи. Но бидејќи Sun Microsystems, Hewlett-Packard и IBM исто така успеале да извадат хардверски компоненти кои поддржуваат друг стандард SGI во тоа време почнале да слабеат како компанија со нивниот производ IRIS GL интерфејс па морале да превземат нешто со кое што би ги зацврстиле своите позиции на тогашниот пазар. Како резултат на целата ситуација тие го пуштаат OpenGL стандардот. OpenGL како стандардизиран пристап до хардверот има голем придонес во обединувањето на графичкиот хардвер со тоа што почнале да го користат OpenGL како јазик кој имал повисоко ниво за 3Д развој на софтвер. Понатаму излегуваат се понови и поусовршени верзии на OpenGL од 1.0 до 4.1 излезена верзија во јули 2010 година. Директна конкуренција на OpenGL претставува Direct3D на Microsoft кој понатаму прават заеднички проект наречен Fahrenheit кој поради неуспех го напуштаат во 1999 година.

Општо за OpenGL[уреди | уреди извор]

OpenGL (Open Graphics Library) претставува стандардна спецификација на ниско ниво која се користи на повеќе платформи за пишување апликации кои создаваат 2D и 3D компјутерска графика.

Овој најшироко прифатен графички стандард, што пред се се должи на фактот дека е open-source и со тоа е достапен на сите, се состои од повеќе од 250 различни функциски повици кои можат да се користат за многу работи, вклучувајќи и комлексни тридимензионални сцени и тоа само од едноставни примитиви, како точки, линии, многуаголници, слики и битмапи, но и покомлексни примитиви и својства како списоци за приказ, трансформации за моделирање, осветлување и текстури, прозирност итн. OpenGL е создаден од Silicon Graphics Inc. (SGI) во 1992. Најмногу се користи во CAD, виртуелна реалност, научна визуелизација, информатичка визуелизација, симулација на летови итн. Како конкурент на DirectX се користи и при развој на видеоигри, со таа разлика што е независен од платформата, оперативниот систем, како и системот на прозорци кои се користи, что не е случај за DirectX.

Историјата на OpenGL започнува во 1990тите кога Kurt Akeley и Mark Segal ја напишале првата OpenGL спецификација - OpenGL 1.0. Оттогаш се издадени уште неколку верзии 1.1, 1.2, 1.2.1, 1.3, 1.4, 1.5, 2.0 и најновата верзија OpenGL 3.0 која е издадена на 11 Август, 2008 година. Моментално OpenGL е управуван од непрофитабилен конзорциум што се занимава со технологија, Khronos Group, Inc. Во ОpenGL основните операции е да прифаќа примитиви како точки, линии и полигони и да ги конвертира тие во пиксели. Тоа е возможно и го прави графичкиот pipeline познат како ОpenGL state machine. Повеќето ОpenGL команди или му даваат примитиви на графичкиот pipeline или наоѓаат начин како да ги процесира. ОpenGL претставува интерфејс на ниско ниво со што се бара од програмерите да ги пишуваат сите чекори поединечно за да изгенерираат некоја сцена. Таквиот дизајн на ОpenGL бара програмерите да имаат добро познавање на графичкиот pipeline но исто така дава можност за поголема слобода за имплементација на нови алгоритми за генерирање.

Open GL текстови[уреди | уреди извор]

OpenGL не поддржува фонтови и со тоа следи дека не е компатибилен за директна поддршка на текстови, но OpenGL поддржува мапа од битови наречена bitmap и таа може да биде искористена за креирање на различни текстови наречени bitmap фонтови. За тоа се користат ортографски проекции за 2Д текст а за подобрување на перформансите се користат display lists. Каде се користат OpenGL фонтовите во денешно време? Најчесто се користат во Авио Контролните инструменти, во географијата со обележување на имиња на мапи, во видео игрите кога се прикажуваат текстови како ранг листи, и било каков текст исто така се користат и во други видео материјали како преводи и друг информативен текст. Постојат три пристапи за генерирање текст во OpenGL. Тие се Bitmap (Raster) фонтови, Geometric (polygonal), и Texture Mapped фонтови.

Open GL фонтови[уреди | уреди извор]

OpenGL не поддржува фонтови и со тоа следи дека не е компатибилен за директна поддршка на текстови, но OpenGL поддржува мапа од битови наречена bitmap и таа може да биде искористена за креирање на различни текстови наречени bitmap фонтови. За тоа се користат ортографски проекции за 2Д текст а за подобрување на перформансите се користат display lists. Каде се користат OpenGL фонтовите во денешно време? Најчесто се користат во Авио Контролните инструменти, во географијата со обележување на имиња на мапи, во видео игрите кога се прикажуваат текстови како ранг листи, и било каков текст исто така се користат и во други видео материјали како преводи и друг информативен текст. Постојат три пристапи за генерирање текст во OpenGL. Тие се Bitmap (Raster) фонтови, Geometric (polygonal), и Texture Mapped фонтови.

Bitmap (Raster) фонтови[уреди | уреди извор]

Овој тип на фонтови се совршени за менување на големината и ротирање. Бидејќи bitmap фонтовите се по природа растеризирани тие се генерираат многу брзо и претставуваат одличен избор каде што е потребна голема брзина. Функцијата со која што се одредува позицијата на фонтот е glRasterPos(). Вообичаени проблеми кои се појавуваат со овие фонтови е што битовите исчезнуваат кога растер позицијата е надвор од видното поле иако останатиот дел од битовите се внатре во видливото поле. Иако овие фонтови изгледаат како успешни потребна е огромна моќ за да се прикаже обичен текст. Количината на податоци потребна за да се прикаже текстот е голема бидејќи секоја рамка се праќа од процесорот до графичката картичка за секој карактер во рамката. Тоа доведува до значително искористување на ресурсите кои ги поседува машината. Имплементацијата на OpenGL скоро секогаш ја *испревртува содржината на податоцит50е во некој облик помеѓу процесорот и баферот на рамката. Многу од 3Д графичите чипови не се дизајнирани да цртаат bitmap воопшто, OpenGL софтверскиот драјвер мора да чека се додека 3Д хардверот не заврши комплетно со цртање па потоа да ги проследи пикселите на баферот. Додека тоа се случува графичкиот хардвер безпотребно чека. Овој тип на фонтови имаат една голема предност во однос на другите типови бидејќи во софтверските OpenGL имплементации е побрз од сите други.

Geometric (Polygonal) фонтови[уреди | уреди извор]

Секоја буква или знак кај овој вид на фонтови се исцртува со помош на линии и точки таканаречени геометриски примитиви. Може да се бира дали полигоните ќе бидат исполнети или празни. За полигоните важат истите функции како и за било кој друг полигон како што се ротирање, намалување, зголемување, боја, осветлување, текстура. Негативни работи кај овој тип на графички фонтови се тоа што дизајнирањето на фонтовите е доста комплицирано и скапо чини, бројот на линии и полигони потребен за да се креира некоја буква или знак може да биде многу голем со тоа што ќе ги злоупотреби перформансите на машината.

Texture - Mapped фонтови[уреди | уреди извор]

Овој фонт е зачуван во една или две текстурни мапи и секоја буква е нацртана како еден четириаголник. За да се направи ваков тип на фонт потребно ни е bitmap од фонтот и објаснување каде во мапата се наоѓаат буквите. Димензиите на буквите се зачувани во податочната структура во сликовните податоци. За да се креира текстура на фонтот прво се креира фонт се запишуваат димензиите на секој знак и се печатат знаците на мапата од битови. Координатите на текстурата се зачувуваат во glxGLYPHDATA структурата и се печатат понатаму во мапата од битови. Недостатоците кај овие фонтови се тоа што големината на текстурната мапа може да биде многу голема особено ако се потребни и големи и мали букви или ако е потребно фонтот да изгледа убаво и на големи димензии. Ова претставува проблем кај некои графички хардвери кои поддржуваат мали текстурни мапи ( пр. 3Dfx Voodoo генерира мапи до 256 х 256 пиксели). Ако се користи MIP мапирање со намалување или зголемување на фонтовите се добива матен изглед .

Останати фонтови во OpenGL[уреди | уреди извор]

GLX[уреди | уреди извор]

Пристапот до фонтот се изведува на нормален начин со функцијата XLoadQueryFont().Со користење на glXUseXFont() се креираат дисплеј листи една за секој знак/буква. Предности се што може да го користи било кој фонт што се наоѓа на системската машина и тоа што лесно се додаваат фонтови за лична употреба со додавање на патеката од фонтот до нашата патека  %xsetfp+/usr/people/gerard/fonts % xset fp rehash Недостатоци се што користи само bitmap, нема можност за 3Д и работи само на Unix системи.

GLC[уреди | уреди извор]

Ова е библиотека која користи Adobe Type1 фонтови. Поддржува bitmap, линии, триаголници како генерирачки стилови. Оваа библиотека е достапна само на SGI сервери под името IRIX 6.2 или понова. Предности се што користи Adobe Type1 фонтови и што може да црта bitmap со ротирање. Недостатоци се што само користи ASCII фонтови кои треба да се конвертираат со pfb2pfa.

GLTT[уреди | уреди извор]

GLTT претставува бесплатен и квалитетен TrueType платформа. GLTT користи FreeType за да ги извади контурите за растеризирање и има едноставен но моќен интерфејс за генерирање текст. GLTT ги поддржува bitmap, geometric, polygonized стилови на генерирање текст. Предностите се тоа што многу лесно се користи и доста е моќен. Исто така работи и на Windows и на Unix платформа. Недостатоци се тоа што е доста побавен во однос на texure-mapped стилот но и покрај тоа GLTT е многу корисен за генерирање на фонтови од тексурирани слики.

FTGL[уреди | уреди извор]

FTGL претставува наследникот на GLTT. FTGL е напишан против FreeType2 интерфејсот. FTGL ги поддржува Geometric, Polygonal, Texture - Mapped, Bitmapped, Antialiased pixmapped стиловите на генерирање. Предности се тоа што многу лесно се користи и е моќно и повеќенаменско. Исто така работи и на Windows и на Unix платформа. Може да го користи било кој TrueType фонт. Недостатоци се тоа што е потребно многу време за вчитување на фонтовите.

WGL[уреди | уреди извор]

Овој фонт е наменет исклучиво за Windows платформата. Постојат две опции:

Bitmap - wglUseFontBitmaps()

Outline - wglUseFontOutlines() Предности: Лесен за употреба и може да користи кој било Windows фонт вклучувајќи TrueType. Недостатоци: Само за Windows платформа, нема пристап до контурите на фонтот директно. Пристап до димензиите на фонтовите преку Win32 API.

GLF[уреди | уреди извор]

Овој тип на генерирачки фонт е создаден од Роман Подобедов. Оваа библиотека поддржува најразлични техники за генерирање на текст вклучувајќи bitmapped, geometric, и texture-mapped. Со GLF може да се прикаже најразличен вид на текст како исполнет, само со контурите и 3Д. Интерфејсот на GLF е јасен но многу обемен. Недостатокот кај овој фонт генератор е тоа што не е документиран и не е можно да се конвертираат фонтови во .glf формат.

Референци[уреди | уреди извор]

Надворешни врски[уреди | уреди извор]

mk:OpenGL