【问题标题】:Changing Shader on CCSprite在 CCSprite 上更改着色器
【发布时间】:2026-01-10 20:50:01
【问题描述】:

我不知道为什么,但我多次更改我的精灵上的 Shader(CCGLProgram)。我希望能够使用我在精灵上分配和使用的先前着色器,但是这样做会使我的整个精灵变黑(没有错误)。

我发现的唯一方法是重新创建我的程序并改用新创建的程序。但是,这并不理想,如果可能,我宁愿使用原始程序找到解决方案。

【问题讨论】:

  • 您不确定为什么要更改精灵的着色器? “重新创建我的程序”是什么意思?您是否验证了着色器工作正常(即没有错误)?
  • 是的,我有两个着色器。我附上第一个,然后删除第一个并附上第二个。这可行,一切看起来都应该如此,但是当我稍后再次附加第一个时,我的屏幕变黑了。但是,如果我分配一个新的 CCGL 程序(与第一个程序具有相同的顶点和片段着色器)并附加该程序,那么一切正常。

标签: cocos2d-iphone opengl-es-2.0 kobold2d


【解决方案1】:

您是否在您的一个顶点着色器中引用了 u_mvpMatrix?根据您使用的 Cocos2d 版本,您可能需要将其更改为 CC_MVPMatrix

【讨论】: