OpenGL тускнеет освещение при наложении текстуры.

компьютеры программирование C++ графика OpenGL

имеется bmp файл 512х256; Делаю так:

Глобально:
LPCTSTR fileName="c:\\my logo.bmp";
BITMAP BM;
GLUquadricObj* cylinder= gluNewQuadric();

В Майн :
HBITMAP hBmp = (HBITMAP) ::LoadImage (NULL,
fileName, IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE |
LR_CREATEDIBSECTION);
::GetObject (hBmp, sizeof (BM), &BM);
glPixelStorei(GL_UNPACK_ALIGNMENT, 4);
gluBuild2DMipmaps( GL_TEXTURE_2D, 3, BM.bmWidth, BM.bmHeight,
GL_BGR_EXT, GL_UNSIGNED_BYTE,
BM.bmBits );
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);

В рендеринге:
glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, DiffuseColorCilynder);
gluQuadricTexture(cylinder, GL_TRUE);
gluQuadricDrawStyle(cylinder, GLU_FILL);
gluCylinder(cylinder, 15, 15, 200, 40, 40);

Освещение тускнеет, хотя работает правильно. Текстура накладывается.
Если закомментить функцию gluBuild2DMipmaps освещение становиться нормальным, текстуры естесс-но нет.
Где проблема ?

Примечание:
Была ошибка: glEnable(GL_TEXTURE_2D); было задано глобально.
Вопрос закрыт.
Ответы:
лучше б я сюда не заглядывал(
Могу предположить (просто предположить, ибо нет ни малейшего желания по твоему куску исходника восстанавливать работоспособную программу, чтобы посмотреть, как оно выглядит), что имеет место следующая причина. OpenGL отрисовывает текстуру после прорисовки отражающей составляющей источника света. Надо сначала нарисовать поверхность с текстурой без отражающей составляющей; затем включить смешение (glEnable(GL_BLEND); glBlendFunc(......)) и отрисовать поверхность просто с белым матовым материалом и только отражающей составляющей источника света.
может саму у самой DMP белый выкрутить.


15 лет назад

RPI.su - самая большая русскоязычная база вопросов и ответов. Наш проект был реализован как продолжение популярного сервиса otvety.google.ru, который был закрыт и удален 30 апреля 2015 года. Мы решили воскресить полезный сервис Ответы Гугл, чтобы любой человек смог публично узнать ответ на свой вопрос у интернет сообщества.

Все вопросы, добавленные на сайт ответов Google, мы скопировали и сохранили здесь. Имена старых пользователей также отображены в том виде, в котором они существовали ранее. Только нужно заново пройти регистрацию, чтобы иметь возможность задавать вопросы, или отвечать другим.

Чтобы связаться с нами по любому вопросу О САЙТЕ (реклама, сотрудничество, отзыв о сервисе), пишите на почту [email protected]. Только все общие вопросы размещайте на сайте, на них ответ по почте не предоставляется.