質問

OpenGL で次の効果​​を実現する方法を知っている人はいますか?

  • レンダリングされたシーンの明るさを変更する
  • または OpenGL でガンマ設定を実装する

ライトのアンビエントパラメータとライトの種類(指向性と全指向性)を変更して試してみましたが、結果は均一ではありませんでした。ティア。

ご協力ありがとうございます。追加情報:※ Windows 固有の API は使用できません。* ビューごとに異なるガンマを設定する必要があるため、ガンマ設定はウィンドウ全体に影響を与えるべきではありません。

役に立ちましたか?

解決

win32 では、SetDeviceGammaRamp を使用して全体の明るさ/ガンマを調整できます。ただし、これはディスプレイ全体に影響するため、アプリが全画面表示でない限りお勧めできません。

移植可能な代替方法は、シーン全体を明るくまたは暗く描画するか (これは面倒です)、フルスクリーンのアルファ ブレンドされたクワッドをシーン全体に叩きつけて、必要に応じて明るくしたり暗くしたりすることです。これらのアプローチはどちらもガンマ カーブには影響せず、全体の明るさにのみ影響します。ガンマを調整するには、シーン全体をテクスチャに取り込み、ガンマ関数を通じて各テクセルを実行するピクセル シェーダを介してそれを画面にレンダリングし直す必要があります。

OK、更新された質問を読んだので、必要なのは、その下のすべてを暗くしたり明るくしたりするようにブレンディング設定されたクワッドです。例えば。

if( brightness > 1 )
{
    glBlendFunc( GL_DEST_COLOR, GL_ONE );
    glColor3f( brightness-1, brightness-1, brightness-1 );
}
else
{
    glBlendFunc( GL_ZERO, GL_SRC_COLOR );
    glColor3f( brightness, brightness, brightness );
}
glEnable( GL_BLEND );

draw_quad();

他のヒント

http://www.gamedev.net/community/forums/topic.asp?topic_id=435400 それがあなたの質問に対する答えになるかもしれません。そうでない場合は、おそらくピクセルシェーダーとしてガンマ補正を実装できるでしょう

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top