Как отрендерить круг в OpenGL

Автор: Eugene Taylor
Дата создания: 12 Август 2021
Дата обновления: 14 Ноябрь 2024
Anonim
OpenGL - Урок 2 - точка, линия, треугольник, круг
Видео: OpenGL - Урок 2 - точка, линия, треугольник, круг

Содержание

OpenGL, или открытая графическая библиотека, представляет собой графический API (интерфейс прикладного программирования) для написания 2D- и 3D-приложений на различных языках программирования и платформах. Его можно использовать для рендеринга чего угодно, от простых примитивных объектов до сложных 3D-сцен. Open GL широко используется в компьютерном дизайне, научной визуализации, моделировании полета и видеоиграх. Несмотря на то, что OpenGl не имеет методов для прямого рисования круга, его можно построить, используя серию линий. Чтобы нарисовать круг, вам потребуется базовое знание OpenGL.

Шаг 1

Создайте базовую программу с окном просмотра OpenGL. Если вы не знакомы с этим процессом, на странице OpenGL есть руководство.


Шаг 2

Добавьте файл math.h.header в свою программу, введя следующий код в начале программы: #include . Это предоставит вам функции cos () и sin () (синус и косинус), необходимые для вычисления круга.

Шаг 3

Запустите метод круга, добавив следующий код перед отображением функции обратного вызова:

void drawCircle (GLint x, GLint y, GLint radius, int num_lines) {}

Переменные «x» и «y» будут использоваться для определения центра круга в вашем окне, в то время как «радиус» устанавливает радиус круга. Целое число num_lines - это количество линий, используемых для создания круга. Чем выше это число, тем более гладким будет круг.

Шаг 4

Добавьте следующий код конфигурации внутри ключей:

float angle GO int num_lines GO glColor3f (0.0, 0.0, 0.0) GO.

Переменная "angle" будет содержать угол линий, используемых для построения круга. Вызов функции glColor3f () устанавливает черный цвет линий, где серия из трех 0 соответствует интенсивности красного, зеленого и синего цветов по шкале от 0 до 1.


Шаг 5

Добавьте следующий код под функцией glColor3f () из шага 4:

glBegin (GL_LINE_LOOP) GO

Это сообщает OpenGL, что любые последующие линии включают линии рисования. В частности, он будет рисовать «GL_LINE_LOOP», который представляет собой серию соединенных линий.

Шаг 6

Введите следующий код для цикла for после вызова glBegin ():

для (int i = 0; i <row_number; i ++) {angle = i * 2 * M_PI / num_line; glVertex2f (x + (cos (угол) * радиус), y + (sin (угол) * радиус)); }

Этот цикл выполняет три функции. Сначала выполняется итерация в соответствии со значением «num_lines», где num_lines - целое число, рисуя линию на каждой итерации, и в результате получается круг, состоящий из прямых линий num_lines. Во-вторых, он вычисляет угол линий относительно центра круга в радианах. «M_P» - это константа, определенная в math.h, представляющая число пи. Наконец, вызов glVertex2f () вычисляет координаты конечных точек линий.


Шаг 7

После цикла введите следующую строку кода:

glEnd () GO

Это сообщит OpenGL, что вы закончили рисовать линии.

Шаг 8

Чтобы нарисовать круг в сцене, добавьте вызов метода drawCircle () к функции отображения обратного вызова программы, которую необходимо подготовить на шаге 1. Укажите значения x, y, radius и num_lines, где x и y представляют точку. в вашей сцене радиус - это радиус круга, а num_lines - количество линий, составляющих круг. Опять же, если вы не знакомы с OpenGL и отображением обратного вызова, см. Руководство по OpenGL.

Шаг 9

Скомпилируйте и запустите вашу программу. Если вы правильно ввели функции, он должен скомпилироваться без ошибок. Если вы указали значения для x, y и радиуса, вы должны увидеть черный круг на белом фоне.

Если вы устали от обычных пластиковых мусорных баков и хотите что-то более стильное для своего дома, то деревянное мусорное ведро - отличное решение. Строить его своими руками вместо того, чтобы покуп...

Спасатель буквально первым, кто попадет на место происшествия, независимо от типа удостоверения личности. После дорожно-транспортного происшествия у спасателя есть несколько задач, которые необходимо ...

Увлекательные посты