Из того, что я прочитал в документации OpenGL, OpenGL предпочитает формат BGR, а не RGB. Однако, при установке внутреннего формата текстуры как BGR, при рендеринге текстура становится белой. Когда внутренний формат установлен на RGB или RGBA, он отображается правильно. Исходный формат для начала BGR (загружается непосредственно из DIB).
glBindTexture(GL_TEXTURE_2D, id);
glPixelStorei(GL_UNPACK_ALIGNMENT, 4);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, nClamp);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, nClamp);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, nMagFilter);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, nMinFilter);
glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE);
Следующая строка - это проблема ... установка внутреннего формата в GL_BGR делает все белым: изменение в GL_RGB делает его корректным
glTexImage2D(GL_TEXTURE_2D, 0, GL_BGR, pTex->nWidth, pTex->nHeight, 0, GL_BGR, GL_UNSIGNED_BYTE, pTex->pBuffer);