我想在OpenGL
中绘制未填充的矩形形状,但是当我使用glBegin(GL_QUADS)
或glBegin(GL_POLYGON)
时,结果形状已填充,但我想要填充。我如何绘制未填充的矩形。
void draweRect(void)
{
glClear(GL_COLOR_BUFFER_BIT);
glColor3f(0.0,0.0,1.0);
glLineWidth(30);
glBegin(GL_POLYGON);
glVertex2i(50,90);
glVertex2i(100,90);
glVertex2i(100,150);
glVertex2i(50,150);
glEnd();
glFlush();
}
答案 0 :(得分:8)
使用GL_LINE_LOOP
(而不是GL_POLYGON
)在多边形的周边绘制连接的一系列线段,而不是填充多边形。
或者,您可以使用glPolygonMode (GL_FRONT_AND_BACK, GL_LINE)
...请记住将其设置回默认glPolygonMode (GL_FRONT_AND_BACK, GL_FILL)
以恢复正常(已填充)渲染。
答案 1 :(得分:4)
您需要为渲染设置填充模式。
您可以使用glPolygonMode(...);
方法。
尝试以下方法:
void draweRect(void)
{
glClear(GL_COLOR_BUFFER_BIT);
glColor3f(0.0,0.0,1.0);
glLineWidth(30);
glPolygonMode(GL_FRONT_AND_BACK, GL_LINE);
glBegin(GL_POLYGON);
glVertex2i(50,90);
glVertex2i(100,90);
glVertex2i(100,150);
glVertex2i(50,150);
glEnd();
glPolygonMode(GL_FRONT_AND_BACK, GL_FILL);
glFlush();
}
答案 2 :(得分:0)
这个对我有用..
glBegin(GL_LINE_LOOP);
glVertex2f(x1,y1);
glVertex2f(x2,y1);
glVertex2f(x2,y2);
glVertex2f(x1,y2);
glEnd();