Круги являются одной из основ геометрические объекты. Все же нет никаких примитивов, определенных в OpenGL для этого, как строки или полигоны.Как же так? Это - немного раздражения для включения пользовательских заголовков для этого все время!
Какая-либо определенная причина опустить его?
Хотя круги могут иметь базовую форму, они не так просты, как точки, линии или треугольники, когда дело доходит до растеризации. Первые графические карты с 3D-ускорением были разработаны, чтобы делать одну вещь очень хорошо - растеризовать треугольники (а также линии и точки, потому что их было тривиально добавить). Добавление более сложных форм сделало бы карту намного дороже, но добавило бы лишь небольшой функциональности.
Но есть еще одна причина не включать круги / эллипсы. Они не подключаются. Вы не можете построить из них 3D-модель, и вы не можете соединить с ними треугольники, не добавив зазоров или перекрывающих друг друга частей. Итак, чтобы круги были полезными, вам также понадобятся другие формы, такие как кривые и другие более сложные поверхности (например, NURBS). Сами по себе круги полезны только как «большие точки», которые также можно сделать с помощью текстуры в форме квадрата и круга или треугольников.
Если вы используете «настраиваемые заголовки» для кругов, вы должны знать, что они, вероятно, создают модель треугольника, которая формирует ваши «круги».
Потому что исторически видеокарты рендерили точки, линии и треугольники.
Вы рассчитываете кривые, используя достаточно короткие линии, чтобы видеокарте не пришлось этого делать.
Потому что графические карты оперируют трехмерными точками, линиями и треугольниками. Круг требует кривых или сплайнов. Она не может быть идеально представлена "обычным" 3D-примитивом, только приближенно, как N-гон (так что на определенном расстоянии она будет выглядеть как круг). Если вам нужен круг, напишите процедуру сами (это несложно сделать). Либо нарисуйте его в виде N-гона, либо сделайте квадрат (2 треугольника) и вырежьте из него круг с помощью фрагментного шейдера (таким образом можно получить идеальный круг).
Вы всегда можете использовать gluSphere
(если вам нужна трехмерная форма).
Если вы хотите нарисовать двумерный круг, вам придется использовать специальные методы. Я бы выбрал треугольный веер.
Примитивы не зря называются примитивами :)