Grafika 3D Flashcards
Co robi funkcja glActiveTexture?
określa który z obiektów tekstury jest związany z
konkretną jednostką teksturującą podczas wywoływania funkcji glBindTexture
glTexImage
- ladowanie tekstur
target-
level:poziom mipmapy, bez mipmap -0
Parametr internalformat
- jak chcemy zapisac nasza teksture
rgb, alpha, luminance itd
przyklad:
glTexImage2D(GL_TEXTURE_2D, 0, 4, infoheader.biWidth, infoheader.biHeight, 0, GL_RGBA,
GL_UNSIGNED_BYTE, l_texture);
kordynaty tekstury
dla kazdego wierzcholka -> wspolrzedne tekstury
jak fragmentshader naklada teksture?
pobiera kolor z podanej wspolrzednej - sampling
glTextParametr
parametry tekstur
(GLenum target, GLenum pname, GLfloat* params)
target - rodzaj tekstury
pname - nazwa wlasnosci
params - parametry
filtrowanie tekstur
wyliczanie kolorow fragmentow przy scisnieciu, rozciagnieciu obrazu
gl_nearest gl_linear
ustawiane za pomoca gltexparametri
zawijanie tekstur
gl_texture_wrap_“wspolrzedna”
jesli nasza tekstura jest mniejsza niz obiekt
gl_repeat
clamp
mirrored_repeat
mipmapy
tekstury o mniejszych rozmiarach, uzywane do tekssturowania obrazow o mniejszej rozdzielczosci
wyzszy poziom - mniejsza tekstura - mniejsza dokladnosc
poziomy: 0 - 1000
filtrowanie mipmap
gl_nearest linear nearest_mipmap_nearest -||- linear linear_mipmap_nearest...
elementy bufora ramki
sklada sie z buforow: koloru glebokosci szablonowy akumulacyjny
wybor trybu:
glutInitDisplay
bufor glebokosci
przechowywanie wartosci wspolrzednej z dla kazdego pixela obrazu
przy rysowaniu kolejnych obiektow oblicza sie wartosc z i porownuje z buforem
GLUT_DEPTH
glEnable(GL_DEPTH_TEST)
efekt przezroczystosci
_
glBindTexture
wybor tekstury
glBindTexture(GLenum cel, GLint identyfikator);
gdzie cel to GL_TEXTURE_2D, GL_TEXTURE_1D, GL_TEXTURE_3D ,
GL_TEXTURE_CUBE_MAP
wykorzystanie wektora kolorow
glCopyTextImage
Parametry x i y określają współrzędne punktu w buforze kolorów, od
którego maja być pobierane dane do tekstury. Współrzędne te
odpowiadają lewemu dolnemu końcowi danych tekstury
podmiana tekstur
glTexSubImage
glCopyTexSubImage
gluScaleImage
funkcja do ciaglego zmniejszania tekstur, w celu zrobienia mipmapy, rzadziej stosowane
gluBuildMipmaps
czesciej stosowane, tworzy wszystkie poziomy tekstur
Trzecia metoda tworzenia mipmap
glTexParameteri(GL_TEXTURE_2D, GL_GENERATE_MIPMAP, GL_TRUE);
sposob przekazania tekstury do shadera
sampler - zmienna typu uniform
// Pobieramy lokalizacj ę samplera z shadera sampler_id = glGetUniformLocation(programID, "myTextureSampler"); // ustawiamy wartość na wybran ą AKTYWN Ą TEKSTUR Ę glUniform1i(sampler_id , 0); // main i rysuj
bufor kordynatow tekstur
tworzymy normalny bufor float
glVertexAttribPointer(1, 2, GL_FLOAT, GL_FALSE, 0, 0);
tekstura w shaderze
uniform sampler2D myTextureSampler; - tekstura
in vec2 UV; - wspolrzedne z vertexshadera
color = texture( myTextureSampler, UV );
mix tekstur w shaderze
funkcja mix:
FragColor = mix(texture(texture1, TexCoord), texture(texture2, TexCoord), 0.2);
blending
mieszanie kolorow, np z tlem -> efekty szkla, rozmycia
glEnable(GL_blend)
wlaczenie przezroczystosci
glDepthMask
zawieszenie rejestrowania obiektow w buforze glebokosci - konieczne do blendowania
glBlendFunct
funkcja definiujaca parametry blendowania