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

可能であれば、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);
}
于 2011-03-15T22:48:25.687 に答える