CCClippingnode 导致 OpenGL 错误 0x0502
CCClippingnode causes OpenGL error 0x0502
我正在使用 cocos2d-iPhone v.2.2,更新旧游戏,并且我有一个导致错误的剪辑节点。在 AppDelegate.m 中,我将设置切换为使用 CCClippingNode:
CCGLView *glView = [CCGLView viewWithFrame:[window_ bounds]
pixelFormat:kEAGLColorFormatRGB565
depthFormat:GL_DEPTH24_STENCIL8_OES //switched from 0
preserveBackbuffer:NO
sharegroup:nil
multiSampling:NO
numberOfSamples:0];
然后我用这段代码在我的 mainGame.m
中制作了剪辑器
//after interface
@property (nonatomic, strong) CCClippingNode *shadowClipper;
//in the init method
CCSprite *stencil = [CCSprite spriteWithSpriteFrameName:@"clipper.png"];
stencil.position = ccp(winSize.width/2, winSize.height/2);
_shadowClipper = [CCClippingNode clippingNodeWithStencil:stencil];
_shadowClipper.alphaThreshold = 0.0;
[_gameLayer addChild:_shadowClipper z:2];
控制台记录 "OpenGL error 0x0502 in -[CCSprite draw] 530" 但除此之外,剪辑节点正在执行它在模拟器中应该执行的操作。关于导致错误的原因以及我可以做些什么来修复它有什么想法吗?
我正在使用两个嵌套的 CCClippingNodes
,它们都将 alphaThreshold
设置为 < 1。观察到的错误每帧发生一次。它在 CCSprite
的第 530 行中报告 (!) 但出现在第 285 行的 CCClippingNode
中:
[program setUniformLocation:alphaValueLocation withF1:_alphaThreshold];
如果 alphaThreshold
小于 1,CCClippingNode
会为其所有模板节点分配一个 alpha 测试着色器。当它在上面的行中更新 alpha 阈值统一时,它没有调用 glUseProgram
在CCClippingNode
中的上一行之前添加以下行,以便在设置统一之前绑定着色器程序。这应该可以消除错误。
[program use];
CCClippingNode
边缘似乎有点粗糙,至少 alpha 测试实现...
我正在使用 cocos2d-iPhone v.2.2,更新旧游戏,并且我有一个导致错误的剪辑节点。在 AppDelegate.m 中,我将设置切换为使用 CCClippingNode:
CCGLView *glView = [CCGLView viewWithFrame:[window_ bounds]
pixelFormat:kEAGLColorFormatRGB565
depthFormat:GL_DEPTH24_STENCIL8_OES //switched from 0
preserveBackbuffer:NO
sharegroup:nil
multiSampling:NO
numberOfSamples:0];
然后我用这段代码在我的 mainGame.m
中制作了剪辑器//after interface
@property (nonatomic, strong) CCClippingNode *shadowClipper;
//in the init method
CCSprite *stencil = [CCSprite spriteWithSpriteFrameName:@"clipper.png"];
stencil.position = ccp(winSize.width/2, winSize.height/2);
_shadowClipper = [CCClippingNode clippingNodeWithStencil:stencil];
_shadowClipper.alphaThreshold = 0.0;
[_gameLayer addChild:_shadowClipper z:2];
控制台记录 "OpenGL error 0x0502 in -[CCSprite draw] 530" 但除此之外,剪辑节点正在执行它在模拟器中应该执行的操作。关于导致错误的原因以及我可以做些什么来修复它有什么想法吗?
我正在使用两个嵌套的 CCClippingNodes
,它们都将 alphaThreshold
设置为 < 1。观察到的错误每帧发生一次。它在 CCSprite
的第 530 行中报告 (!) 但出现在第 285 行的 CCClippingNode
中:
[program setUniformLocation:alphaValueLocation withF1:_alphaThreshold];
如果 alphaThreshold
小于 1,CCClippingNode
会为其所有模板节点分配一个 alpha 测试着色器。当它在上面的行中更新 alpha 阈值统一时,它没有调用 glUseProgram
在CCClippingNode
中的上一行之前添加以下行,以便在设置统一之前绑定着色器程序。这应该可以消除错误。
[program use];
CCClippingNode
边缘似乎有点粗糙,至少 alpha 测试实现...