よしは、もう少し研究の後、私は、ビューポートを設定するにはglViewport
を使用するthis threadを発見し、各ビューポートのための[super visit]
を呼び出します。
しかし、何らかの理由で各ビューポートの画像が伸びていたため、うまくいきませんでした。ビューポートがCocos2d内部の何かを混乱させていたと思います。
レイヤーを配置して[super visit]
を呼び出し、[super visit]
を再度配置して呼び出すことで、Cocos2d関数を使ってほぼ完全にビューポートをやり直すことになりました。
-(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];
}
を使用すると、サンプルプロジェクトをアップロードすることができます:
glScissor
でこれを組み合わせることで、私は今後の参考のためにビューポートを模倣することができ、ここで私が使用したコードの抜粋です。私はどのように分割画面のためにこのコードを使用するか分からない。 – mikeytdan
このコードは、すべてのゲームオブジェクトを含むCCLayerで使用します。私は残念なことにこれを使用した元のプロジェクトを見つけることができません – tangrs
@tangrs 'toFollow'配列を含むものは何ですか? – dwbrito