Comment puis-je charger des textures OpenGL à l'aide de FreeImage bibliothèque?

Je suis en train d'apprendre OpenGL en C++ à l'aide de NeHe tutoriels, mais je vais essayer de le faire avec FreeImage de la bibliothèque, au lieu de Glaux ou le SOL. Le point positif que je vois dans l'aide de FreeImage est thar c'est la dernière mise à jour a eu lieu en octobre de l'année dernière, tandis que le SOL n'a pas été mis à jour à 5 ans. Le problème que j'ai c'est que je ne suis pas en mesure de charger les textures correctement.

Voici mon 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);
}

L'aide de ce code, la texture que je reçois est mauvais: il est noir, avec des points de couleur et des bandes, et la modification de l'image donne le même résultat, donc je suppose que je ne suis pas le chargement de la texture correctement.

J'ai essayé d'intervertir les rouge et bleu bits (lire que FreeImage charges BGR) avec pas de meilleur résultat. Enfin, si je change l' *FreeImage_ConvertTo32Bits(bitmap)* par *FreeImage_GetBits(bitmap)* j'obtiens une erreur de segmentation.

Ce que je fais mal?

OriginalL'auteur Razican | 2013-06-15