Computergrafik
Texturdaten
← 2D Texturkoordinaten | ● | 2D Texturen Definieren →
Ein Bild ist aus OpenGL Sicht ein linearer Datenblock aus 8-Bit Werten im Speicher, z.B. im RGB-Format. Der erste RGB Wert ist die linke obere Ecke. Danach folgen alle Spaltenwerte der obersten Zeile und dann alle Zeilen hintereinander.
Der Datenblock einer RGB-Textur mit der Breite width und der Höhe height wird geladen wie folgt:
glTexImage2D(GL_TEXTURE_2D, // 2D texture
0, // level 0 (for mipmapping)
GL_RGB, // pixel format of texture
width,height, // texture size
0, // border size 0
GL_RGB, // pixel format of data supplied
GL_UNSIGNED_BYTE, // pixel storage type of data supplied
image); // pointer to data chunk
0, // level 0 (for mipmapping)
GL_RGB, // pixel format of texture
width,height, // texture size
0, // border size 0
GL_RGB, // pixel format of data supplied
GL_UNSIGNED_BYTE, // pixel storage type of data supplied
image); // pointer to data chunk
pixel format | components |
---|---|
GL_RED | 1 |
GL_RG | 2 |
GL_RGB | 3 |
GL_RGBA | 4 |
GL_LUMINANCE | 1 (Legacy, nicht als internes Format!) |
Texturdaten am Beispiel eines Schachbrettmusters (Grauwert, d.h. Luminanz):
GLubyte checkerboard[8*8] =
{255,0,255,0,255,0,255,0,
0,255,0,255,0,255,0,255,
255,0,255,0,255,0,255,0,
0,255,0,255,0,255,0,255,
255,0,255,0,255,0,255,0,
0,255,0,255,0,255,0,255,
255,0,255,0,255,0,255,0,
0,255,0,255,0,255,0,255};
{255,0,255,0,255,0,255,0,
0,255,0,255,0,255,0,255,
255,0,255,0,255,0,255,0,
0,255,0,255,0,255,0,255,
255,0,255,0,255,0,255,0,
0,255,0,255,0,255,0,255,
255,0,255,0,255,0,255,0,
0,255,0,255,0,255,0,255};
Achtung: Die linke obere Ecke eines geladenen Bildes bzw. der erste Datenwert entspricht der Texturkoordinate (0,0) nicht (0,1)!