2010-05-17 87 views
0

我覆盖了一个OpenGL应用程序(C++),这个openGL应用程序使用SetDeviceGammaRamp来设置桌面的亮度非常高(不知道为什么)。此应用程序是全屏,看起来不错,但我的覆盖非常明亮。由于高灰度系数,我没有使用正常亮度的橙色,而是变黄。GetDeviceGammaRamp调整颜色

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

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

因此,如果桌面的亮度非常高,则r g和b的值将会变得更低(更暗),并且看起来应该是这样。

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

感谢

回答

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); 
}