Tekstury. Dorota Smorawa

Podobne dokumenty
Teksturowanie. Oprogramowanie i wykorzystanie stacji roboczych. Wykład 10. Tekstury. Proces nakładania tekstury.

OpenGL Światło (cieniowanie)

OpenGL Światło (cieniowanie)

OpenGL - tekstury Mapowanie tekstur

OpenGL teksturowanie

Światła i rodzaje świateł. Dorota Smorawa

Zadanie 1. Ściana. 1. Potrzebne zmienne w dołączonym do zadania kodzie źródłowym

Mieszanie kolorów. Dorota Smorawa

Materiały. Dorota Smorawa

Laboratorium 4 OpenGl (4) Oświetlenie sceny

Teksturowanie (ang. texture mapping)

Laboratorium Grafiki Komputerowej i Animacji. Ćwiczenie VI. Biblioteka OpenGL - teksturowanie

Laboratorium 2. Część I. Perspektywa. Obsługa poleceń myszy. 2. W sekcji przeznaczonej na definicję zmiennych globalnych dodaj następujące definicje:

Laboratorium Grafiki Komputerowej i Animacji. Ćwiczenie VI. Biblioteka OpenGL - teksturowanie

Przekształcenia geometryczne. Dorota Smorawa

Elementarne obiekty geometryczne, bufory. Dorota Smorawa

Wprowadzenie do programowania z wykorzystaniem biblioteki OpenGL. Dorota Smorawa

Rzutowanie DOROTA SMORAWA

Janusz Ganczarski. OpenGL Pierwszy program

PRZEWODNIK PO PRZEDMIOCIE

Bartosz Bazyluk Teksturowanie Pojęcie tekstury, potok, zastosowania. Gry komputerowe, Informatyka N1, III Rok

8 Przygotował: mgr inż. Maciej Lasota

OpenGL oświetlenie i tekstury. OpenGL oświetlenie. Bogdan Kreczmer.

Bartosz Bazyluk Teksturowanie Mapy bitowe, pojęcie tekstury, potok, zastosowania.

2 Przygotował: mgr inż. Maciej Lasota

6 Przygotował: mgr inż. Maciej Lasota

GLKit. Wykład 10. Programowanie aplikacji mobilnych na urządzenia Apple (IOS i ObjectiveC) #import "Fraction.h" #import <stdio.h>

OpenGL Zaawansowana grafika komputerowa

Wstęp Podstawy Pierwszy program Definiowanie sceny 3D Przekształcenia geometryczne... 47

glwindowpos2d void DrawString (GLint x, GLint y, char *string) { glwindowpos2i (x,y); int len = strlen (string); for (int i = 0; i < len; i++)

Grafika Komputerowa Wykład 6. Teksturowanie. mgr inż. Michał Chwesiuk 1/23

Temat: Transformacje 3D

Wprowadzenie. Artur Staszczyk Bartłomiej Filipek

Światło. W OpenGL można rozróżnić 3 rodzaje światła

OpenGL oświetlenie. Bogdan Kreczmer. Katedra Cybernetyki i Robotyki Wydziału Elektroniki Politechnika Wrocławska

Plan wykładu. Akcelerator 3D Potok graficzny

Synteza i obróbka obrazu. Tekstury. Opracowanie: dr inż. Grzegorz Szwoch Politechnika Gdańska Katedra Systemów Multimedialnych

Oświetlenie w OpenGL. Oprogramowanie i wykorzystanie stacji roboczych. Wykład 8. Światło otaczajace. Światło rozproszone.

3 Przygotował: mgr inż. Maciej Lasota

dr inż. Jacek Dąbrowski, KSG

OpenGL i Qt. Bogdan Kreczmer. Katedra Cybernetyki i Robotyki Wydziału Elektroniki Politechnika Wrocławska

GRAFIKA KOMPUTEROWA 10: Antyaliasing

Efekt lustra 3D w OpenGL z wykorzystaniem bufora szablonowego (stencil buffer)

ECDL/ICDL CAD 2D Moduł S8 Sylabus - wersja 1.5

Co to jest OpenGL? Oprogramowanie i wykorzystanie stacji roboczych. Wykład 5. OpenGL - Achitektura. OpenGL - zalety. olas@icis.pcz.

1 Wstęp teoretyczny. Temat: Manipulowanie przestrzenią. Grafika komputerowa 3D. Instrukcja laboratoryjna Układ współrzędnych

3.4. Opis konfiguracji layoutów.

OpenGL. Silicon Graphics (IRIS GL stacje graficzne)

Janusz Ganczarski. OpenGL Definiowanie sceny 3D

GRAFIKA KOMPUTEROWA 7: Kolory i cieniowanie

Wykład 8: klasy cz. 4

PRZEWODNIK PO PRZEDMIOCIE

Zastosowania Robotów Mobilnych

UWAGA!!! Przed przystąpieniem do zamknięcia roku proszę zrobić kopie bezpieczeństwa

Baltie 3. Podręcznik do nauki programowania dla klas I III gimnazjum. Tadeusz Sołtys, Bohumír Soukup

Programowanie Procesorów Graficznych

Lab 9 Podstawy Programowania

Oprogramowanie i wykorzystanie stacji roboczych. Wykład 5

Mapowanie tekstur Mip-mapy (level of detail) Filtrowanie Multiteksturowanie

Program szkoleniowy. 16 h dydaktycznych (12 h zegarowych) NAZWA SZCZEGÓŁY CZAS. Skróty dostępu do narzędzi

Programowanie w języku C++

JĘZYKI PROGRAMOWANIA Z PROGRAMOWANIEM OBIEKTOWYM. Wykład 6

Grafika 3D OpenGL część II

Animacje cz. 2. Rysujemy koło zębate

PROE wykład 2 operacje na wskaźnikach. dr inż. Jacek Naruniec

Szablony klas, zastosowanie szablonów w programach

76.Struktura oprogramowania rozproszonego.

Ustawienia materiałów i tekstur w programie KD Max. MTPARTNER S.C.

Ćwiczenie 4 - Podstawy materiałów i tekstur. Renderowanie obrazu i animacji

> C++ dynamiczna alokacja/rezerwacja/przydział pamięci. Dane: Iwona Polak. Uniwersytet Śląski Instytut Informatyki

Analiza i projektowanie oprogramowania. Analiza i projektowanie oprogramowania 1/32

Opis ikon OPIS IKON. Ikony w pionowym pasku narzędzi: Ikony te używane są przy edycji mapy. ta ikona otwiera szereg kolejnych ikon, które pozwalają na

Bartłomiej Filipek

Podstawy programowania. Wykład 7 Tablice wielowymiarowe, SOA, AOS, itp. Krzysztof Banaś Podstawy programowania 1

7. Dynamiczne generowanie grafiki

Wskaźniki i dynamiczna alokacja pamięci. Spotkanie 4. Wskaźniki. Dynamiczna alokacja pamięci. Przykłady

Specyfikacja OpenGL Podstawy programowania grafiki komputerowej*

Podstawy programowania. Wykład 6 Złożone typy danych: struktury, unie. Krzysztof Banaś Podstawy programowania 1

Uniwersytet Zielonogórski Instytut Sterowania i Systemów Informatycznych. Ćwiczenie 3 stos Laboratorium Metod i Języków Programowania

Rysowanie punktów na powierzchni graficznej

utworz tworzącą w pamięci dynamicznej tablicę dwuwymiarową liczb rzeczywistych, a następnie zerującą jej wszystkie elementy,

Tabela wewnętrzna - definicja

WERSJA 4.3. Opis zmian. Spis treści

Formaty obrazów rastrowych biblioteki PBM

Programowanie gier komputerowych Tomasz Martyn Wykład 6. Materiały informacje podstawowe

I. Program II. Opis głównych funkcji programu... 19

Smarty PHP. Leksykon kieszonkowy

Grafika komputerowa Tekstury

Zatem standardowe rysowanie prymitywów wygląda następująco:

1. Wartość, jaką odczytuje się z obszaru przydzielonego obiektowi to: a) I - wartość b) definicja obiektu c) typ oboektu d) p - wartość

Opis funkcji modułu Konwerter 3D

R o g e r A c c e s s C o n t r o l S y s t e m 5

Oprogramowanie i wykorzystanie stacji roboczych. Wykład 6

Szybkie tworzenie grafiki w GcIde

Autodesk 3D Studio MAX Teksturowanie modeli 3D

Grafika trójwymiarowa

POMOC / INSTRUKCJA OBSŁUGI

Java: kilka brakujących szczegółów i uniwersalna nadklasa Object

Karty pracy. Ustawienia. W tym rozdziale została opisana konfiguracja modułu CRM Karty pracy oraz widoki i funkcje w nim dostępne.

Programowanie współbieżne Wykład 8 Podstawy programowania obiektowego. Iwona Kochaoska

Transkrypt:

Tekstury Dorota Smorawa

Definiowanie obiektów tekstur Dodawanie tekstur należy rozpocząć od zdefiniowania nazw tekstur ładowanych do bufora. Dla ułatwienia pracy z teksturami możemy przygotować obiekty tekstur. #define LICZBA_OB_TEXTUR 3 GLuint obiektytextur [LICZBA_OB_TEXTUR]; char *plikitextur[] = {"Grass.tga", "Wood.tga", "Slonce.tga"}; Włączenie teksturowania odbywa się za pomocą funkcji glenable z parametrem GL_TEXTURE_2D (1D lub 3D). Powinniśmy jeszcze wygenerować obiekty tekstur i ustawić tryb środowiska pracy dla tekstur, np.: glenable(gl_texture_2d); // włączenie teksturowania glgentextures(liczba_ob_textur, obiektytextur); /// wygenerowanie obiektów tekstur gltexenvi(gl_texture_env, GL_TEXTURE_ENV_MODE, GL_MODULATE); // ustalenie trybu środowiska

Ładowanie tekstur do bufora Ustawienie trybu środowiska pracy dla teksturowania ma wpływ na wygląd tekstury nałożonej na obiekt. Aby nie było żadnych przekłamań powinniśmy dla każdego obiektu, na który nakładamy teksturę, ustawić kolor biały. Po włączeniu teksturowania i ustawieniu środowiska pracy dla tekstur, kolejny krok dotyczy załadowanie tekstur do bufora. Po załadowaniu tekstur należy zwolnić pamięć. for (i = 0; i < LICZBA_OB_TEXTUR; i++) { GLubyte *pbytes; GLint iwidth, iheight, icomponents; GLenum eformat; glbindtexture(gl_texture_2d, obiektytextur[i]); // dowiązanie obiektów tekstur pbytes = glploadtga(plikitextur[i], &iwidth, &iheight, &icomponents, &eformat); // Załadowanie tekstur // utworzenie mipmap glubuild2dmipmaps(gl_texture_2d, icomponents, iwidth, iheight, eformat, GL_UNSIGNED_BYTE, pbytes); free(pbytes); // zwolnienie pamięci}

Przydzielanie i zwalnianie pamięci dla tekstur Za każdym razem, kiedy chcemy użyć tekstury musimy przydzielić dla niej pamięć. Dodając nowe tekstury do sceny, zwiększamy tę pamięć. Jeśli nasza scena jest dość rozbudowana, składająca się np. z kilku różnych scen, to po przejściu pierwszej sceny zawierającej tekstury, powinniśmy zwolnić pamięć dla tych tekstur, o ile oczywiście w kolejnych scenach z tych właśnie tekstur już nie będziemy korzystać. Powinniśmy również po zakończeniu działania aplikacji usunąć wszystkie obiekty tekstur. Do usuwania podanego obiektu tekstur służy funkcja gldeletetextures. //Wyjscie z programu void Wyjscie (void) { //usuniecie tekstur gldeletetextures (LICZBA_OB_TEXTUR, obiektytextur); // usunięcie obiektów tekstur }

Korzystanie z obiektów tekstur Dla każdej ze zdefiniowanych tekstur możemy ustawić odpowiednie parametry definiujące sposób jej zachowania na obiekcie, na który zostanie ona nałożona. Ustawiamy tutaj sposób powiększania tekstur GL_TEXTURE_MAG_FILTER, pomniejszania tekstur GL_TEXTURE_MIN_FILTER, oraz sposób zawijania tekstur np. GL_TEXTURE_WRAP_S, GL_TEXTURE_WRAP_T. Wszystkie te parametry ustalamy za pomocą funkcji gltexparameter. gltexparameteri(gl_texture_2d, GL_TEXTURE_MAG_FILTER, GL_LINEAR); gltexparameteri(gl_texture_2d, GL_TEXTURE_MIN_FILTER, GL_LINEAR_MIPMAP_LINEAR); gltexparameteri(gl_texture_2d, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE); gltexparameteri(gl_texture_2d, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);

Korzystanie z obiektów tekstur lub gltexparameterf(gl_texture_2d, GL_TEXTURE_WRAP_S, GL_REPEAT); gltexparameterf(gl_texture_2d, GL_TEXTURE_WRAP_T, GL_REPEAT);

Odwzorowywanie tekstur Jeśli chcemy użyć tekstury na scenie i nałożyć ją na dany obiekt musimy przed definiowaniem wierzchołka danego obiektu podstawowego określić, która z tekstur będzie nakładana. Służy do tego funkcja glbindtexture, przyjmująca jako pierwszy parametr rodzaj tekstury GL_TEXTURE_2D (1D lub 3D), zaś jako drugi parametr, potrzebną teksturę. // wywołanie tekstury nakładanej na obiekt podstawowy glbindtexture (GL_TEXTURE_2D, obiektytextur[0]); lub glbindtexture (GL_TEXTURE_2D, obiektytextur[ TEXTURA_ZIMA]); Musimy pamiętać, że w danym momencie do jednego obiektu podstawowego możemy nałożyć tylko jedną teksturę, więc dołączanie kolejnych tekstur przed definiowaniem kolejnych wierzchołków jednego obiektu nie ma sensu.

Określanie współrzędnych tekstur Każda tekstura w zależności od rodzaju (1D, 2D lub 3D) ma odpowiednią ilość współrzędnych tekstur. Współrzędne te zawierają się z zakresu od 0.0f do 1.0f. Jeśli użyjemy większej wartości, wówczas tekstura nie zostanie nałożona na obiekt. Najprostszym przypadkiem jest nakładanie tekstury dwuwymiarowej na kwadrat. glbegin(gl_quads); // obiekt podstawowy kwadrat glend(); glnormal3f(0.0f, 1.0f, 0.0f); // określenie kierunku odbijania światła gltexcoord2f(0.0f, 0.0f); // określenie pierwszej współrzędnej tekstury glvertex3f(0.0f, 2.0f, 0.0f); // zdefiniowanie pierwszego wierzchołka kwadratu gltexcoord2f(1.0f, 0.0f); // określenie drugiej współrzędnej tekstury glvertex3f(2.0f, 2.0f, 0.0f); // zdefiniowanie drugiego wierzchołka kwadratu gltexcoord2f(1.0f, 1.0f); // określenie trzeciej współrzędnej tekstury glvertex3f(2.0f, 2.0f, -2.0f); // zdefiniowanie trzeciego wierzchołka kwadratu gltexcoord2f(0.0f, 1.0f); // określenie czwartej współrzędnej tekstury glvertex3f(0.0f, 2.0f, -2.0f); // zdefiniowanie czwartego wierzchołka kwadratu

glpixelstore składnia parametry Kontroluje sposób zapisywania i odczytywania danych pikseli w pamięci void glpixelstorei (GLenum pname, GLint param); pname ustalany parametr, param wartość parametru. Parametry oraz wartości ustalanych parametrów zostały podane na wykładzie. Najczęściej przyjmuje się GL_UNPACK_ALIGNMENT z wartością 1.

glploadtga składnia parametry Funkcja umożliwia załadowanie tekstury w formacie *.tga. Zwraca wszystkie parametry potrzebne do dokładnego scharakteryzowania ładowanej tekstury. GLbyte glploadtga (const char pfilename, GLint pwidth, GLint pheight, GLint pcomponents, GLenum pformat); pfilename nazwa lub nazwy ładowanych plików graficznych w formacie *.tga, pwidth szerokość tekstury, pheight wysokość tekstury, pcomponents sposób opisu kolorów w zależności od głębi kolorów(na przykład: GL_RGB8, GL_RGBA8, GL_LUMINANCE8), pformat format opisu kolorów w zależności id głębi kolorów (na przykład: GL_BGR_EXT, GL_BGRA_EXT, GL_LUMINANCE),

glteximage2d składnia parametry Definiuje obraz tekstury (dla 2D dwuwymiarowej). Dane obrazu podlegają obróbce zdefiniowanej funkcjami glpixelmap, glpixelstore i glpixeltransfer. void glteximage2d (GLenum target, GLint level, GLint internalformat, Glsizei width, Glsizei height, GLint border, Glenum format, Glenum type, void *data); target określenie rodzaju tekstury. W funkcji glteximage1d można tu podać wartości GL_TEXTURE_1d lub GL_PROXY_TEXTURE_1D, W funkcji glteximage2d można podać tu wartości GL_TEXTURE_2D lub GL_PROXY_TEXTURE_2D. W funkcji glteximage3d można podać tu wartości GL_TEXTURE_3D lub GL_PROXY_TEXTURE_3D. Dla dwuwymiarowych map kubicznych można podać też wartości GL_TEXTURE_CUBE_MAP_POSITIVE_X, GL_TEXTURE_CUBE_MAP_NEGATIVE_X, GL_TEXTURE_CUBE_MAP_POSITIVE_Y, GL_TEXTURE_CUBE_MAP_NEGATIVE_Y, GL_TEXTURE_CUBE_MAP_POSITIVE_Z, GL_TEXTURE_CUBE_MAP_NEGATIVE_Z, level poziom mipmapy. Zazwyczaj podaje się wartość 0, chyba że korzystamy z mechanizmu mipmapowania.

internalformat wewnętrzny format danych obrazu. Można podać tu wartości od 1 do 4 określające liczbę składowych koloru lub jedną z poniższych stałych: GL_ALPHA, GL_ALPHA4, GL_ALPHA8, GL_ALPHA12, GL_ALPHA16, GL_LUMINANCE, GL_LUMINANCE4, GL_LUMINANCE8, GL_LUMINANCE12, GL_LUMINANCE16, GL_LUMINANCE_ALPHA, GL_LUMINANCE4_ALPHA4, GL_LUMINANCE6_ALPHA2, GL_LUMINANCE8_ALPHA8, GL_LUMINANCE12_ALPHA4, GL_LUMINANCE12_ALPHA12, GL_LUMINANCE16_ALPHA16, GL_INTENSITY, GL_INTENSITY4, GL_INTENSITY8, GL_INTENSITY12, GL_INTENSITY16, GL_RGB, GL_R3_G3_B2, GL_RGB4, GL_RGB5, GL_RGB8, GL_RGB10, GL_RGB12, GL_RGB16, GL_RGBA, GL_RGBA2, GL_RGBA4, GL_RGB5_A1, GL_RGBA8, GL_RGB10_A2, GL_RGBA12, GL_RGBA16, width szerokość obrazu tekstury. Musi to być wartość będąca potęgą liczby 2, ale może zawierać też szerokość obramowania. height wysokość obrazu tekstury. Musi to być wartość będąca potęgą liczby 2, ale może zawierać też szerokość obramowania. depth głębokość trójwymiarowego obrazu tekstury. Musi to być wartość będąca potęgą liczby 2, ale może zawierać też szerokość obramowania. border szerokość obramowania tekstury. Wszystkie implementacje muszą obsługiwać obramowania o szerokości 0, 1 lub 2 piksele. format format danych pikseli. Formaty podane na wykładzie. type typ danych każdej z wartości teksli. Typy podane na wykładzie. data dane pikseli.

gltexparameter składnia Ustala wartości parametrów tekstury. Parametry te dowiązywane są do aktualnego stanu tekstur (wybór aktualnego stanu tekstur możliwy jest poprzez wywołanie funkcji glbindtexture). void gltexparameteri (Glenum target, Glenum pname GLint param); parametry target rodzaj tekstury, dla którego ustalany jest parametr. Można podać tu wartości GL_TEXTURE_1D, GL_TEXTURE_2D, GL_TEXTURE_3D lub GL_TEXTURE_CUBE_MAP. pname parametr, którego wartość będzie ustalana. Można tu podać następujące nazwy parametrów: GL_TEXTURE_MIN_FILTER określa metodę filtrowania używaną przez filtr pomniejszający (GL_NEAREST, GL_LINEAR, GL_NEAREST_MIPMAP_NEAREST, GL_NEAREST_MIPMAP_LINEAR, GL_LINEAR_MIPMAP_NEAREST, GL_LINEAR_MIPMAP_LINEAR); GL_TEXTURE_MAX_FILTER określa metodę filtrowania używaną przez filtr powiększający (te same wartości co dla filtru pomniejszającego); GL_TEXTURE_MIN_LOD określa minimalny poziom dokładności tekstury stosowany przez mechanizm mipmapowania; GL_TEXTURE_MAX_LOD określa maksymalny poziom dokładności tekstury stosowany przez mechanizm mipmapowania; GL_TEXTURE_BASE_LEVEL określa minimalny poziom ładowanej tekstury dla mechanizmu mipmapowania; GL_TEXTURE_MAX_LEVEL określa maksymalny poziom ładowanej tekstury dla mechanizmu mipmapowania; GL_TEXTURE_WRAP_S określa sposób traktowania wartości współrzędnej s wykraczających poza zakres od 0.0 do 1.0 (GL_CLAMP, GL_CLAMP_TO_EDGE, GL_CLAMP_TO_BORDER, GL_REPEAT, GL_MIRRORED_REPEAT);

GL_TEXTURE_WRAP_T określa sposób traktowania wartości współrzędnej t wykraczających poza zakres od 0.0 do 1.0 (GL_CLAMP, GL_CLAMP_TO_EDGE, GL_CLAMP_TO_BORDER, GL_REPEAT, GL_MIRRORED_REPEAT); GL_TEXTURE_WRAP_R określa sposób traktowania wartości współrzędnej r wykraczających poza zakres od 0.0 do 1.0 (GL_CLAMP, GL_CLAMP_TO_EDGE, GL_CLAMP_TO_BORDER, GL_REPEAT, GL_MIRRORED_REPEAT); GL_BORDER_COLOR określa kolor obramowania tekstur nie posiadających własnego obramowania; GL_GENERATE_MIPMAP określa, czy poziomy dokładności mipmap mają być przygotowywane automatycznie (wartość GL_TRUE oznacza, że tak); GL_TEXTURE_PRIORITY ustala priorytet danej tekstury. Podana tutaj wartość musi zawierać się w zakresie od 0.0 do 1.0; GL_DEPTH_TEXTURE_MODE ustala tryb głębokości tekstury; GL_TEXTURE_COMPARE_MODE ustala tryb porównywania tekstury GL_TEXTURE_COMPARE_FUNC ustala funkcję porównywania tekstury. param wartość nadawana parametrowi określonemu przez pname.

gltexenv składnia parametry Ustala wartości parametrów środowiska tekstur. Środowisko tekstur przypisywane jest do pojedynczej jednostki teksturującej, dlatego istnieje niezależnie od stanu tekstury dowiązanego funkcją glbindtexture. Z tego powodu na każdy obiekt tekstury dowiązywany do aktywnej jednostki teksturującej zaczynają oddziaływać ustawienia środowiska tekstur. void gltexenvi (GLenum target, GLenum pname, GLint param); target modyfikowane środowisko tekstur. Można podać tutaj wartość GL_TEXTURE_ENV lub GL_TEXTURE_FILTER_CONTROL, pname nazwa modyfikowanego parametru. Jeżeli wybrane środowisko tekstur to GL_TEXTURE_FILTER_CONTROL, to dopuszczalną nazwą parametru jest GL_TEXTURE_LOD_BIAS, a jego wartość będzie określała przesunięcie stosowane przez mechanizm wyboru szczegółowości tekstury. Jeżeli wybrane środowisko tekstur to GL_TEXTURE_ENV, to można podać tu następujące nazwy parametrów: GL_TEXTURE_ENV_MODE, GL_TEXTURE_ENV_COLOR, GL_COMBINE_RGB lub GL_COMBINE_ALPHA. Jeżeli wybranym parametrem jest GL_TEXTURE_ENV_COLOR, to parametr param musi wskazywać na tablicę zawierającą wartości koloru stosowanego w danym środowisku tekstur. Jeżeli nazwa modyfikowanego parametru to GL_TEXTURE_ENV_MODE, to w parametrze param można podać wartości: GL_REPLACE, GL_DECAL, GL_MODULATE, GL_BLEND, GL_ADD lub GL_COMBINE. Tryby środowiska zamieszczone zostały w wykładzie. param wartość parametru. Musi być jedną z podanych wartości (GL_REPLACE, GL_DECAL, GL_MODULATE, GL_BLEND, GL_ADD lub GL_COMBINE), albo tablicą zawierającą składowe RGBA koloru środowiska tekstur.

gltexcoord2d składnia parametry Określa współrzędne tekstury w ramach nakładania tekstur na wielokąt. W zależności od użytej funkcji ustala od jednej do czterech współrzędnych aktualnej tekstury. Współrzędne tekstury mogą być aktualizowane w dowolnym momencie pomiędzy wywołaniami funkcji glbegin i glend, ponieważ przypisywane są wierzchołkom definiowanym po tej operacji. Współrzędna q stosowana jest do skalowania wartości współrzędnych s, t i r, dlatego domyślnie nadawana jest jej wartość 1.0. Na współrzędnych tekstury można wykonywać dowolne operacje macierzowe. Trzeba tylko pamiętać o wybraniu odpowiedniego stosu macierzy (parametr GL_TEXTURE przekazywany do funkcji glmatrixmode). void gltexcoord2d (GLdouble s, GLdouble t); s pozioma współrzędna obrazu tekstury, t pionowa współrzędna obrazu tekstury.

glgentextures składnia parametry Generuje listę nazw obiektów tekstur. Wypełnia podaną tablicę żądaną liczbą wygenerowanych obiektów tekstur. Nazwy (identyfikatory) obiektów tekstur są liczbami całkowitymi bez znaku, ale nie ma żadnej gwarancji, że wartości zwrócone w tablicy będą tworzyły ciągłą sekwencję liczb całkowitych. Nazwy obiektów zwracane w tej funkcji zawsze są niepowtarzalne, chyba że któraś z tych nazw zastanie usunięta f unkcją gldeletetextures. void glgentextures (GLsizei n, GLuint *textures); n liczba obiektów tekstur do wygenerowania, textures tablica, w której zapisane zostaną nazwy wygenerowanych obiektów tekstur.

glbindtexture składnia parametry Dowiązuje aktualny stan tekstur do wskazanego rodzaju tekstur. Pozwala na tworzenie lub przełączanie nazwanego stanu tekstury. Pierwsze użycie funkcji tworzy nowy stan tekstury identyfikowany przez nazwę, czyli liczbę całkowitą bez znaku. Kolejne wywołania funkcji z tym samym identyfikatorem wybierają dany stan tekstur i czynią go aktywnym. void glbindtexture (GLenum target, GLuint texture); target rodzaj tekstur, do którego nastąpi dowiązanie. Mogą to być wartości GL_TEXTURE_1D, GL_TEXTRE_2D lub GL_TEXTURE_3D, texture nazwa lub uchwyt obiektu tekstury.

gldeletetextures składnia parametry Usuwa zbiór obiektów tekstur. Każdy z usuniętych obiektów tekstur może być ponownie zdefiniowany wywołaniem funkcji glbindtexture. Pamięć użytkowana przez poszczególne obiekty tekstur jest również zwalniana i można ją wykorzystać do ładowania innych tekstur. Jeżeli w tablicy podane zostaną identyfikatory nieistniejących obiektów tekstur, to zostaną one zignorowane. void gldeletetextures (GLsizei n, GLuint *textures); n liczba obiektów tekstur do usunięcia, textures tablica zawierająca listę obiektów do usunięcia.

Literatura 1. Richard S. Wright jr, Michael Sweet: OpenGL Księga eksperta Wydanie III, Helion2005 2. Pomoce dydaktyczne i instrukcje, http://icis.pcz.pl/~mkubanek 3. Jackie Neider, Tom Davis, Mason Woo: OpenGL Programming Guide The RedBook 4. Kevin Hawkins, Dave Astle: OpenGL. Programowanie gier, Helion 2003 5. The official OpenGL web page, http://www.opengl.org 6. http://januszg.hg.pl/opengl/