PolygonSprite* PolygonSprite::create(cc::CCTexture2D *pTexture, std::vector<pr::Vec2> const& triangles, cc::CCRect const& rect) { std::vector<cc::ccVertex3F> cc_triangles; for( size_t i=0; i<triangles.size(); ++i ) { cc::CCPoint p = triangles[i].toCCPoint(); cc::ccVertex3F v = { p.x - rect.origin.x , p.y - rect.origin.y, 0 }; cc_triangles.push_back( v ); } PolygonSprite *sprite = new PolygonSprite(); if (sprite && sprite->init(pTexture, &cc_triangles, rect)) { sprite->autorelease(); return sprite; } CC_SAFE_DELETE(sprite); return NULL; }