Загрузка BMP в OpenGL текстуры переключает красный и синий цвета. (C++/Windows)

Я пытаюсь загрузить растровую карту в текстуру OpenGL и отобразить ее на экране, но когда я это делаю, значения красного и синего цветов как бы переключаются (например: синее изображение становится оранжевым, зеленое остается неизменным и т.д.). Эта проблема возникает только при загрузке растровых изображений, я могу загружать .png относительно без ошибок.

Вот код, который я использую для загрузки растровых изображений и установки текстур. Я использую DevIl, но я не уверен, насколько это актуально, поскольку проблема существовала, когда я использовал другую систему (я не совсем помню какую, это была функция в window.h, я полагаю):

ilOriginFunc(IL_ORIGIN_LOWER_LEFT);
ilEnable(IL_ORIGIN_SET);
ILuint image;
ilGenImages(1, &image);
ilBindImage(image);
ilLoad(IL_BMP, "Data/NeHe.bmp"); // Incidentally, loading a png, although it fixes the problem,
                                 // rotates the image 180 degrees.  Not sure if that's important or not,
                                 // But it's why I added the first line of code

glGenTextures(3, &_texture[0]);
glBindTexture(GL_TEXTURE_2D, _texture[0]);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
glTexImage2D(GL_TEXTURE_2D, 0, 3, ilGetInteger(IL_IMAGE_WIDTH), ilGetInteger(IL_IMAGE_HEIGHT), \
    0, GL_RGB, GL_UNSIGNED_BYTE, ilGetData());

ilInit() и glEnable(GL_TEXTURE_2D) вызываются раньше в программе, среди других менее значимых функций. Любая помощь в поиске причины (и, надеюсь, устранении) проблемы будет очень признательна.

7
задан 25 February 2011 в 22:26
поделиться