[英]drawing multiple circles in Qt
我有一个这样绘制代码的代码:
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();
在新方法blueVertices
每个vertices
替换为blueVertices
,然后将这些方法恰好置于白色圆圈的方法旁边。 并将这部分代码放在glPopMatrix();
在paintGL
方法中。
//paintGL method
glPushMatrix();
glTranslatef(randx-0.2f , randy-0.2f , 0);
drawBlueCircle();
glPopMatrix();
由于我的定义不正确,我知道顶点在某处混合,但我不知道在哪里。 我这是什么错 这是我的输出:
您可以并排绘制一定距离的两个圆,以验证您生成的顶点正确。 刚开始时,您可以尝试使用glTranslatef(radius , 0 , 0);
白色圆圈glTranslatef(radius , 0 , 0);
和蓝色带glTranslatef( -radius , 0 , 0);
检查两个顶点是否都需要顶点
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.