Я действительно схожу с ума, пытаясь понять это, поэтому любая помощь будет действительно оценена. Я пытаюсь скрыть большую часть спрайта и показать его постепенно. Это работает отлично, если я работаю только с прямоугольниками. Например, я нашел кого-то реализация класса «ClippingNode», и она работала хорошо, а именно эта часть кода:cocos2d - Показывается только часть спрайта - неправильная форма
-(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 не поддерживает буфер трафарета OpenGLs (не так ли?), И даже если это так, я считаю, что OpenGL так трудно понять, мне все равно нужен кто-то, чтобы объяснить это мне. Если бы я мог установить путь безье на спрайт в качестве маски (что, я думаю, вы можете сделать в Quartz), это было бы здорово, но похоже, что это не поддерживается.
Пожалуйста, если у кого-то есть какая-то мудрость, это было бы здорово!
На самом деле, я спрошу по-другому: Можно ли изменить выше реализацию «посетить» на CCNode подрезать содержимое узла к кругу радиуса 40 с центром в clippingRegion.origin? – johnnysports
Неужели вам удалось заставить это работать красиво, чтобы закрепить круг? – jin