C++Builder 2010, проблема с текстурой, неверные цвета BITMAP.Обучаюсь работе с OpenGL по урокам NeHe. Использую C++Builder 2010.
По ходу обучения возникли несостыковки. Функция от библиотеки glaux.h не захотела работать.
Вот тут загружаются текстуры:
Код:
// Загрузка картинки и конвертирование в текстуру (используется AUXlib)
GLvoid LoadGLTextures() {
// загрузка картинки
Graphics::TBitmap *texture1 = new Graphics::TBitmap;
texture1->LoadFromResourceName( (int)appInstance, "TX5" );
//texture1->PixelFormat = pf32bit;
// создание текстуры
glGenTextures( 1, &texture[0] );
glBindTexture( GL_TEXTURE_2D, texture[0] );
glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR );
glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR );
glTexImage2D( GL_TEXTURE_2D, 0, 3, texture1->Width, texture1->Height, 0, GL_RGBA, GL_UNSIGNED_BYTE, texture1->ScanLine[ texture1->Width-1 ] );
}
Загружаю я, как видно, через библиотеку Graphics, иным способом, нежели в статье обучения, вместо GL_RGB использую GL_RGBA, иначе не понятно что вообще с текстурой творится. В оригинале (статье) эта функция описана так:
Код:
GLvoid LoadGLTextures()
{
// Загрузка картинки
AUX_RGBImageRec *texture1;
texture1 = auxDIBImageLoad("Data/NeHe.bmp");
// Создание текстуры
glGenTextures(1, &texture[0]);
glBindTexture(GL_TEXTURE_2D, texture[0]);
glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_LINEAR);
glTexImage2D(GL_TEXTURE_2D, 0, 3, texture1->sizeX, texture1->sizeY, 0,
GL_RGB, GL_UNSIGNED_BYTE, texture1->data);
}
Функция auxDIBImageLoad() вызывает ошибку, в общем-то не факт, что в ней одной дело. Своим методом я выдёгиваю тот же BITMAP из ресурсов. Картинка загружается, всё хорошо, да вот беда! С цветами что-то не так, как будто один из каналов пропадает или местами меняются, даже не знаю. В общем любая картинка становится синеватого оттенка. Сколько ни бился, чего не перепробовал, а получилось только так. Кто-нибудь может подсказать в чём проблема с этими цветами? И как заставить GL отображать текстуру с правильными цветами, истинными?