Окрашивание очень темных текстур в OpenGl - PullRequest
1 голос
/ 28 января 2011

Я считаю, что когда вы применяете цвет к текстурированному объекту в OpenGL, он умножает цвет glColor и цвет данных текстуры, чтобы определить, какой цвет на самом деле рисовать. Это все хорошо и хорошо для светлых текстур, но это представляет проблему для попытки раскрасить более темные текстуры, потому что если у вас есть черноватая текстура и вы пытаетесь раскрасить ее в красный, она все равно получается того же оттенка черноватого. Кто-нибудь знает какие-нибудь хаки или методы, позволяющие значительно осветлить цвет темной текстуры при настройке glColor?

Ответы [ 3 ]

1 голос
/ 28 января 2011

Компорт, который вы описываете, является базовым поведением GL_MODULATE, то есть простым простым умножением.

В зависимости от того, какую платформу или версию GL вы имеете в наличии, вы можете рассмотреть:

  • используйте шейдеры, которые позволят вам выполнять практически любые операции с изображениями текстур

  • использовать другие, более полные режимы TexEnv для замены GL_MODULATE; Я не знаю наверняка, что подойдет вам, но с достаточным творческим потенциалом, возможно, один из тех может подойти вам Думаю, я помню, что вокруг TexEnv было множество расширений, которые тоже могут быть полезны.

0 голосов
/ 22 февраля 2011

Гамма-коррекция может сыграть здесь свою роль.Освещение черным с красным по-прежнему остается черным, как и предполагалось.Однако, если «темные» (не черные) объекты по-прежнему выглядят «в основном черными», это говорит о том, что что-то идет не так.в любом случае, и поэтому это выглядит лучше для большинства людей, когда отображается на экране.К сожалению, это больше не так, если вы выполняете математические операции со значениями!

Если поддерживается EXT_texture_sRGB (ядро в версии 2.1), вы должны попытаться использовать соответствующую константу «S» при загрузке текстуры.В противном случае вы также можете выполнять математику вручную в шейдере.

=====> полезная гамма литература

0 голосов
/ 28 января 2011

Сначала осветлите текстуру, затем раскрасьте как обычно.

Чтобы украсить текстуру, используются два основных метода:

  • Аддитивное осветление: добавьте постоянное значение к каждому текселю.
  • Мультипликативное осветление: умножьте каждый тексель на значение больше 1. Например. умножьте все на 1,1 для + 10% яркости.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...