4

Java を使用して OpenGL ES 3.0 Android プロジェクトに取り組んでいます。ガンマ補正を実装する必要があり、sRGB テクスチャが OpenGL ES 3.0 でサポートされることを読んだことがあります。したがって、私の意図は、デフォルトのフレームバッファにレンダリングする前に glEnable(GL_FRAMEBUFFER_SRGB) を呼び出すことでした。

しかし、電話しようとすると

GLES30.glEnable(GLES30.GL_FRAMEBUFFER_SRGB)

GLES30.GL_FRAMEBUFFER_SRGB はありませんが、GLES30.GL_SRGB のような sRGB テクスチャ フォーマット用の定数がいくつかあります。

私の質問は、OpenGL ES 3.0 にガンマ補正を行わせることは可能ですか? はいの場合、どのように?

それ以外の場合は、ガンマ補正を手動で行う必要があると思います。

4

1 に答える 1

6

この質問は 2 か月前のものだと思いますが、Google に出てきたので、将来の Google 社員のために回答を投稿すると思います :)

GL_FRAMEBUFFER_SRGB は、OpenGL デスクトップでのみ利用可能で、OpenGLES 2.0 の拡張機能を介して利用できるようです。しかし、実験を通じて (私は現在このテーマに取り組んでいます)、OpenGLES 3.x では、フレーム バッファーの基礎となるテクスチャが sRGB 形式である場合は常に、フレーム バッファーへの書き込み時に色が正しく (そして自動的に) sRGB に変換されることに気付きました。 . したがって、sRGB テクスチャにレンダリングするときに GL_FRAMEBUFFER_SRGB を使用して sRGB 変換を有効にする必要はありません。

バック バッファに直接書き込む場合、sRGB 書き込みを有効にするオプションがあるかもしれませんが、それはアプリケーション側で制御されます (たとえば、Windows では、wgl を使用してコンテキストを作成するときに指定するフラグです)。間違い)残念ながら、私が取り組んでいるフレームワークでは、この部分にアクセスできないため、これを確認できません。

于 2015-01-27T10:40:29.427 に答える