在opengl中绘制带粗边的多色三角形

在opengl中绘制带粗边的多色三角形,opengl,Opengl,在opengl中可以将这种类型绘制为三角形吗 我已经试过了 glBegin(GL_三角形) glBegin(GL\u-LINE\u-LOOP) 使用glBegin(GL\u LINE\u 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

在opengl中可以将这种类型绘制为三角形吗

我已经试过了

  • glBegin(GL_三角形)

  • glBegin(GL\u-LINE\u-LOOP)

使用glBegin(GL\u LINE\u 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();
结果:


要删除颜色渐变,您至少有两个选项:

  • 您可以调用
    glShadeModel(GL\u FLAT)在渲染三角形之前

  • 您可以使用
    GL\u行
    ,如下所示:

    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\u三角形来绘制形状。

我将您的代码更改为:

glLineWidth(5.0);//这会产生5像素厚的线条
glBegin(GL_行);
GL3F(0.0f,1.0f,1.0f);glVertex2f(-30.0,30.0);glVertex2f(30.0,30.0);
GL3F(1.0f,1.0f,0.0f);glVertex2f(30.0,30.0);glVertex2f(0.0,-30.0);
GL3F(0.5f、0.0f、1.0f);glVertex2f(0.0,-30.0);glVertex2f(-30.0,30.0);
格伦德();
glLineWidth(1.0);//将状态恢复到原始状态

所以你应该有粗线条,并且颜色不应该在线条之间插值…

角不会这么漂亮,但是如果不是这样,
GL\u LINE\u LOOP
应该可以工作。你能用
GL\u LINE\u LOOP
向我们展示你的代码和你得到的结果吗?@HolyBlackCat我已经添加了带有结果的代码,现在我如何获得三角形所需的颜色和宽度?嗨,首先,你是用旧的opengl版本编程的。新版本不使用glBegin。我不确定旧版本是否有glLineWidth命令…看起来你打败了我。。。奇怪之前没有看到你的答案。。。现在我正在决定是否删除。。。有什么建议吗?如果您添加
glLineWidth(5.0)。。。glLineWidth(1.0)到你的代码我会删除我的。。。