参考链接:
http://blog.csdn.net/ryfdizuo/article/details/8701284
原因在于,默认创建的RenderTarget,其RenderBuffer创建标志给的是0,也就是缺省。而OpenGL不支持独立的模板缓冲区(原话是所有GPU都不支持)。因此在创建深度缓冲区时需要创建一个带模板缓冲的深度缓冲,也就是创建标志给为:GL_DEPTH24_STENCIL8.
解决方案是将创建RenderTarget的调用:
_renderTexture = RenderTexture::create(Director::getInstance()->getWinSize().width, Director::getInstance()->getWinSize().height)
修改为:
_renderTexture = RenderTexture::create(Director::getInstance()->getWinSize().width, Director::getInstance()->getWinSize().height, Texture2D::PixelFormat::RGBA8888, GL_DEPTH24_STENCIL8);
cocos2dx的RenderTarget渲染遇到模板缓冲(Stencil)出问题的解决方案
原文:http://www.cnblogs.com/eaglelun/p/6418217.html