2015-03-20 2 views
3

Я знаю, что есть встроенные функции для рисования прямоугольников (например, glRecti()), и подумал, что круг также является довольно простым использованием.OpenGL/GLU: Есть ли встроенная функция для рисования кругов?

Есть ли такая встроенная функция для рисования кругов? Или я должен всегда выполнять это самостоятельно?

+1

, даже если есть встроенный метод рисования кругов. Я думаю, вы все равно должны научиться делать это вручную. IMO – SemperAmbroscus

+0

Буду рад узнать, как это сделать сам, но теперь я хочу избежать ошибок и тестов и предпочитают использовать что-то уже проверенное и широко используемое. – SomethingSomething

+1

Если вы не рисуете точки, линии или треугольники, вы используете обесцененные функции. OpenGL - это низкоуровневый API, предназначенный для рисования материала как можно быстрее; удобные вещи, такие как рисование базовых примитивов, намеренно не учитываются (или удаляются), чтобы уменьшить API. Я предлагаю вам использовать основной профиль ([довольно приличный учебник] (https://open.gl/)) или использовать структуру более высокого уровня. –

ответ

0

Нет, нет встроенной функции OPENGL ... Прочитайте это, чтобы вы начали в письменном виде свою собственную функцию DrawCircle:

http://www.openglprojects.in/2014/03/draw-circle-opengl.html

=== ==== Редактировать

GLU устарел и полностью не поддерживается. Поэтому я даже не буду предлагать встроенную функцию для такой библиотеки.

+0

Спасибо, это выглядит красиво. Если я также хочу заполнить круг, будет ли он работать, если я использую строки вместо точек? – SomethingSomething

+1

@SomethingЧто-то вы должны использовать линии, если хотите линии (так, контур круга) или треугольники, если хотите чего-то еще. – immibis

+0

@immibis, спасибо за ваш вклад. Я только что начал курс компьютерной графики в университете, и в настоящее время нам нужно только рисовать простые фигуры, поэтому они просто видят, что нам удается каким-то образом использовать OpenGL.Все еще не дошли до уровня понимания этой практики треугольников – SomethingSomething

1

gluDisk() can be used to do so:

void gluDisk(GLUquadricObj *obj, 
      GLdouble innerRadius, GLdouble outerRadius, 
      GLint slices, GLint loops) 

innerRadius и outerRadius контролировать размер отверстия и диска.

Комплект innerRadius до 0.0, чтобы сделать сплошной круг.
ломтики: количество сторон на диске (например, 3 для равностороннего треугольника, 6 для шайбы 20 для круга).
Петли: количество отображаемых концентрических колец, например. 1 для кругов 2 для шайб. Использование больших значений для петель улучшает зеркальное освещение и эффект прожекторов.

Official manpage.

1

Если вам удобно использовать GLU (который устарел как целое), то да, есть. gluDisk() оказывает заполненный круг по умолчанию, но также может быть использован для отображения только круг контур:

GLUquadric quad = gluNewQuadric(); 
... 
gluQuadricDrawStyle(quad, GLU_SILHOUETTE); 
gluDisk(quad, 0.0, radius, 64, 1); 
... 
gluDeleteQuadric(quad); 

Приведенный выше код не тестировался.

+0

Я изучаю курс компьютерной графики в университете, и мы используем очень старое программное обеспечение - OpenGL с GLU и GLUT. Я изо всех сил пытался найти рабочий бинар GLUT с 2001 года. Мы рисуем линии и полигоны с 'glBegin()' и 'glEnd()' ... Я надеюсь, что это поможет мне и с новыми технологиями – SomethingSomething

Смежные вопросы