In diesem Abschnitt werden wir Texturen in den Speicher laden damit wir sie anschließend beim Rendern unserer Modell verwenden können.

Image Loader

Das Laden von Bilddateien erfordert individuelle Implementierungen je nach verwendetem Bildformat. Der Einfachheit halber verwenden wir den weit verbreiteten Image Loader von Sean Barrett.

Wenn Sie nicht lange suchen wollen, können Sie die Datei stb_image.h auch direkt von meinem Server herunterladen. Speichern Sie die Datei in Ihren Projektordner (Computergrafik/cgb_07/stb_image.h)

Texture Einheit

Erstellen Sie eine neue Translation Unit texture.o

Beginnen wir mit einem Blick in die Header Datei.

unsigned int loadTexture(const char *filename);

Hier nun die Implementierung der texture.c

#define STB_IMAGE_IMPLEMENTATION
#define GLFW_INCLUDE_GLEXT
#include <GLFW/glfw3.h>
#include "stb_image.h"

unsigned int loadTexture(const char *filename)
{
    unsigned int texture;
    glGenTextures(1, &texture);
    glBindTexture(GL_TEXTURE_2D, texture);

    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_MIN_FILTER, GL_LINEAR_MIPMAP_LINEAR);
    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR_MIPMAP_LINEAR);
    glTexParameteri(GL_TEXTURE_2D, GL_GENERATE_MIPMAP, GL_TRUE);

    int ww, hh, nrChannels;
    unsigned char *data = stbi_load(filename, &ww, &hh, &nrChannels, 0);
    if (data)
    {
        glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, ww, hh, 0, GL_RGB, GL_UNSIGNED_BYTE, data);
    }
    stbi_image_free(data);
    return texture;
}

Texturen

Erstellen Sie einen neuen Ordner “res” in ihrem Projektordner. Hier speichern wir zukünftig Bilder und ähnliche Ressourcen ab.

Wir benötigen 2 Texturen für diese Übung. Laden Sie beide Dateien herunter und platzieren Sie sie in den neu erstellen res Ordner.

Textur der Erde

Als Textur für die Kugel nutzen wir diese Erdtextur von der NASA. Speichern Sie die Datei als earth8k.jpg in Ihren res Ordner.

Textur für einen THM Würfel

Für die beiden Würfel nutzen wir eine THM Textur. Speichern Sie die Datei als thm2k.png in Ihren res Ordner.