我有一个以这种方式绘制圆圈的代码:
QList< QPair<double, double> > vertices;
//constructor
vertices.clear();
calculateWhiteVetices();
//drawing methods
void MyGLWidget::drawWhiteCircle() {
int n = vertices.count();
qglColor(Qt::white);
glBegin(GL_POLYGON);
for(int i = 0; i < n; i++) {
glVertex2f(vertices[i].first, vertices[i].second);
}
glEnd();
}
void MyGLWidget::calculateWhiteVetices()
{
double a = 3.14 / 90;
vertices.append(QPair<double, double> (0,0));
for(int i = 0; i <= 360; i++) {
vertices.append(QPair<double, double> (cos(i * a) * radius, sin(i * a) * radius));
}
}
//paintGL method
glPushMatrix();
glTranslatef(randx , randy , 0);
drawWhiteCircle();
glPopMatrix();
现在我想在这里添加另一个圈子,但这是一个问题; 颜色混合在一起,形状被破坏。这是代码:
QList< QPair<double, double> > blueVertices;
//constructor
blueVertices.clear();
calculateBlueVetices();
在新方法中用vertices
替换每个blueVertices
,并将方法完全放在白圈的方法旁边。
并将这部分代码放在glPopMatrix();
方法的paintGL
之后。
//paintGL method
glPushMatrix();
glTranslatef(randx-0.2f , randy-0.2f , 0);
drawBlueCircle();
glPopMatrix();
我知道由于我的定义不明确,顶点正在某处混合,但我不知道在哪里.......我的错是什么? 这是我的输出:
答案 0 :(得分:0)
您可以将两个圆并排绘制一些距离,以验证您是否生成了正确的顶点。首先,您可以尝试使用 glTranslatef(radius , 0 , 0);
的白色圆圈和使用 glTranslatef( -radius , 0 , 0);
的蓝色来检查两者是否都需要顶点