好吧,經過多一點研究,我發現this thread它使用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];
}
您可以上傳一個示例項目。我不確定如何將此代碼用於分屏。 – mikeytdan
您可以在包含所有遊戲對象的CCLayer中使用此代碼。我找不到原來的項目,我很遺憾地使用這個項目 – tangrs
@tangrs什麼包含'toFollow'數組? – dwbrito