GetDeviceGammaRamp для настройки цветов - PullRequest
0 голосов
/ 18 мая 2010

Я перекрываю приложение OpenGL (c ++), это приложение openGL использует SetDeviceGammaRamp, чтобы установить яркость рабочего стола на очень высокую (не знаю почему). Это приложение полноэкранное и выглядит хорошо, но мой оверлей очень яркий. Вместо оранжевого цвета с нормальной яркостью я получаю желтый из-за высокой гаммы.

Что я хочу сделать: получить гамму, которая установлена ​​в данный момент (используя GetDeviceGammaRamp), а затем использовать ее для настройки цветов, которые я установил.

Как; glColor4f (r, g, b, a) становится glColor4f (r / гамма, г / гамма, b / гамма, а);

Таким образом, если яркость рабочего стола очень высока, значения r g и b будут ниже (темнее) и будут выглядеть так, как они должны.

Как мне это сделать? GetDeviceGammaRamp заполняет таблицу, как я могу использовать ее для изменения моих цветов?

Спасибо

1 Ответ

0 голосов
/ 16 марта 2011

Возможно, вам лучше использовать расширение ARB_framebuffer_sRGB, если вы можете:

#define GL_FRAMEBUFFER_SRGB 0x8DB9 //might already be defined

bool supportSRGB = (0 != strstr((char*)glGetString(GL_EXTENSIONS), "GL_ARB_texture_non_power_of_two"));
if(supportsSRGB)
{
    glEnable(GL_FRAMEBUFFER_SRGB);
}
...