Хорошо, после небольшого исследования я нашел этот поток , который использует glViewport
для настройки окон просмотра, а затем вызывал [super visit]
для каждого окна просмотра.
Однако этоу меня не получалось, потому что по какой-то причине в каждом окне просмотра было растянуто изображение - я предполагаю, что окна просмотра испортили что-то внутреннее в Cocos2d.
В итоге я почти полностью переделал окна просмотра, используя функции Cocos2d:позиционирование слоя, вызов [super visit]
, изменение положения и вызов [super visit]
снова.Комбинируя это с glScissor
, я могу имитировать области просмотра
Для дальнейшего использования, вот фрагмент кода, который я использовал:
-(void) visit
{
glEnable(GL_SCISSOR_TEST);
glPushMatrix();
CGPoint point = ((CCNode*)[toFollow objectAtIndex:1]).position;
self.anchorPoint = ccp(point.x/self.contentSize.width, point.y/self.contentSize.height);
self.rotation = 180.0f;
point = ((CCNode*)[toFollow objectAtIndex:1]).position;
self.position = ccpAdd(ccp(bounds.width/2,bounds.height/4*3),ccp(-point.x, -point.y));
glScissor(0,bounds.height/2,bounds.width,bounds.height/2);
[super visit];
glPopMatrix();
glPushMatrix();
self.anchorPoint = CGPointZero;
self.rotation = 0.0f;
point = ((CCNode*)[toFollow objectAtIndex:0]).position;
self.position = ccpAdd(ccp(bounds.width/2,bounds.height/4),ccp(-point.x, -point.y));
glScissor(0,0,bounds.width,bounds.height/2);
[super visit];
glPopMatrix();
glDisable(GL_SCISSOR_TEST);
//self.rotation = 0.0f;
//[super visit];
}