我覆盖了一个OpenGL应用程序(c ++),这个openGL应用程序使用SetDeviceGammaRamp将桌面的亮度设置得非常高(不知道为什么)。这个应用程序是全屏的,看起来不错,但我的叠加层非常明亮。而不是具有正常亮度的橙色,由于高伽玛,我变黄了。
我想做什么:获取当前设置的gamma(使用GetDeviceGammaRamp),然后使用它来调整我设置的颜色。
像; glColor4f(r,g,b,a)变为glColor4f(r / gamma,g / gamma,b / gamma,a);
因此,如果桌面的亮度非常高,则r g和b值会更低(更暗)并且看起来应该是这样。
我怎样才能做到这一点? GetDeviceGammaRamp填充表格,如何使用它来修改我的颜色?
由于
答案 0 :(得分:0)
如果可以,您可能最好只使用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);
}