你如何在CCRenderTexture上应用着色器两次?

时间:2013-08-23 16:40:39

标签: opengl cocos2d-iphone glsl shader cocos2d-x

我设法在我的CCRenderTexture上应用模糊着色器。但它仅适用于单通道着色器(在我的情况下仅适用于1个方向)。

/* ... after initializing CCGLProgram ... */
renderTexture->getSprite()->setShaderProgram( shader );
renderTexture->begin();
parallaxNode->visit();
renderTexture->end();

在这种情况下,我的程序将绘制水平模糊的图像,图像本身是由视差节点构成的复合图像。 但是,如果我再次在同一个CCRenderTexture对象上应用垂直模糊着色器,它将忽略之前应用的着色器,因此我的图像最终只会出现垂直模糊。

在开始 - 结束块之后立即从renderTexture中检索CCTexture,例如:

renderTexture->begin();
parallaxNode->visit();
renderTexture->end();
CCTexture2D * texture = renderTexture->getSprite()->getTexture();
CCSprite * sprite = CCSprite::createWithTexture( texture );

表明精灵仍然是应用着色器之前的图像。

那么,如何解决这个问题呢?何时以及如何从CCRenderTexture中检索已经在其上应用着色器的纹理?

任何人都可以帮我吗?

0 个答案:

没有答案