在opengl中是否可以将这种类型绘制为三角形?
我已经尝试过
glBegin(GL_TRIANGLES);
glBegin(GL_LINE_LOOP);
我使用glBegin(GL_LINE_LOOP)
代码:
glBegin(GL_LINE_LOOP);
glColor3f(0.0f, 1.0f, 1.0f);
glVertex2f(-30.0, 30.0);
glColor3f(1.0f, 1.0f, 0.0f);
glVertex2f(30.0, 30.0);
glColor3f(0.5f, 0.0f, 1.0f);
glVertex2f(0.0, -30);
glEnd();
结果:
答案 0 :(得分:2)
我会将您的代码更改为此:
glLineWidth(5.0); // this makes 5 pixel thick lines
glBegin(GL_LINES);
glColor3f(0.0f, 1.0f, 1.0f); glVertex2f(-30.0, 30.0); glVertex2f( 30.0, 30.0);
glColor3f(1.0f, 1.0f, 0.0f); glVertex2f( 30.0, 30.0); glVertex2f( 0.0,-30.0);
glColor3f(0.5f, 0.0f, 1.0f); glVertex2f( 0.0,-30.0); glVertex2f(-30.0, 30.0);
glEnd();
glLineWidth(1.0); // return state to original conditions
因此您应该具有粗线,并且颜色不应在线之间插值...
答案 1 :(得分:1)
要删除颜色渐变,您至少有两个选择:
您可以在渲染三角形之前调用glShadeModel(GL_FLAT);
。
您可以使用GL_LINES
,如下所示:
glBegin(GL_LINES);
glColor3f(0.0f, 1.0f, 1.0f);
glVertex2f(-30.0, 30.0);
glVertex2f(30.0, 30.0);
glColor3f(1.0f, 1.0f, 0.0f);
glVertex2f(30.0, 30.0);
glVertex2f(0.0, -30);
glColor3f(0.5f, 0.0f, 1.0f);
glVertex2f(0.0, -30);
glVertex2f(-30.0, 30.0);
glEnd();
要增加线宽,可以使用glLineWidth
。
但是您会看到,宽线的末端通常看起来不像图像上那么漂亮和圆润。如果这对您来说是个问题,则必须使用大量精心放置的GL_TRIANGLES
来绘制形状。