具有点精灵的OpenGL ES叠加混合模式

时间:2012-04-09 05:01:02

标签: graphics opengl-es

我正在尝试在点精灵上模拟Photoshop的叠加混合模式。这在OpenGL ES中是否可行?

1 个答案:

答案 0 :(得分:0)

编辑 - 这可能对您有帮助:

请注意:我对以下代码表示赞赏;我在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