C ++:在OpenGL中绘制2D磁盘

时间:2011-02-23 18:05:11

标签: c++ opengl

我已经尝试用OpenGL编写一个适当的功能,用于在屏幕上绘制2D磁盘几天了,我似乎无法做到正确:(

这是我目前的代码:

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();
}

放大时,生成的磁盘显示尖峰,而不是边缘,但指示出尖峰。

此功能也不会仅绘制一个磁盘,但总是多于一个 - 这意味着如果启用了alpha,则结果看起来不对。

  • 我需要更改功能以便正确绘制磁盘?

1 个答案:

答案 0 :(得分:12)

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();
}

那可以让你摆脱透支。关于尖峰......一张图片可以说出千言万语。