我已经尝试用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,则结果看起来不对。
答案 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();
}
那可以让你摆脱透支。关于尖峰......一张图片可以说出千言万语。