OpenGL oświetlenie Bogdan Kreczmer bogdan.kreczmer@pwr.wroc.pl Katedra Cybernetyki i Robotyki Wydziału Elektroniki Politechnika Wrocławska Kurs: Copyright c 2018 Bogdan Kreczmer Niniejszy dokument zawiera materiały do wykładu dotyczącego programowania obiektowego. Jest on udostępniony pod warunkiem wykorzystania wyłącznie do własnych prywatnych potrzeb i może on być kopiowany wyłącznie w całości, razem z niniejszą stroną tytułową.
Niniejsza prezentacja została wykonana przy użyciu systemu składu L A TEX oraz stylu beamer, którego autorem jest Till Tantau. Strona domowa projektu Beamer: http://latex-beamer.sourceforge.net
1 OpenGL Ogólna charakterystyka 2 Ogólna charakterystyka źródeł światła Tworzenie i dodawanie oświetlenia 3
Geneza OpenGL Ogólna charakterystyka OpenGL (Open Graphics Library) specyfikuje i definiuje otwarte i uniwersalne API na potrzeby tworzenia grafiki 2D i 3D. Bazuje ona na pierwotnej koncepcji biblioteki IRIS GL tworzonej przez firmę Silicon Graphics Inc. Otwartą wersją biblioteki OpenGL jest biblioteka Mesa. Historia w skrócie W 1992 powołana została grupa ARB (ang. Architectural Review Board). Zrzeszała ona 10 firm (3DLabs, Apple, ATI, Dell, Evans & Sutherland, Hewlett-Packard, IBM, Intel, Matrox, NVIDIA, SGI, Sun Microsystems). Grupa ta kontrolowała rozwój OpenGL. W połowie 2006 komitet standaryzacyjny ARB zdecydował o wcieleniu ARB do Khronos. Od tego czasu Khronos nadzoruje rozwój i standaryzację OpenGL.
Khronos OpenGL Ogólna charakterystyka Grupa Khronos została założona przez firmy: ATI Technologies, Autodesk Media and Entertainment, Evans & Sutherland, Intel, NVIDIA, Silicon Graphics oraz Sun Microsystems. Celem grupy jest tworzenie otwartych standardów API, które umożliwia autoryzację i otwarzanie różnego typu mediów na różnych platformach i urządzeniach, w szczególności urządzeniach mobilnych. Ważniejsze specyfikacje i standaryzacje Grupy Khronos OpenGL (od roku 2006), OpenGL ES (ang. OpenGL for Embedded Systems) przenośna wersja OpenGL zaprojektowana w szczególności dla urządzeń mobilnych. Stanowi oficjalne API dla systemów Android i ios. Dla przeglądarek kompatibilnych z HTML5 stworzono osobną implementację WebGL. OpenCL API dla biblioteki wspmagającej pisanie aplikacji na różne jednostki obliczeniowe (np. CPU, GPU itd.)
Cechy OpenGL Ogólna charakterystyka Biblioteka ma architekturę klient-serwer. Klientem jest aplikacja, która zleca wykonanie operacji rysowania. Serwerem jest aktualna implementacja biblioteki. Zazwyczaj proces serwera jest na tym samym komputerze, ale tak być nie musi. Projekt biblioteki zakłada, że możliwie najwięcej operacji jest realizowana sprzętowo. Aczkolwiek cała biblioteka może zostać również zaimplementowana w wersji programowej. Implementacja biblioteki jest niezależna od języka (posiada wiele dowiązań z różnych języków). OpenGL nie jest związany z żadną konkretną platformą sprzętową. W tym sensie jest to biblioteka przenośna. OpenGL jest ukierunkowana na renderowanie grafiki. Tym samym nie dostarcza żadnych mechanizmów związanych wejściem (klawiaturą, myszką itp.), wyjściem audio, czy też mechanizmami zarządzania oknami.
Cecha działania OpenGL Ogólna charakterystyka Ma charakter maszyny stanu. Stan określany jest przez zbiór parametrów decydujących o trybie działania. Można je włączać lub wyłączać. Mogą też być zapamiętywane na stosie i później odtwarzane. Przykłady parametrów: macierze transformacji, kolor rysowania, rodzaj używanej linii, używana tekstura, sposób działania bufora Z, sposób rysowania wewnętrznych ścianek,
Ogólna charakterystyka Struktura aplikacji wykorzystującej OpenGL https://en.wikipedia.org/wiki/file:linux kernel and OpenGL video games.svg
Konwencje nazw OpenGL Ogólna charakterystyka NazwaFunkcji{1234}{b s i i64 f d ub us ui ui64}{v} Suffix b s i i64 ub us ui ui64 f d OpenGL Type GLbyte GLshort GLint GLint64 GLubyte GLushort GLuint GLuint64 GLfloat GLdouble Przykłady nazw funkcji void glvertexattrib1f(gluint index, GLfloat v0); void glvertexattrib2f(gluint index, GLfloat v0, GLfloat v1); void glvertexattrib3f(gluint index, GLfloat v0, GLfloat v1, GLfloat v2);
Rodzaje źródeł światła Ogólna charakterystyka źródeł światła Tworzenie i dodawanie oświetlenia Źródło światła może być punktowe. Jednak z takim źródłem stowarzyszone jest oświetlenie dookólne, które jest wynikiem wielokrotnych odbić światła od różnych powierzchni. Po wielu odbiciach światło to traci swoją pierwotną kierunkowość. W wyniku czego nie można określić jego pierwotnego pochodzenia. Światło to jednak znika po wyłączeniu jego pierwotnego źródła. Istnieje również ogólne rozproszone światło, które nie jest związane z żadnym źródłem.
Model oświetlenia OpenGL Ogólna charakterystyka źródeł światła Tworzenie i dodawanie oświetlenia Model oświetlenia obejmuje 4 składowe, które wyznaczane są niezależnie, a następnie sumowane. Tymi składowymi są następujące typy oświetlenia: dookólne (ang. ambient) pochodzi z wielokrotnych odbić, które uniemożliwiają wyznaczenie jego pierwotnego źródła. Gdy tego typu oświetlenie pada na powierzchnię, odbijane jest we wszystkich kierunkach w jednakowym stopniu. rozproszone (ang. diffuse) światło docierające z jednego określonego kierunku. Ta składowa daje intensywniejsze oświetlenie, gdy światło pada na wprost na powierzchnię, niż pod pewnym kątem. Jednak od powierzchni odbija się w jednakowy sposób we wszystkich kierunkach. zwierciadlane (ang. specular) światło pochodzi z jednego określonego kierunku. Po odbiciu od powierzchni ma tendencję rozchodzić się w jednym kierunku. Powierzchnie mogą mieć różne współczynniki dla poszczególnych komponentów (RGB) światła. Metal może mieć bardzo wysoki współczynnik. Natomiast sukno może mieć współczynnik bliski zeru. Wartość tego współczynnika można interpretować jako połyskliwość.
Spektrum OpenGL Ogólna charakterystyka źródeł światła Tworzenie i dodawanie oświetlenia Pomimo ustalonej charakterystyki widmowej źródła światła, składowe oświetlenia dookólnego, rozproszonego i zwierciadlanego mogą być różne. Przykład: Jeśli jesteśmy w pokoju, którego ściany są zielone i jest ono oświetlone światłem białym, to składowa oświetlenia dookólnego będzie miała silniejszą składową zieloną. Dla każdej składowej oświetlania można indywidualnie ustawić komponenty RGB.
Kolory materiałów OpenGL Ogólna charakterystyka źródeł światła Tworzenie i dodawanie oświetlenia Materiały mogą mieć różne komponenty spektralne dla składowych światła abient, diffuse i specular. Współczynniki tych komponentów decydują w jakim stopniu komponenty spektralne poszczególnych składowych światła zostaną odbite. Dodatkowo materiały mają składową emisyjną (ang. emissive), która symuluje światło wydobywające się z danej powierzchni. Składowa ta pozwala zwiększyć intensywność koloru obiektu. Nie wpływa na nią żadne zewnętrzne oświetlenie, jak też nie daje ono żadnego dodatkowego oświetlenia otoczenia. Wyznaczanie światła odbitego (L r, L g, L b ) = (S r M r, S g M g, S b M b ) Intensywność światła pochodzącego z kilku źródeł lub odbić podlega sumowaniu (L r, L g, L b ) = (L 1,r + L 2,r, L 1,g + L 2,g, L 1,b + L 2,b )
Tworzenie oświetlenia OpenGL Ogólna charakterystyka źródeł światła Tworzenie i dodawanie oświetlenia Zdefiniuj normalne wektory dla każdego wierzchołka wszystkich obiektów. Wektory definiują orientację obiektu względem źródła światła. Stwórz, wyselekcjonuj i ustaw w odpowiedniej pozycji jedno lub więcej źródeł światła. Stwórz i wybierz model oświetlenia, który zdefiniuje poziom globalnego dookólnego oświetlenia i lokalizację punktu obserwacji (aby umożliwić wyliczenie efektu oświetlenia). Zdefiniuj własności materiałów obiektów znajdujących się na scenie.
Tworzenie oświetlenia przykład Ogólna charakterystyka źródeł światła Tworzenie i dodawanie oświetlenia v o i d i n i t ( v o i d ) { G L f l o a t m a t s p e c u l a r [ ] = { 1. 0, 1. 0, 1. 0, 1. 0 }; GLfloat mat shininess [ ] = { 50.0 }; G L f l o a t l i g h t p o s i t i o n [ ] = { 1. 0, 1. 0, 1. 0, 0. 0 }; g l C l e a r C o l o r ( 0. 0, 0. 0, 0. 0, 0. 0 ) ; glshademodel (GL SMOOTH ) ; g l M a t e r i a l f v (GL FRONT, GL SPECULAR, m a t s p e c u l a r ) ; g l M a t e r i a l f v (GL FRONT, GL SHININESS, m a t s h i n i n e s s ) ; g l L i g h t f v ( GL LIGHT0, GL POSITION, l i g h t p o s i t i o n ) ; } glenable ( GL LIGHTING ) ; g l E n a b l e ( GL LIGHT0 ) ; glenable (GL DEPTH TEST ) ; v o i d d i s p l a y ( v o i d ) { g l C l e a r ( GL COLOR BUFFER BIT GL DEPTH BUFFER BIT ) ; g l u t S o l i d S p h e r e ( 1. 0, 20, 1 6 ) ; g l F l u s h ( ) ; }
Ogólna charakterystyka źródeł światła Tworzenie i dodawanie oświetlenia Tworzenie oświetlenia Wektory normalne v o i d i n i t ( v o i d ) { } v o i d d i s p l a y ( v o i d ) { g l C l e a r ( GL COLOR BUFFER BIT GL DEPTH BUFFER BIT ) ; g l u t S o l i d S p h e r e ( 1. 0, 20, 1 6 ) ; g l F l u s h ( ) ; } Zdefiniuj normalne wektory dla każdego wierzchołka wszystkich obiektów. Wektory definiują orientację obiektu względem źródła światła. Stwórz, wyselekcjonuj i ustaw w odpowiedniej pozycji jedno lub więcej źródeł światła. Stwórz i wybierz model oświetlenia, który zdefiniuje poziom globalnego dookólnego oświetlenia i lokalizację punktu obserwacji (aby umożliwić wyliczenie efektu oświetlenia). Zdefiniuj własności materiałów obiektów znajdujących się na scenie.
Ogólna charakterystyka źródeł światła Tworzenie i dodawanie oświetlenia Tworzenie oświetlenia Wektory normalne v o i d i n i t ( v o i d ) { } v o i d d i s p l a y ( v o i d ) { g l C l e a r ( GL COLOR BUFFER BIT GL DEPTH BUFFER BIT ) ; g l u t S o l i d S p h e r e ( 1. 0, 20, 1 6 ) ; g l F l u s h ( ) ; } Zdefiniuj normalne wektory dla każdego wierzchołka wszystkich obiektów. Wektory definiują orientację obiektu względem źródła światła. GLUT The OpenGL Utility Toolkit Niezależny od platformy toolkit umożliwiający pisanie programów wykorzystujących OpenGL. Implementuje prosty interfejs aplikacji dla okienkowych programów. Przewidziany jest do pisania małych lub średnich aplikacji.
Ogólna charakterystyka źródeł światła Tworzenie i dodawanie oświetlenia Tworzenie oświetlenia Źródło światła v o i d i n i t ( v o i d ) { G L f l o a t l i g h t p o s i t i o n [ ] = { 1. 0, 1. 0, 1. 0, 0. 0 }; g l L i g h t f v ( GL LIGHT0, GL POSITION, l i g h t p o s i t i o n ) ; } glenable ( GL LIGHTING ) ; g l E n a b l e ( GL LIGHT0 ) ; Zdefiniuj normalne wektory dla każdego wierzchołka wszystkich obiektów. Wektory definiują orientację obiektu względem źródła światła. Stwórz, wyselekcjonuj i ustaw w odpowiedniej pozycji jedno lub więcej źródeł światła. Stwórz i wybierz model oświetlenia, który zdefiniuje poziom globalnego dookólnego oświetlenia i lokalizację punktu obserwacji (aby umożliwić wyliczenie efektu oświetlenia). Zdefiniuj własności materiałów obiektów znajdujących się na scenie.
Ogólna charakterystyka źródeł światła Tworzenie i dodawanie oświetlenia Tworzenie oświetlenia Źródło światła v o i d i n i t ( v o i d ) { G L f l o a t l i g h t p o s i t i o n [ ] = { 1. 0, 1. 0, 1. 0, 0. 0 }; g l L i g h t f v ( GL LIGHT0, GL POSITION, l i g h t p o s i t i o n ) ; } glenable ( GL LIGHTING ) ; g l E n a b l e ( GL LIGHT0 ) ; Stwórz, wyselekcjonuj i ustaw w odpowiedniej pozycji jedno lub więcej źródeł światła. Użyte zostało tylko jedno źródło światła, które domyślnie ma kolor biały. W ogólnym przypadku może być 8 źródeł o dowolnych barwach. Domyślnie pozostałe źródła mają kolor światła czarny. Należy pamiętać, że włączanie kolejnych źródeł zwiększa też ilość obliczeń. glenable(gl LIGHTING) przygotowuje OpenGL do wykonania obliczeń oświetlenia.
Ogólna charakterystyka źródeł światła Tworzenie i dodawanie oświetlenia Tworzenie oświetlenia Model oświetlenia v o i d i n i t ( v o i d ) { G L f l o a t l i g h t p o s i t i o n [ ] = { 1. 0, 1. 0, 1. 0, 0. 0 }; g l L i g h t f v ( GL LIGHT0, GL POSITION, l i g h t p o s i t i o n ) ; } glenable ( GL LIGHTING ) ; g l E n a b l e ( GL LIGHT0 ) ; Zdefiniuj normalne wektory dla każdego wierzchołka wszystkich obiektów. Wektory definiują orientację obiektu względem źródła światła. Stwórz, wyselekcjonuj i ustaw w odpowiedniej pozycji jedno lub więcej źródeł światła. Stwórz i wybierz model oświetlenia, który zdefiniuje poziom globalnego dookólnego oświetlenia i lokalizację punktu obserwacji (aby umożliwić wyliczenie efektu oświetlenia). Zdefiniuj własności materiałów obiektów znajdujących się na scenie.
Ogólna charakterystyka źródeł światła Tworzenie i dodawanie oświetlenia Tworzenie oświetlenia Model oświetlenia v o i d i n i t ( v o i d ) { G L f l o a t l i g h t p o s i t i o n [ ] = { 1. 0, 1. 0, 1. 0, 0. 0 }; g l L i g h t f v ( GL LIGHT0, GL POSITION, l i g h t p o s i t i o n ) ; } glenable ( GL LIGHTING ) ; g l E n a b l e ( GL LIGHT0 ) ; Stwórz i wybierz model oświetlenia, który zdefiniuje poziom globalnego dookólnego oświetlenia i lokalizację punktu obserwacji (aby umożliwić wyliczenie efektu oświetlenia). Model oświetlenia definiowany jest przez funkcję gllightmodel*(). W tym przykładzie zostało zdefiniowane tylko oświetlenie dookólne. Ogólnie model oświetlenia definiuje, czy oświetlenie ma być liczone dla frontu powierzchni i jej tyłu, czy źródło światła znajduje się w nieskończoności, czy też w określonej odległości. W przykładzie obliczenia są wykonywane tylko dla frontu, a źródło znajduje się w nieskończoności.
Ogólna charakterystyka źródeł światła Tworzenie i dodawanie oświetlenia Tworzenie oświetlenia Własności materiału v o i d i n i t ( v o i d ) { GLfloat m a t s p e c u l a r [ ] = { 1. 0, 1. 0, 1. 0, 1.0 }; / RGBA / GLfloat mat shininess [ ] = { 50.0 }; g l M a t e r i a l f v (GL FRONT, GL SPECULAR, m a t s p e c u l a r ) ; g l M a t e r i a l f v (GL FRONT, GL SHININESS, m a t s h i n i n e s s ) ; } Zdefiniuj normalne wektory dla każdego wierzchołka wszystkich obiektów. Wektory definiują orientację obiektu względem źródła światła. Stwórz, wyselekcjonuj i ustaw w odpowiedniej pozycji jedno lub więcej źródeł światła. Stwórz i wybierz model oświetlenia, który zdefiniuje poziom globalnego dookólnego oświetlenia i lokalizację punktu obserwacji (aby umożliwić wyliczenie efektu oświetlenia). Zdefiniuj własności materiałów obiektów znajdujących się na scenie.
Ogólna charakterystyka źródeł światła Tworzenie i dodawanie oświetlenia Tworzenie oświetlenia Własności materiału v o i d i n i t ( v o i d ) { GLfloat m a t s p e c u l a r [ ] = { 1. 0, 1. 0, 1. 0, 1.0 }; / RGBA / GLfloat mat shininess [ ] = { 50.0 }; g l M a t e r i a l f v (GL FRONT, GL SPECULAR, m a t s p e c u l a r ) ; g l M a t e r i a l f v (GL FRONT, GL SHININESS, m a t s h i n i n e s s ) ; } Zdefiniuj własności materiałów obiektów znajdujących się na scenie. Rodzaj materiału definiuje sposób odbicia światła. Ponieważ interakcja różnych sposób odbicia światła jest bardzo złożona, dobór właściwych parametrów jest sztuką samą w sobie. Ogólnie dla powierzchni można określić takie parametry jak: ambient, diffuse oraz specular; niezależnie dla każdej z barw RGB. W prezentowanym przykładzie tylko dwie ostatnie własności zostały ustawione.
Ogólna charakterystyka źródeł światła Tworzenie i dodawanie oświetlenia Tworzenie oświetlenia Własności materiału Prototypy void gllight{if}(glenum light, GLenum pname, TYPE param); void gllight{if}v(glenum light, GLenum pname, TYPE *param); Nazwa parametru Domyślna wartość Znaczenie GL AMBIENT (0.0, 0.0, 0.0, 1.0) RGBA (intensywność światła) GL DIFFUSE (1.0, 1.0, 1.0, 1.0) RGBA (intensywność światła) GL SPECULAR (1.0, 1.0, 1.0, 1.0) RGBA (intensywność światła) GL POSITION (0.0, 0.0, 1.0, 0.0) (x, y, z, w) (pozycja światła) GL SPOT DIRECTION (0.0, 0.0, -1.0) (x, y, z) (kierunek snopu światła) GL SPOT EXPONENT 0.0 współczynnik eksponenty GL SPOT CUTOFF 180.0 ograniczenie snopu światła GL CONSTANT ATTENUATION 1.0 Stała zanikania GL LINEAR ATTENUATION 0.0 Współczynnik liniowego zanikania GL QUADRATIC ATTENUATION 0.0 Współczynnik zanikania z kwadratem odległości
Etapy mapowania tekstur Mapowanie tekstur wymaga wykonania następujących kroków: Stworzenie obiektu reprezentującego teksturę i wyspecyfikowanie tekstury. Wskazanie w jaki sposób tekstura ma być przeniesiona na każdy z pikseli danej powierzchni. Uaktywnienie mapowania tekstury. Zadanie współrzędnych tekstury na powierzchni i współrzędnych samej powierzchni obiektu, a następnie przystąpienie do renderowania obrazu. Mapowanie tekstury działa w trybie RGBA. Nie działa w trybie indeksowania kolorów.
Przykład tworzenia tekstury v o i d Viewer : : i n i t ( ) { MakeImage CheckBoard ( ) ; g l P i x e l S t o r e i (GL UNPACK ALIGNMENT, 1 ) ; g l G e n T e x t u r e s (1, &Texture4Manip ) ; glbindtexture (GL TEXTURE 2D, Texture4Manip ) ; } gltexparameteri (GL TEXTURE 2D, GL TEXTURE WRAP S, GL REPEAT ) ; gltexparameteri (GL TEXTURE 2D, GL TEXTURE WRAP T, GL REPEAT ) ; gltexparameteri (GL TEXTURE 2D, GL TEXTURE MAG FILTER, GL NEAREST ) ; // GL LINEAR ) ; //GL NEAREST ) ; gltexparameteri (GL TEXTURE 2D, GL TEXTURE MIN FILTER, GL NEAREST ) ; //GL LINEAR ) ; glteximage2d (GL TEXTURE 2D, 0, GL RGBA, WIDTH CHECK BOARD, HEIGHT CHECK BOARD, 0, GL RGBA, GL UNSIGNED BYTE, Image CheckBoard ) ;
Generowanie identyfikatorów g l G e n T e x t u r e s ( 1, &Texture4Manip ) ; g l B i n d T e x t u r e (GL TEXTURE 2D, Texture4Manip ) ; Funkcja glgentextures generuje identyfikator tekstury, który będzie wykorzystany do jej selekcji i tworzenia powiązań. W nomenklaturze opisu funkcji biblioteki OpenGL identyfikator ten określany jest jako nazwa tekstury. void glgentextures(glsizei n, GLunit *ptextres) n ilość identyfikatorów, która ma być wygenerowana, ptextres wskaźnik na tablicę, w której mają być składowane wygenerowane identyfikatory.
Tworzenie powiązań OpenGL g l G e n T e x t u r e s ( 1, &Texture4Manip ) ; g l B i n d T e x t u r e (GL TEXTURE 2D, Texture4Manip ) ; Funkcja glbindtexture tworzy odpowiednie struktury danych reprezentujące teksturę i dokonuje powiązania identyfikatora tekstury ze wspomnianą strukturą danych. Funkcja ta służy również do przełączania się między teksturami. Pierwszy parametr odpowiada za typ tekstury. void glbindtexture(glenum Target, GLunit TextureName) Target specyfikuje typ docelowej tekstury. Przykładowe dopuszczalne wartości: GL TEXTURE 1D, GL TEXTURE 2D, GL TEXTURE 3D, GL TEXTURE 1D ARRAY,. TextreName identyfikator tekstury, z którą ma nastąpić powiązanie. Identyfikator należy wygenerować za pomocą glgentextures.
Mapowanie tekstury OpenGL gltexparameteri (GL TEXTURE 2D, GL TEXTURE WRAP S, GL REPEAT ) ; gltexparameteri (GL TEXTURE 2D, GL TEXTURE WRAP T, GL REPEAT ) ; Funkcja gltexparameteri określa sposób mapowania tekstury na powierzchnię obiektu. Operacje wykonywane przez tę funkcję odnoszą się do bieżącej tekstury, która jest ustalona przez ostatnie wywołanie funkcji glbindtexture. Pierwszy parametr odnosi się do typu tekstury. void gltexparameteri(glenum Target, GLenum ParamName GLint ParamVal)) Target specyfikuje typ docelowej tekstury. Dopuszczalne wartości: GL TEXTURE 2D, GL CUBE MAP. ParamName symboliczna nazwa parametru. Dopuszczalne wartości: GL TEXTURE MIN FILTER, GL TEXTURE MIN FILTER, GL TEXTURE WRAP S, GL TEXTURE WRAP T. ParamVal specyfikuje wartość parametru identyfikowanego przez symbol przekazany przez ParamName.
Mapowanie tekstury OpenGL gltexparameteri (GL TEXTURE 2D, GL TEXTURE WRAP S, GL REPEAT ) ; gltexparameteri (GL TEXTURE 2D, GL TEXTURE WRAP T, GL REPEAT ) ; W tym przypadku, ustawiane są odpowiednie wartości dla parametrów odpowiadających za zawijanie tekstur, gdy ich współrzędne (s, t) przekraczają przedział [0, 1]. W tym przypadku tekstura będzie powielana. Inne dopuszczalne wartości GL TEXTURE WRAP S oraz GL TEXTURE WRAP T: GL CLAMP obcinanie do przedziału [0, 1], ParamName symboliczna nazwa parametru. Dopuszczalne wartości: GL TEXTURE MIN FILTER, GL TEXTURE MIN FILTER, GL TEXTURE WRAP S, GL TEXTURE WRAP T. ParamVal specyfikuje wartość parametru identyfikowanego przez symbol przekazany przez ParamName.
Pomniejszanie i powiększanie Gdy tekstura jest mniejsza lub większa niż powierzchnia, na którą jest nakładana, konieczne jest jej odpowiednia transformacja. Możliwe są dwa sposoby identyfikowane przez parametry: GL NEAREST o kolorze piksela decyduje najbliższy piksel tekstury, GL LINEAR o kolor piksela ustalany jest na podstawie liniowej interpolacji kolorów sąsiednich pikseli tekstury. Wskazanie przypadku, w którym dana transformacja ma być zastosowana, odbywa się poprzez wybranie filtru identyfikowanego poprzez jedną z wartości: GL TEXTURE MIN FILTER filtr stosowany w przypadku pomniejszania tekstury, GL TEXTURE MAG FILTER filtr stosowany w przypadku powiększania tekstury, Przykład kodu ustalenia parametrów filtracji dla bieżącej tekstury gltexparameteri (GL TEXTURE 2D, GL TEXTURE MAG FILTER, GL LINEAR ) ; gltexparameteri (GL TEXTURE 2D, GL TEXTURE MIN FILTER, GL NEAREST ) ;
Przykład efektów filtrowania GL TEXTURE MIN FILTER, GL NEAREST GL TEXTURE MAG FILTER, GL NEAREST GL TEXTURE MIN FILTER, GL LINEAR GL TEXTURE MAG FILTER, GL LINEAR
Koniec prezentacji Dziękuję za uwagę