问题描述
|
它的格式应为“ 0”。
解决方法
使用
GL_TRIANGLE_FAN
下垂您的中心点,然后降低周边顶点:
void glCircle( float x,float y,float r,bool filled = true,unsigned int subdivs = 20 ) {
if( filled ) {
glBegin( GL_TRIANGLE_FAN );
glVertex2f( x,y );
} else {
glBegin( GL_LINE_STRIP );
}
for( unsigned int i = 0; i <= subdivs; ++i ) {
float angle = i * ((2.0f * 3.14159f) / subdivs);
glVertex2f( x + r * cos(angle),y + r * sin(angle) );
}
glEnd();
}
,有一个gluDisk
,但签名与您给的有点不同。它始终使磁盘居中于原始位置,并且如果您不在磁盘上,则希望您使用glTranslate
。它在其他方面也更具通用性-绘制的磁盘的中心可能有一个孔(您显然并不在意),并且可以绘制一个“ loops”参数一次有多个磁盘。这使得它可以适应您所要求的工作,只比您想要的多一点:
void circle(float xcenter,float ycenter,float radius) {
GLUquadric* quad = gluNewQuadric();
glMatrixMode(GL_MODELVIEW);
glPushMatrix();
glLoadIdentity();
glTranslatef(xcenter,ycenter);
gluDisk(quad,radius,256,1);
glPopMatrix();
gluDeleteQuadric(quad);
}
我想说的是正确的,因为它很容易质疑像@genpfault所说的那样做和自己画一个圆形三角形风扇是否更容易。