piątek, 21 września 2012

Bibioteka OpenGl

Teraz nadszedł czas aby poszerzyć wiedzę na temat grafiki a dokładnie rzecz ujmując, chciałam dzisiaj zając się bibiotekom OpenGl. W tym poście umieszczę, na razie tylko informacje podstawowe informacje o bibliotece OpenGL, składnia funkcji oraz typy danych. W kolejnym poście zajmę się dalszym rozwinięciem informacji na temat biblioteki.

Podstawy

Pierwsza wersja biblioteki OpenGL (ang. Open Graphics Library) powstała w 1992 roku na bazie języka GL opracowanego przez firmę Silicon Graphics Inc. (w skrócie SGI) na potrzeby stacji graficznych IRIS. Dopiero jednak sukces systemów z rodziny Microsoft Windows, w których zaimplementowano OpenGL w wersji 1.1, stał się początkiem ogromnej popularności biblioteki. Obecnie OpenGL jest podstawowa niskopoziomowa biblioteka graficzna 3D, obsługiwana przez wszystkie liczące się systemy operacyjne oraz większość procesorów graficznych.

Niezależność od platformy sprzętowej oraz ogólnie dostępna specyfikacji czyni z OpenGL standard powszechnie wykorzystywany przez producentów oprogramowania użytkowego i gier. Rozwojem OpenGL zajmuje się organizacja ARB (ang. Architecture Review Board), w skład której wchodzą przedstawiciele firm 3DLabs, Apple, ATI, Dell, IBM, Intel, NVIDIA, SGI i Sun (stan na koniec 2004 roku). Taki sposób wprowadzania zmian w bibliotece zapewnia zachowanie niezależności OpenGL od jednej platformy sprzętowej lub programowej przy jednoczesnym uwzględnieniu do najnowszych osiągnięć w dziedzinie grafiki komputerowej. Materiały ze spotkań członków ARB, specyfikacje i szeregu innych materiałów na temat OpenGL dostępne są na oficjalnej stronie ARB: http://www.opengl.org/. Ważnym uzupełnieniem OpenGL jest biblioteka GLU (ang. OpenGL Graphics System Utility Library). GLU zawiera szereg dodatkowych narzędzi, w tym do obsługi macierzy, odwzorowania tekstur, kafelkowania wielokątów, powierzchni drugiego stopnia oraz krzywych i powierzchni NURBS.

Składnia

Polecenia OpenGL określane są jako funkcje lub procedury. Znaczna część funkcji wykonuje te same operacje, ale rożni się zbiorem argumentów. Przyjęta konwencja nazewnictwa określa ilość i rodzaj parametrów funkcji według poniższego schematu:

rtype Name {1|2|3|4} {b|s|i|f|d|ub|us|ui} {v}
([args,] T arg1, ..., T argN [,args])

gdzie poszczególne elementy oznaczają:

rtype wartość zwracana przez funkcje.
Name nazwa funkcji poprzedzona przedrostkiem gl lub glu dla funkcji z biblioteki GLU.
1, 2, 3, 4 ilość argumentów funkcji.
b argumenty typu GLbyte.
s argumenty typu GLshort.
i argumenty typu GLint.
f argumenty typu GLfloat.
d argumenty typu GLdouble.
ub argumenty typu GLubyte.
us argumenty typu GLushort.
ui argumenty typu GLuint.
v argument funkcji stanowi tablica wartości - w tym wypadku nie występuje określenie ilości argumentów funkcji.
T arg1, ..., T argN   argumenty funkcji.

Składnia ta przypomina w swoich założeniach notacje węgierska, stosowana m.in. w API systemów z rodziny Windows. Może ona początkowo sprawiać problemy, ale przy pewnej praktyce okazuje się praktyczna i wygodna w stosowaniu. Podobnie jak w specyfikacja biblioteki OpenGL ta i dalsza
część opisu wykorzystuje notacje przyjęta w języku ANSI C.


Typy danych w OpenGL

Poniższa tabela zawiera typy danych dostępne w bibliotece OpenGL.

typ OpenGL minimalna
ilość
bitów
opis
GLboolean 1 typ logiczny
GLbyte 8 liczba całkowita ze znakiem (U2)
GLubyte 8 liczba całkowita bez znaku
GLchar 8 ciąg znaków tekstowych
GLshort 16 liczba całkowita ze znakiem (U2)
GLushort 16 liczba całkowita bez znaku
GLint 32 liczba całkowita ze znakiem (U2)
GLuint 32 liczba całkowita bez znaku
GLsizei 32 nieujemna liczba całkowita
GLenum 32 typ wyliczeniowy całkowity
GLintptr ptrbits wskaźnik na liczbę całowitą ze znakiem (U2)
GLsizeiptr ptrbits wskaźnik na nieujemna liczbę całkowita
GLbitfield 32 pole bitowe
GLfloat 32 liczba zmiennoprzecinkowa
GLclampf 32 liczba zmiennoprzecinkowa z przedziału [0, 1]
GLdouble 64 liczba zmiennoprzecinkowa
GLclampd 64 liczba zmiennoprzecinkowa z przedziału [0, 1]



Specyfikacja nie określa jakiego rodzaju typy danych są użyte w konkretnej implementacji biblioteki OpenGL. W szczególności typy danych OpenGL nie są typami danych występującymi w języku C (pomimo częściowej zgodności nazw). Implementacja OpenGL może stosować typy danych zawierające większą niż minimalna ilość bitów. prtbits oznacza minimalna ilość bitów niezbędna do umieszczenia wskaźnika Stad typy intptr i sizeiptr muszą umożliwić zapamiętanie dowolnego adresu. Poza wyżej wymienionymi typami danych biblioteka OpenGL zawiera typ pusty GLvoid.

Bibioteka OpenGl

1 komentarz:

  1. Ja się aż tak dokłądnie na kwestiach informatycznych nie znam, ale wiem z doświadczenia, że na pewno dobre oprogramowanie się przydaje. Jak czytałem niedawno na stronie https://www.connecto.pl/oprogramowanie-dla-produkcji/ to właśnie oprogramowanie dla produkcji jest niezwykle ważne.

    OdpowiedzUsuń