我想用两个不同的颜色在左侧绘制一个矩形,在右侧绘制一个矩形,但是在绘制两个GL_Polygon
之后。图像变成这样,有人可以帮我吗?
谢谢。
{
GLfloat rectangleB[5][3]={{10,0,0},{10,30,0},{5,30,0},{1,30,0},{1,0,0}};
GLfloat rectangleW[5][3]={{0,0,0},{0,30,0},{-5,30,0},{-10,30,0},{-10,0,0}};
GLfloat rectangleY[5][3]={{8,2,0},{5,28,0},{0,28,0},{-8,28,0},{-8,2,0}};
void draw_Rectangle(void){
glBegin(GL_POLYGON);
for(int i=0;i<5;i++){
glVertex3fv(rectangleB[i]);
glColor3f(0.0, 0.0, 1.0);
}
glEnd();
glBegin(GL_POLYGON);
for(int i=0;i<5;i++){
glVertex3fv(rectangleW[i]);
glColor3f(1.0, 1.0, 1.0);
}
glEnd();
glFlush();
}
这是输出图像
这是我想要的图像
答案 0 :(得分:2)
首先要注意的是,自glBegin
/ glEnd
序列开始绘制以来已经有好几年了。
阅读有关Fixed Function Pipeline的信息,并参阅Vertex Specification和Shader了解最新的渲染方式。
无论如何,glVertex
用于指定glBegin
/glEnd
序列中的下一个顶点坐标。
调用glVertex
时,当前颜色属性(glColor
)与顶点坐标关联。
这意味着必须在之前设置颜色,然后再指定顶点坐标。交换glColor3f
和glVertex3fv
以解决您的问题:
glBegin(GL_POLYGON);
for(int i=0;i<5;i++){
glColor3f(0.0, 0.0, 1.0);
glVertex3fv(rectangleB[i]);
}
glEnd();
glBegin(GL_POLYGON);
for(int i=0;i<5;i++){
glColor3f(1.0, 1.0, 1.0);
glVertex3fv(rectangleW[i]);
}
glEnd();