2010-05-17 123 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); 
}