填充抗锯齿聚cocos2d

时间:2012-02-13 08:54:25

标签: objective-c ios opengl-es cocos2d-iphone

如何在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 个答案:

答案 0 :(得分:2)

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

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