Computergrafik

Texturen Definieren

2D Texturdaten | | 2D Texturdaten Besonderheiten

Zum Definieren einer Textur braucht man einen Namen (bzw. Id), vergleichbar mit dem Namen eines VBOs. Namen bzw. entsprechende Ids erzeugt man mit OpenGL:

GLuint tex_id;
glGenTextures (1, &tex_id); // number of texture ids, pointer to var/array

Will man eine bestimmte Texture definieren, so bindet man zuerst die entsprechende Id mittels:

glBindTexture (GL_TEXTURE_2D, tex_id);

Man lädt dann die Textur-Daten aus dem Hauptspeicher auf die Graphikkarte und setzt noch die Texture-Parameter (Minimum: Texturfilter):

glTexImage2D    (GL_TEXTURE_2D, 0, GL_RGB, width, height, 0,
                 GL_LUMINANCE, GL_UNSIGNED_BYTE, image);
glTexParameteri (GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
glTexParameteri (GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);

Abgeschlossen wird dies durch die Deaktivierung der gebunden Texture, indem die 0-Textur gebunden wird:

glBindTexture (GL_TEXTURE_2D, 0);

Mit LGL geschieht dies wie folgt:

int texid = lglCreateTexmap2D(width, height, LGL_RGB, data);

Um die erzeugte Textur nun für ein bestimmtes Objekt zu benutzen, wird die entsprechende Textur vor dem Zeichnen des Objekts gebunden und die Texturierung aktiviert:

glBindTexture (GL_TEXTURE_2D, tex_id);
glEnable(GL_TEXTURE_2D);
glDrawArrays (...);

Mit LGL geschieht dies wie folgt:

lglTexture2D (tex_id);
lglRender (...);


2D Texturdaten | | 2D Texturdaten Besonderheiten

Options: