gpt4 book ai didi

cocos2d-iphone - cocos2d - 只显示 Sprite 的一部分——不规则形状

转载 作者:行者123 更新时间:2023-12-04 06:50:49 27 4
gpt4 key购买 nike

我真的很想弄清楚这个问题,所以非常感谢您的帮助。我试图隐藏大部分 Sprite 并逐渐显示它。如果我只使用矩形,这很好用。例如,我发现有人实现了“ClippingNode”类并且效果很好,即这部分代码:

-(void) visit
{
glPushMatrix();
glEnable(GL_SCISSOR_TEST);
glScissor(clippingRegion.origin.x + positionInPixels_.x, clippingRegion.origin.y + positionInPixels_.y, clippingRegion.size.width, clippingRegion.size.height);

[super visit];

glDisable(GL_SCISSOR_TEST);
glPopMatrix();
}

问题是我需要一个不规则的形状,而不仅仅是一个矩形。我希望我可以堆叠对 glScissor 的调用并创建一个包含许多较小矩形的形状,但不幸的是 glScissor 只能工作一次(最后一次调用它)。

cocos2d 似乎不支持 OpenGL 模板缓冲区(是吗?),即使支持,我也发现 OpenGL 很难理解,我仍然需要有人向我解释。如果我可以在 Sprite 上设置一条贝塞尔曲线路径作为 mask (我认为您可以在 Quartz 中做到这一点),那就太好了,但似乎不受支持。

拜托,如果有人在这里有一点智慧,那就太好了!

最佳答案

想通了。你可以多次调用 glScissor,你只需要每次都绘制剪刀形状:

-(void) visit
{
NSEnumerator *enumerator;
NSValue *val;
CGRect aRegion;

glPushMatrix();
glEnable(GL_SCISSOR_TEST);

enumerator = [regions objectEnumerator];
while ((val = (NSValue *)[enumerator nextObject])) {
aRegion = [val CGRectValue];

glScissor(aRegion.origin.x, aRegion.origin.y,
aRegion.size.width, aRegion.size.height);
[super visit];
}

glDisable(GL_SCISSOR_TEST);
glPopMatrix();

}

关于cocos2d-iphone - cocos2d - 只显示 Sprite 的一部分——不规则形状,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6464362/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com