2012-02-13 81 views
1

如何在Cocos2D框架中绘制填充聚合物?填充反混淆poly cocos2d

以下代码绘制了poly,但没有抗锯齿。我应该更改哪些内容?

void ccFillPoly(CGPoint *poli, int points, BOOL closePolygon) 
{ 
    // Default GL states: GL_TEXTURE_2D, GL_VERTEX_ARRAY, GL_COLOR_ARRAY, GL_TEXTURE_COORD_ARRAY 
    // Needed states: GL_VERTEX_ARRAY, 
    // Unneeded states: GL_TEXTURE_2D, GL_TEXTURE_COORD_ARRAY, GL_COLOR_ARRAY 
    glDisable(GL_TEXTURE_2D); 
    glDisableClientState(GL_TEXTURE_COORD_ARRAY); 
    glDisableClientState(GL_COLOR_ARRAY); 

    glVertexPointer(2, GL_FLOAT, 0, poli); 
    if(closePolygon) 
     // glDrawArrays(GL_LINE_LOOP, 0, points); 
     glDrawArrays(GL_TRIANGLE_FAN, 0, points); 
    else 
     glDrawArrays(GL_LINE_STRIP, 0, points); 

    // restore default state 
    glEnableClientState(GL_COLOR_ARRAY); 
    glEnableClientState(GL_TEXTURE_COORD_ARRAY); 
    glEnable(GL_TEXTURE_2D); 
} 

回答

1

模拟抗锯齿的一个好方法是在多边形周围添加透明顶点。 这种方法快速且精细,但实施起来很难。 Here is solution for antialiased lines

如果您不担心性能,您可以使用某个透明度多次渲染多边形并偏移1个像素。这将适用于没有纹理的多边形。