Wie lade ich die Texturen OpenGL mit FreeImage-Bibliothek?

Lerne ich OpenGL in C++ unter Verwendung von NeHe-tutorials, aber ich versuche, Sie zu tun, mit der FreeImage-Bibliothek, statt Glaux oder BODEN. Die guten Punkt sehe ich in der Verwendung FreeImage ist thar es Letzte update war im Oktober letzten Jahres, während der BODEN wurde nicht aktualisiert, in 5 Jahren. Das problem was ich habe ist, dass ich nicht in der Lage, laden von Texturen korrekt.

Hier ist mein code:

static GLuint texture = 0;
if (texture == 0)
{
    FIBITMAP* bitmap = FreeImage_Load(
        FreeImage_GetFileType("textures/test/nehe_06.png", 0),
        "textures/test/nehe_06.png");

    glGenTextures(1, &texture);

    glBindTexture(GL_TEXTURE_2D, texture);
    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);

    glTexImage2D(GL_TEXTURE_2D, 0, 3, FreeImage_GetWidth(bitmap), FreeImage_GetHeight(bitmap),
        0, GL_RGB, GL_UNSIGNED_BYTE, FreeImage_ConvertTo32Bits(bitmap));

    FreeImage_Unload(bitmap);
}

Diesen code verwenden, wird die textur die ich bekomme, ist falsch: es ist schwarz, mit farbigen Punkten und Streifen, und ändern das Bild gibt das gleiche Ergebnis, ich vermute, ich bin nicht das laden der textur korrekt.

Ich habe versucht zu tauschen der roten und blauen bits (read, die FreeImage-Lasten BGR) mit keinem besseren Ergebnis. Schließlich, wenn ich die *FreeImage_ConvertTo32Bits(bitmap)* von *FreeImage_GetBits(bitmap)* bekomme ich einen segfault.

Was ich falsch mache?

InformationsquelleAutor Razican | 2013-06-15
Schreibe einen Kommentar