Prymitywy są to podstawowe figury geometryczne z których zbudowane są wszystkie obiekty w OpenGl.
Aby utworzyć taką figurę potrzebne są nam punkty, które będą stanowić ich wierzchołki. Wyróżniamy kilka rodzajów prymitywów:

Przejdźmy teraz do kodu. Na początku skopiuj katalog z projektem z poprzedniej lekcji i nazwij go np. Prymitywy.

Otwórz plik render.pas. Poszukaj procedure RenderFrame i usuń polecenia glRotate, glBegin, glEnd oraz wszystko między nimi.

W ten sposób usunęliśmy obiekt stworzony dla potrzeb poprzedniego artykułu, a uzyskaliśmy procedurę:

Aby utworzyć jakikolwiek prymityw musimy zadeklarować jego rodzaj go jako parametr w poleceniu glBegin. Wyrózniamy :
– GL_POINTS – niezależne od siebie punkty
– GL_LINES – pary wierzchołków tworzą końce odcinków
– GL_LINE_STRIP – kolejne wierzchołki tworzą łamaną
– GL_LINE_LOOP – tak jak wyżej, tyle że pierwszy wierzchołek z ostatnim jest połączony segmentent
– GL_TRIANGLES – kolejne trójki wierzchołków wyznaczają trójkąty
– GL_TRIANGLE_STRIP – pas trójkątów
– GL_TRIANGLE_FAN – wachlarz trójkątów
– GL_QUADS – każde kolejne cztery wierzchołki wyznaczają czworokąt
– GL_QUAD_STRIP – pas czworokątów
– GL_POLYGON – kolejne wierzchołki wyznaczają wypukły wielokąt

Następnie po tym poleceniu tworzymy wierzchołki za pomocą :

Liczba wierzchołków jest zależna od rodzaju prymitywu oraz naszych potrzeb. Po zakończeniu
wpisujemy glEnd;

Oto przykład rysujący trójkąt:

Każdemu wierzchołkowi możemy przypisać określony kolor. Polecenie nadające go omówiliśmy w pierwszym artykule (glColor3f) :

Tablice dla prymitywów

A co zrobić, jeśli mamy obiekt składający się z np. 500 wierzchołków ? Możemy zapisywać każdy po kolei według powyższego przykładu, ale na szczęście nie musimy. OpenGL umożliwia tworzenie tablic zawierających pozycje wierzchołków, a następnie za pomocą jednego polecenia wyświetlenie prymitywu. Musimy stworzyć nowy rekord, który będzie zawierał pozycję wierzchołka. Nazwiemy go TVertex. Następnie zadeklarujemy tablicę zawierającą wierzchołki – vertex oraz utwórzmy procedurę, która będzie przypisywać im wartości. To wszystko wykonamy w pliku timer.pas. Oto listing tego pliku po dokonaniu zmian :

Do definiowania tablicy wierzchołków użyjemy polecenia:

Aby uaktywnić tablicę:

Jako rodzajn tablicy wybraliśmy GL_VERTEX_ARRAY. Oprócz niej możemy wywołac m.in. :
– GL_TEXTURE_COORD_ARRAY – przy definiowaniu tekstur
– GL_COLOR_ARRAY – przy definiowniu kolorów

Teraz otwórz plik api_func.pas. W uses dopisz timer oraz na początku procedury GLInit wywołaj
wcześniej utworzoną SetVertex. Fragment kodu z tego unitu :

Pozostała nam wyświetlenie prymitywu utworzonego z wierzchołków zawartych w tablicy. Powracamy do procedury RenderFrame w render.pas. Dopiszmy polecenie :

Pierwszy parametr zawiera rodzaj prymitywa, drugi liczbę wierzchołków, trzeci typ danych, a czwarty wskaźnik do tablicy identyfikatorów.

Kończąc artykuł zapraszam do zapoznania się ze źródłami.

Autor: Nakiel

 

Załączniki