3

私は、Androidデバイス上のOpenGl es 2.0で最大クランプブレンド方程式を再現する方法、または少なくとも同様の結果を得る方法を見つけようとしています。

残念ながら、glBlendEquation(GL_MAX_EXT)Androidではサポートされていません。GL_MAX enumAndroidのglヘッダーで定義されていますが、実行すると、結果はGL_INVALID_ENUM0x0500エラーになります。

シェーダーとオフスクリーンテクスチャを使用するソリューションがあります。各シェーダーを使用してテクスチャ間でピンポンをレンダリングし、最大ピクセル値を計算します。

ただし、このソリューションは、ほとんどのAndroidデバイスでリアルタイムに実行するには十分な速度ではありません。

したがって、この制限を考えると、異なるブレンド方程式とブレンド係数を使用して同様の結果を再現する方法はありますか?

私は多くのブレンド関数の組み合わせを試しましたが、最も近いものは次のとおりです。

glBlendFunction(GL_SRC_ALPHA、GL_ONE_MINUS_ALPHA):これは近づいていますが、テクスチャが透明になりすぎています。アルファ値が低いテクスチャは見づらいです。

glBlendFunction(GL_ONE_MINUS_DST_ALPHA、GL_SRC_ALPHA):これもある程度近づきますが、アルファが蓄積しすぎて、色が意図したよりも暗くなります。

4

1 に答える 1

1

GL_MAX特別なブレンド機能を必要とせずにブレンドを行うことができれば...OpenGLはそもそもそれを追加することはなかったでしょう。したがって、オプションは、シェーダーメソッドを使用しないか使用することです。

于 2013-03-02T02:32:13.170 に答える