Quantcast
Channel: Cocos中文社区 - 最新主题
Viewing all articles
Browse latest Browse all 88737

3.13 ClippingNode的bug

$
0
0

@kkvskkkk 写道:

问题描述: win32上ClippingNode可以用Label做stencil, 手机上不行

原因:
1. win32的OpenGL可以直接做alphaTest 手机上的OpenGL ES不行, 所以手机是用shader实现的。
2. ClippingNode会调用stencil的setGLProgram
3. 当Label使用系统字体时, 实际参与渲染的是_textSprite。 而Label没有重载Node::setGLProgram 导致ClippingNode调用Label的setGLProgram时只改了Label的Program, 而实际执行渲染的_textSprite并不是Label的子节点所以textSprite的setGLProgram没有被调用

解决方法:重载setGLProgram

void Label::setGLProgram(GLProgram *glprogram)
{
Node::setGLProgram(glprogram);

if (_textSprite)
{
    if (_shadowNode)
    {
        _shadowNode->setGLProgram(glprogram);
    }

    _textSprite->setGLProgram(glprogram);
}

}

搞定:slightly_smiling:

帖子: 3

参与者: 1

阅读整个主题


Viewing all articles
Browse latest Browse all 88737

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>