Cocos2d iphone cocos2d,将图像分割为多个R B G通道?

Cocos2d iphone cocos2d,将图像分割为多个R B G通道?,cocos2d-iphone,opengl-es-2.0,Cocos2d Iphone,Opengl Es 2.0,我想创造一种效果,在我的角色被杀死后,角色精灵的红、蓝、绿颜色通道分离成不同的方向 类似于此的内容> 如何执行此操作?在片段着色器中查找单个颜色时,您可以添加不同的偏移量。为了提高效率,您可能应该首先渲染到中间缓冲区 下面是一个如何执行此操作的示例: vec4 mainOld( vec2 offset ) { ... (gl_FragCoord.xy + offset) ... } void main( void ) { vec4 foo; foo.r = mainO

我想创造一种效果,在我的角色被杀死后,角色精灵的红、蓝、绿颜色通道分离成不同的方向

类似于此的内容>


如何执行此操作?

在片段着色器中查找单个颜色时,您可以添加不同的偏移量。为了提高效率,您可能应该首先渲染到中间缓冲区

下面是一个如何执行此操作的示例:

vec4 mainOld( vec2 offset ) {

    ... (gl_FragCoord.xy + offset) ...
}

void main( void ) {
    vec4 foo;
    foo.r = mainOld(vec2(-3.0, 0.0)).r;
    foo.g = mainOld(vec2(0.0, 5.0)).g;
    foo.b = mainOld(vec2(0.0, 0.0)).b;
    foo.a = mainOld(vec2(0.0, 0.0)).a;
    gl_FragColor = foo;
}
基本上,原始着色器现在调用了三次,所以效率有点低,这就是为什么我建议使用缓冲区,但这可能是过早的优化

您可以在此处的实际着色器中查看上述代码的结果:
(抱歉,不知道这些链接有多持久)

嘿,Sarien,角色死后会有一个动画。我希望能够在制作死亡动画的同时不断地制作效果。首先渲染到中间缓冲区是否仍然有效?或者这是唯一最好的,如果我有一个恒定的精灵为角色。我不知道,对不起。在许多情况下,不需要缓冲区。