Загрузить BMP 8bit в OpenGL

Здравствуйте.
Есть два BMP-файла


и код для загрузки их в качестве текстуры OpenGL:

GLuint LoadTextureBitmap(char* fileName)
{
    FILE* file = fopen(fileName, "rb");
    if (!file)
    {
        return 0;
    }
    BITMAPFILEHEADER bfh;
    fread(&bfh, sizeof(BITMAPFILEHEADER), 1, file);
    BITMAPINFOHEADER bih;
    fread(&bih, sizeof(BITMAPINFOHEADER), 1, file);
    int componentsCount = 3;
    int imgLen = bih.biWidth * bih.biHeight * componentsCount;
    unsigned char* data = new unsigned char[imgLen];
    fseek(file, bfh.bfOffBits, SEEK_SET);
    fread(data, 1, imgLen, file);
    fclose(file);

    unsigned char tmp;
    for (int i = 0; i < imgLen; i += componentsCount)
    {
        tmp = data[i];
        data[i] = data[i + 2];
        data[i + 2] = tmp;
    }

    GLuint hTexture = 0;
    glGenTextures(1, &hTexture);
    if (hTexture)
    {
        glBindTexture(GL_TEXTURE_2D, hTexture);
        glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
        glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
        //glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT);
        //glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT);
        gluBuild2DMipmaps(GL_TEXTURE_2D, componentsCount, bih.biWidth, bih.biHeight,
                            GL_RGB, GL_UNSIGNED_BYTE, data);
        glBindTexture(GL_TEXTURE_2D, 0);
    }

    delete data;

    return hTexture;
}

Исходная 8-битная картинка (кстати, сегодня ей исполнился 21 год) выглядит так:


но если преобразовать ее в 24 бита, то она выглядит нормально:

Я знаю, что для загрузки картинок лучше использовать библиотеки типа STB или SOIL. В других проектах я именно так и делаю. Сейчас просто хочу понять, почему она напрямую не грузится.
Что надо изменить в коде, чтобы она правильно загрузилась?

Гугл говорит, что не поддерживается

Тема правда аж 2003 года, но не думаю, что за это время появился смысл добавлять эту фичу снова :slight_smile:

То есть, библиотеки автоматически конвертят картинку в 24 бита?

Да.