0

我覆盖了一个 OpenGL 应用程序(c++),这个 openGL 应用程序使用 SetDeviceGammaRamp 将桌面的亮度设置为非常高(不知道为什么)。这个应用程序是全屏的,看起来不错,但我的叠加层非常亮。由于高伽马,我得到黄色而不是具有正常亮度的橙色。

我想要做什么:获取当前设置的伽玛(使用GetDeviceGammaRamp),然后使用它来调整我设置的颜色。

喜欢; glColor4f(r, g, b, a) 变为 glColor4f(r / gamma, g / gamma, b / gamma, a);

因此,如果桌面的亮度非常高,则 rg 和 b 值会更低(更暗)并且看起来应该如此。

我怎样才能做到这一点?GetDeviceGammaRamp 填充表格,如何使用它来修改我的颜色?

谢谢

4

1 回答 1

0

You may be better off just using the ARB_framebuffer_sRGB extension if you can:

#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);
}
于 2011-03-15T22:48:25.687 回答