sdk3.2 4.0にアップグレードし、マルチスレッドcococos 2 dの問題解決方法をサポート


- (void) swapBuffers
{
	// IMPORTANT:
	// - preconditions
	//	-> _context MUST be the OpenGL context
	//	-> _renderBuffer must be the the RENDER BUFFER

#ifdef __IPHONE_4_0
	if( _depthFormat && _discardFramebufferSupported ) {
		GLenum attachments[] = { GL_DEPTH_ATTACHMENT_OES };
		glDiscardFramebufferEXT(GL_FRAMEBUFFER_OES, 1, attachments);
	}
#endif // __IPHONE_4_0
	
	if(![_context presentRenderbuffer:GL_RENDERBUFFER_OES])
		CCLOG(@"cocos2d: Failed to swap renderbuffer in %s
", __FUNCTION__); #if COCOS2D_DEBUG CHECK_GL_ERROR(); #endif }

 
sdkが4.0にアップグレードされた後、cocos 2 dの上の関数の
if(![_context presentRenderbuffer:GL_RENDERBUFFER_OES])

この文はhomeによって発売される時にエラーを報告して、マルチスレッドを実現することができなくて、解決方法はdelegateの関数を修正することです
- (void)applicationWillResignActive:(UIApplication *)application {
        [[CCDirector sharedDirector] stopAnimation];
	[[CCDirector sharedDirector] pause];
}

- (void)applicationDidBecomeActive:(UIApplication *)application {
        [[CCDirector sharedDirector] stopAnimation]; 
	[[CCDirector sharedDirector] resume];
	[[CCDirector sharedDirector] startAnimation];
}
 
2つの関数を追加
- (void)applicationWillEnterForeground:(UIApplication *)application
{
	[[CCDirector sharedDirector] startAnimation];
}

- (void)applicationDidEnterBackground:(UIApplication *)application
{
        [[CCDirector sharedDirector] stopAnimation];
	[[CCDirector sharedDirector] pause];
}

これで修正が完了すると、エラーは発生しません.ホームキーを押すとプログラムが吹き出して保留状態になります.また、プログラムは発売前の状態に保たれます.
iPhoneのマルチスレッドは技術的に完璧ではありませんが、効果は確かにいいです.次のバージョンのマルチスレッドがもっとよくできることを望んでいます.期待しています.