我想使用 OpenGL 库绘制一个带有扇区的环,每个扇区都有不同的颜色。画一个我知道我可以用的戒指gluDisk(gluNewQuadric(), 0, 1.5, 32, 100);
但是要以不同的颜色绘制扇区或区域,我认为我需要使用手动方式使用GL_TRIANGLE_FAN
或类似的方式。
我以这种方式尝试过,但输出对于戒指来说并不那么准确。
const float DEG2RAD = 3.14159/180;
glBegin( GL_TRIANGLE_FAN );
for( int i = 0; i <= 90; i++ )
{
float degInRad = i*DEG2RAD;
glVertex2f(x, y); // point of the inner circle of the ring
for( int n = 0; n <= 4; n++ )
{
float const t = = i*DEG2RAD*(n/4);
glVertex2f(x + sin(t)*r, y + cos(t)*r); // points of the outer circle.
}
}
glEnd();
这个想法是按照这个GL_TRIANGLE_FAN
工作原理图,在外圈中取 4 个点,为内圈中计算的每个点。因为外圈比内圈长。这就是循环进入另一个循环的原因。