2012-04-09 12 views
0

ポイントスプライトでPhotoshopのオーバーレイブレンドモードをエミュレートしようとしています。これはOpenGL ESで可能ですか?ポイントスプライトを使用したOpenGL ESオーバーレイブレンドモード

+0

が重複する可能性(http://stackoverflow.com/q/8771413/1086804) –

+0

いいえ、ポイントスプライトを扱っていないという。ポイントスプライトを使って背景テクスチャにアクセスする方法がわかりません。 OpenGLのブレンドモードを使う必要があると思います。 – Dex

答えて

0

EDIT - これに沿ってあなたを助けるかもしれない:

ご注意:私は、以下のコードのためではないテイク信用を行う。私は、POWERVRフォーラムでそれを見つけた:http://www.imgtec.com/forum/forum_posts.asp?TID=949

uniform sampler2D s_renderTexture; 
uniform sampler2D s_overlayMap; 
varying mediump vec2 myTexCoord; 

void main() 

{ 
    //Get the Texture colour values 
    lowp vec3 baseColor = texture2D(s_renderTexture, myTexCoord).rgb; 
    lowp float overlayTexture = texture2D(s_overlayMap, myTexCoord).r; 
    lowp vec3 finalMix = baseColor + (overlayTexture - 0.5) * (1.0 - abs(2.0 * baseColor - 1.0)); 

    //Set the Fragments colour 

    gl_FragColor = vec4(finalMix, 1.0); 

} 

確かに、ポイントスプライトを描画する前にこれを呼び出す:これは、添加剤の配合を生じるはずである

glEnable(GL_BLEND); 
glBlendFunc(GL_ONE, GL_ONE); 

。ここで

は異なるブレンドモードの組み合わせで視覚的なリファレンスです: http://zanir.wz.cz/?p=60&lang=en

それは古いページだが、それはいいの参照です。 OpenGLの-ESのブレンドの詳細について

:[この質問]のhttp://www.khronos.org/opengles/sdk/docs/man/xhtml/glBlendFunc.xml

+0

半透明ピクセルはどうですか? PhotoshopのブレンドモードはOpenGLと少し異なり、この式を使用します。((base.r <0.5)?(2.0 * base.r * overlay.r):(1.0 - 2.0 *(1.0 - base.r)* 1.0 - overlay.r))))、... ' – Dex

+0

私の編集した答えを見てください。 – Erik

関連する問題