Нарисуйте разноцветный треугольник с толстыми краями в opengl - PullRequest
0 голосов
/ 23 декабря 2018

enter image description here

Возможно ли в 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();

Результат:

enter image description here

Ответы [ 2 ]

0 голосов
/ 23 декабря 2018

Я бы изменил ваш код на это:

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

Поэтому у вас должны быть толстые линии, а раскраска не должна интерполироваться между строками ...

0 голосов
/ 23 декабря 2018

Чтобы удалить цветовые градиенты, у вас есть как минимум две опции:

  • Вы можете вызвать 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.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...