我设法在我的 CCRenderTexture 上应用了模糊着色器。但它仅适用于单通道着色器(在我的情况下仅适用于 1 个方向)。
/* ... after initializing CCGLProgram ... */
renderTexture->getSprite()->setShaderProgram( shader );
renderTexture->begin();
parallaxNode->visit();
renderTexture->end();
在这种情况下,我的程序将绘制水平模糊的图像,图像本身是由视差节点合成的。但是,如果我再次在同一个 CCRenderTexture 对象上应用垂直模糊着色器,它将忽略之前应用的着色器,因此我的图像最终只会有垂直模糊。
在 begin - end 块之后立即从 renderTexture 检索 CCTexture,例如:
renderTexture->begin();
parallaxNode->visit();
renderTexture->end();
CCTexture2D * texture = renderTexture->getSprite()->getTexture();
CCSprite * sprite = CCSprite::createWithTexture( texture );
显示精灵仍然是应用着色器之前的图像。
那么,如何解决这个问题?何时以及如何从 CCRenderTexture 检索已应用着色器的纹理?
谁能帮我这个 ?