我设法在我的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中检索已经在其上应用着色器的纹理?
任何人都可以帮我吗?