Добрый вечер.
Начал изучать OpenGL на примерах от NeHe.
Сделал Урок №6 "Наложение текстуры на куб" все работает но есть маленькое НО.
Текстура отображается оранжевым цветом вместо голубого как в уроке.
Урок взят с источника Уроки NeHe на русском
Также нашел другие примеры наложения текстуры на куб , наложил текстуру только на одну сторону текстура отображается темно зеленой а цвета других сторон затемнены.
Пробывал переустанавливать дрова на видеокарту , версия OpenGl поменялась но все та же проблема.
Использую связку Code::Blocks + MinGW
Библиотеки и хидеры брал как с MinGW так и просто сторонние скачивал с инета.
....
Изменил код загрузчика текстуры , чтоб не использовать библиотеку Glaux.
Код из урока
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);
изменен на:
HBITMAP hBMP; // Handle Of The Bitmap
BITMAP BMP;
glGenTextures(1, &texture[0]);
hBMP=(HBITMAP)LoadImage(GetModuleHandle(NULL),"Data/NeHe.bmp", IMAGE_BITMAP, 0, 0, LR_CREATEDIBSECTION | LR_LOADFROMFILE );
GetObject(hBMP, sizeof(BMP), &BMP);
glPixelStorei(GL_UNPACK_ALIGNMENT, 4);
glBindTexture(GL_TEXTURE_2D, texture[0]);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT);
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,BMP.bmWidth, BMP.bmHeight, 0,GL_RGB, GL_UNSIGNED_BYTE, BMP.bmBits);
DeleteObject(hBMP);
gexman
>Текстура отображается оранжевым цветом вместо голубого как в уроке.
C OpenGL работал мало но тут сразу напрашивается поменять местами BGR -> RGB не забывай про структуру BMP.
void FlipBGRtoRGB(void *pData, int nSize) { _asm { mov ecx,nSize mov ebx,pData label: mov al,[ebx+0] mov ah,[ebx+2] mov [ebx+2],al mov [ebx+0],ah add ebx,3 dec ecx jnz label } }
gexman
а освещение включенно? если нужно чтоб куб был лишь цвета текстуры, то добавь такую строчку:
glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE);
у NeHe текстуры RGB
Тема в архиве.