2010-05-17 7 views
0

Je superpose une application OpenGL (C++), cette application openGL utilise SetDeviceGammaRamp pour régler la luminosité du bureau à très haut (ne sais pas pourquoi). Cette application est en plein écran et a l'air bien, mais ma superposition est très lumineuse. Au lieu de la couleur orange avec une luminosité normale, je deviens jaune à cause du gamma élevé. Ce que je veux faire: Obtenez le gamma qui est actuellement défini (en utilisant GetDeviceGammaRamp), puis utilisez-le pour ajuster les couleurs que j'ai définies.GetDeviceGammaRamp pour ajuster les couleurs

Comme; glColor4f (r, g, b, a) devient glColor4f (r/gamma, g/gamma, b/gamma, a); Par conséquent, si la luminosité du bureau est très élevée, les valeurs r g et b seront plus faibles (plus sombres) et sembleront devoir être affichées.

Comment puis-je accomplir ceci? GetDeviceGammaRamp remplit une table, comment puis-je l'utiliser pour modifier mes couleurs?

Merci

Répondre

0

Vous pouvez être mieux juste en utilisant l'extension ARB_framebuffer_sRGB si vous le pouvez:

#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); 
} 
Questions connexes