bool CCGridBase::initWithSize(ccGridSize gridSize) { CCDirector *pDirector = CCDirector::sharedDirector(); CCSize s = pDirector->getWinSizeInPixels(); unsigned int POTWide = ccNextPOT((unsigned int)s.width); unsigned int POTHigh = ccNextPOT((unsigned int)s.height); CCTexture2DPixelFormat format = pDirector->getPiexFormat() == kCCPixelFormatRGB565 ? kCCTexture2DPixelFormat_RGB565 : kCCTexture2DPixelFormat_RGBA8888; void *data = calloc((int)(POTWide * POTHigh * 4), 1); if (! data) { CCLOG("cocos2d: CCGrid: not enough memory."); this->release(); return false; } CCTexture2D *pTexture = new CCTexture2D(); pTexture->initWithData(data, format, POTWide, POTHigh, s); free(data); if (! pTexture) { CCLOG("cocos2d: CCGrid: error creating texture"); delete this; return false; } initWithSize(gridSize, pTexture, false); pTexture->release(); return true; }