заполненный сглаженный поли cocos2d - PullRequest
1 голос
/ 13 февраля 2012

Как я могу нарисовать заполненную поли в каркасе Cocos2D?

Код ниже рисует поли, но без сглаживания. Что я должен изменить?

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 Ответ

2 голосов
/ 13 февраля 2012

Один хороший подход к эмуляции сглаживания - это добавление прозрачных вершин вокруг многоугольника. Этот метод быстрый и красивый, но его сложно реализовать. Вот решение для сглаженных линий .

Если вы не беспокоитесь о производительности, вы можете визуализировать многоугольник несколько раз с некоторой прозрачностью и смещением на 1 пиксель. Это будет работать для не текстурированных полигонов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...