Cocos2d-x HD 游戲&如何修復(fù)在iPad 2上的閃屏問題
這里有2個例子。(作者可能會在下一個版本修復(fù)這些bug)
《夢幻連連看2 HD》
http://itunes.apple.com/app/link-link-2-hd/id439611994?mt=8,
《漁場危機 HD》
http://itunes.apple.com/app/fisheriescrisis/id440999336?mt=8
根據(jù)cocos2d-iphone的帖子”cocos2d and iPad 2” http://www.cocos2d-iphone.org/archives/1430 , cocos2d-x 游戲也有同樣的問題,RicardoQuesada相信這是iPad2上的bug,并不是cocos2d引起的。
在默認(rèn)設(shè)置里,cocos2d-x 使用一個帶有深度緩沖區(qū)的3D投射,在 CCDirector::setGLDefaultValues() 函數(shù)里
voidCCDirector::setGLDefaultValues(void)
{
// 這個方法當(dāng)且僅當(dāng)在openGLView_ 初始化后被調(diào)用
assert(m_pobOpenGLView);
setAlphaBlending(true);
setDepthTest(true);
setProjection(m_eProjection);
// m_eProjection 在CCDirector::init()里設(shè)置為kCCDirectorProjectionDefault,同時
// kCCDirectorProjectionDefault 在CCDirector.h里設(shè)置為kCCDirectorProject3D
// …
}
因此對于iPad 2游戲,不要忘記調(diào)用
// 解決方法 A:關(guān)閉深度檢測
CCDirector::sharedDirector()->setDepthTest(false);
或者
// 解決方法B:使用2D投射
CCDirector::sharedDirector()->setProjection(kCCDirectorProjection2D);
選任意一個都行。修改之后,請重新測試一下你的整個游戲。setDepthTest 可能會影響到一些效果,轉(zhuǎn)換以及瓦片地圖z軸上的行為。