下面这是老的cocos2d-x 的实现方法:
void TerrainSprite::draw(Renderer *renderer, const Mat4 &transform, uint32_t flags)
{
_customCmd.init(_globalZOrder, transform, flags);
_customCmd.func = CC_CALLBACK_0(TerrainSprite::onDraw, this, transform, flags);
renderer->addCommand(&_customCmd);
}
void TerrainSprite::onDraw(const Mat4 &transform, uint32_t flags)
{
getGLProgramState()->apply(transform);
glDrawArrays(GL_TRIANGLE_STRIP, 0, (GLsizei)_triangles.size());
CC_INCREMENT_GL_DRAWN_BATCHES_AND_VERTICES(1, _triangles.size());
}
void TerrainSprite::refreshTriangle(const std::vector& points, Rect rectLimit)
{
}
void TerrainSprite::flushTriangle()
{
if(_triangles.size()==0){
return;
}
getGLProgramState()->setVertexAttribPointer("a_position", 2, GL_FLOAT, GL_FALSE, sizeof(Vec2), &_triangles[0]); // ��������
if (_bUserTexCoord)
{
getGLProgramState()->setVertexAttribPointer("a_texCoord", 2, GL_FLOAT, GL_FALSE, sizeof(Vec2), &_texCoords[0]); // ��������
}
}
这样的一个自定义的Sprite,给它传递一个_triangles数组,里面是几十个点进行渲染。
请问如果用 cocos creator 实现,请问怎么实现比较好?

