Войти
ПрограммированиеФорумГрафика

Проблема с отображением текстуры с использованием OpenGL (Урок от NeHe №6)

#0
23:16, 27 мар 2010

Добрый вечер.
Начал изучать 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);

#1
3:38, 28 мар 2010

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
  }
}
#2
11:19, 28 мар 2010

gexman
а освещение включенно? если нужно чтоб куб был лишь цвета текстуры, то добавь такую строчку:

glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE);

#3
10:08, 29 мар 2010

у NeHe текстуры RGB

ПрограммированиеФорумГрафика

Тема в архиве.