C ++: рисование 2D-диска в OpenGL - PullRequest
       1

C ++: рисование 2D-диска в OpenGL

6 голосов
/ 23 февраля 2011

Я уже несколько дней пытаюсь написать правильную функцию для рисования 2D-диска на экране с помощью OpenGL, и я просто не могу понять, что это правильно: (

Это мой текущий код:

void Disk( Float x, Float y, Float r, const Color& vColor )
{
    glBegin( GL_TRIANGLE_FAN );
        glVertex2f( x, y );
        for( Float i = 0; i <= 2 * PI + 0.1; i += 0.1 )
        {
            glVertex2f( x + sin( i ) * r, y + cos( i ) * r );
        }
    glEnd();
}

При увеличении на результирующем диске появляются пики, не такие, как по краям, а действительно шипы, указывающие.

Также функция не рисует только один диск, но всегда немного больше одного - это означает, что если альфа включена, результаты выглядят неверно.

  • Что мне нужно изменить в моей функции, чтобы она правильно рисовала диск?

1 Ответ

12 голосов
/ 23 февраля 2011
void circle(float x, float y, float r, int segments)
{
    glBegin( GL_TRIANGLE_FAN );
        glVertex2f(x, y);
        for( int n = 0; n <= segments; ++n ) {
            float const t = 2 * M_PI * (float)n / (float)segments;
            glVertex2f(x + sin(t) * r, y + cos(t) * r);
        }
    glEnd();
}

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

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