我正在使用OpenGL绘制一个圆圈,其中一组调用是:
float delta_theta = 0.001;
glBegin(GL_POLYGON); // OR GL_LINE_LOOP
glEnable( GL_LINE_SMOOTH );
glHint( GL_LINE_SMOOTH_HINT, GL_NICEST );
glEnable(GL_BLEND);
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
for (angle = 0; angle < 2*3.1415; angle += delta_theta)
glVertex3f( radius*cos(angle), radius*sin(angle), 0 );
glEnd();
问题是圆圈不平滑。我沿着轴移动(平移)圆圈;在某些方面,它变得平滑,但大多数情况下,它就像一个污点,请参阅附带的截图。
有什么建议我可以做些什么来平滑圆圈?
答案 0 :(得分:2)
我建议你不要尝试使用直线或填充多边形来实现这一点。
使用一个GL_POINT
并启用GL_POINT_SMOOTH
。这会将点光栅化为实心圆而不是正常方形。如果您使用实现支持的抗锯齿点(通常在NV实现上高达〜 63.5 ,在其他实现上更多),它将更有效率。