【问题标题】:OpenGL ES Overlay Blend Mode with Point Sprites带有点精灵的 OpenGL ES 叠加混合模式
【发布时间】:2012-04-21 13:58:46
【问题描述】:

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

【问题讨论】:

  • this question 的可能重复项
  • 不,这不涉及点精灵。我不确定如何使用点精灵访问背景纹理。我想我需要使用 OpenGL 混合模式。

标签: graphics opengl-es


【解决方案1】:

编辑 - 这可能会帮助你:

请注意:我将以下代码归功于我;我在 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

【讨论】:

  • 半透明像素呢? Photoshop 混合模式与 OpenGL 有点不同,使用这个公式((base.r < 0.5) ? (2.0 * base.r * overlay.r) : (1.0 - 2.0 * (1.0 - base.r) * (1.0 - overlay.r))),...
猜你喜欢
  • 2013-08-21
  • 2014-04-09
  • 1970-01-01
  • 1970-01-01
  • 2011-11-22
  • 2018-02-14
  • 2010-10-23
  • 1970-01-01
  • 2012-03-25
相关资源
最近更新 更多