Learn COCOS2DブックのBOX2Dチュートリアルに従っていますが、コンソールで毎秒10回のようにこのエラーが表示され始めました。このエラーをグーグルで検索しましたが、関連する情報が見つかりませんでした。シェーダーファイルについて話している人もいますが、それらが何であるかはわかりません。複数のGLVIEWを使用しないように言っている人もいますが、私はそれを行っているとは思いません。以下は、実装ファイルのコード全体です。
エラーMSG:-[CCTextureAtlas drawNumberOfQuads:fromIndex:]556のOpenGLエラー0x0500
- (void)dealloc
{
if(world){
delete world;
world = NULL;
}
if(debugDraw){
delete debugDraw;
debugDraw = nil;
}
[super dealloc];
}
+(id)scene{
CCScene *scene = [CCScene node];
PuzzleLayer *layer = [self node];
[scene addChild:layer];
return scene;
}
-(void)setupWorld{
b2Vec2 gravity = b2Vec2(0.0f, -10.0f);
//bool doSleep = true;
world = new b2World(gravity);
}
-(void)createBoxAtLocation: (CGPoint)location withSize:(CGSize)size{
CCLOG(@"Box location: %.0f, %.0f", location.x, location.y);
b2BodyDef bodyDef;
bodyDef.type = b2_dynamicBody;
bodyDef.position = b2Vec2(location.x/PTM_RATIO, location.y/PTM_RATIO);
b2Body *body = world->CreateBody(&bodyDef);
b2PolygonShape shape;
shape.SetAsBox(size.width/2/PTM_RATIO, size.height/2/PTM_RATIO);
b2FixtureDef fixtureDef;
fixtureDef.shape = &shape;
fixtureDef.density = 1.0;
body->CreateFixture(&fixtureDef);
}
-(void)setupDebugDraw{
debugDraw = new GLESDebugDraw(PTM_RATIO * [[CCDirector sharedDirector] contentScaleFactor]);
world->SetDebugDraw(debugDraw);
}
-(void)draw{
glDisable(GL_TEXTURE_2D);
world->DrawDebugData();
glEnable(GL_TEXTURE_2D);
}
-(id)init{
if(self = [super init]){
[self setupWorld];
[self setupDebugDraw];
[self scheduleUpdate];
self.isTouchEnabled = YES;
}
return self;
}
-(void)registerWithTouchDispatcher{
[[CCTouchDispatcher sharedDispatcher] addTargetedDelegate:self priority:0 swallowsTouches:YES];
}
-(void)update:(ccTime)dt{
int32 velocityIterations = 3;
int32 positionIterations = 2;
world->Step(dt, velocityIterations, positionIterations);
}
-(BOOL)ccTouchBegan:(UITouch *)touch withEvent:(UIEvent *)event{
CGPoint touchLocation = [touch locationInView:[touch view]];
touchLocation = [[CCDirector sharedDirector] convertToGL:touchLocation];
touchLocation = [self convertToNodeSpace:touchLocation];
b2Vec2 locationWorld = b2Vec2(touchLocation.x/PTM_RATIO, touchLocation.y/PTM_RATIO);
[self createBoxAtLocation:touchLocation withSize:CGSizeMake(50, 50)];
return TRUE;
}