Проблема цвета текстуры OpenGL - PullRequest
0 голосов
/ 05 сентября 2011

Я загружаю необработанную текстуру (с альфа-каналом) и отображаю ее в openGL, все в порядке, и текстура отображается, но цвет немного темнее, чем в оригинале.Я уже пытался включить освещение, смешивание и размывание, но это не помогает.

Я использую Mac OSX.

Образец изображения

Sample image http://postimage.org/image/2wi1x5jic/

Вот исходный код загрузки текстуры openGL:

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, GL_RGBA , width, height, 0, GL_RGBA, GL_UNSIGNED_BYTE, &bytes[0]);

РЕДАКТИРОВАТЬ:

Это очень странно, я использовал пример из http://forums.tigsource.com/index.php?topic=9560.0 и получил тот же сбой... Так что проблема не в моем коде, может быть, параметры драйвера?Хм ...

РЕШЕНИЕ:

Спасибо @datenwolf, изображения были сохранены с цветным профилем sRrgb.Проблема решена, как только я удалил ее и преобразовал в RGB.

1 Ответ

2 голосов
/ 05 сентября 2011

Возможно, вы установили GL_MODULATE в качестве среды текстурирования, а цвета вершин не белые. Попробуйте установить текстуру среды в GL_REPLACE.

glBindTexture(GL_TEXTURE_2D, your_texture);
glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE);

EDIT

Еще одной проблемой может быть цветовой профиль, встроенный в изображение. Средство просмотра изображений может использовать этот цветовой профиль для реализации управления цветом, регулируя цвета для цветового профиля вашего монитора. OpenGL «как есть» не занимается управлением цветом; есть расширение, в котором кадровые буферы и текстуры являются sRGB, это своего рода наименьший общий знаменатель управления цветом. Но тогда вам все равно придется перенести входные изображения в цветовое пространство sRGB.

Я готовлю длинную статью, в которой подробно объясняется, как управлять цветом с помощью OpenGL. Но это далеко не завершено.

...