Существуют ли простые способы создания кода OpenGL для рисования фигур из графического интерфейса? - PullRequest
1 голос
/ 28 января 2010

Мне понравилось учиться использовать OpenGL в контексте программирования игр, и я экспериментировал с созданием маленьких фигур. Мне интересно, есть ли какие-либо ресурсы или приложения, которые сгенерируют код, подобный следующему, с простым интерфейсом, подобным рисованию.

glColor3f(1.0, 0.0, 0.0);
glBegin(GL_LINE_STRIP);
glVertex2f(1, 0);
glVertex2f(2, 3);
glVertex2f(4, 5);
glEnd();

Мне трудно думать о правильных размерах, чтобы создавать фигуры, и придумывать правильные координаты.

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

Я до некоторой степени решил эту проблему, нарисовав форму краской и измерив расстояния между пикселями относительно одной точки, но это не так уж и элегантно.

Ответы [ 4 ]

1 голос
/ 26 июля 2010

Похоже, вы ищете способ импортировать 2d геометрию в ваше приложение. На мой взгляд, лучшим подходом будет разработка конвейера контента. Это выглядит примерно так:

  1. Вы создадите свой контент в программе 3D-моделирования, такой как Google Sketchup. В вашем случае вы бы рисовали 2D фигуры, используя многоугольники.

  2. Вам необходим инструмент преобразования, чтобы вывести данные из исходного формата в формат, понятный целевому приложению. Один из способов получения данных многоугольников и вершин из Sketchup - это экспорт в Collada и чтение и обработка вашего инструмента. (Самый простой формат - это список треугольников или линий.)

  3. Напишите в своем коде загрузчик геометрии, который считывает данные, созданные вашим инструментом преобразования. Вам нужно написать код opengl, который использует вершинные массивы для отображения геометрии.

0 голосов
/ 29 января 2010

Какую библиотеку вы ожидаете?

что-то вроде drawSquare (Dx, Dy) ;? DrawCircle (радиус);?

drawPoly (x1, y1, x2, y2 ....);?

Разве это не то же самое, что glVertex, но с другим именем? Где абстракция?

0 голосов
/ 29 января 2010

Я сделал один из них ... он взял бы растровое изображение и сгенерировал бы из него геометрию. попробуйте поискать триангуляцию.

первый шаг - создание ребра фигуры, преобразование его из пикселей в вершины и ребра, поиск всех ребер ребра и размещение вершин в каждом из них, затем на основе либо расстояния между вершинами, либо (лучше) разница в градиенте между ребрами, чтобы вырезать вершины и уменьшить количество элементов сетки.

если ваша программа для рисования фигур работает с «векторной графикой», а не с пикселями, то есть с нанесением точек и между ними нарисованы линии, тогда вы можете пропустить этот первый шаг, и вам просто нужно выполнить триангуляцию.

второй шаг, когда у вас есть ребра и вершины, это триангуляция, например, для генерации треугольников отсечение ушей является простым методом.

как использовать координаты? это все зависит от вас, как говорили другие, чтобы было проще, я бы работал в пиксельных координатах.

Вы можете затем масштабировать и переводить по мере необходимости, чтобы преобразовать форму для использования.

0 голосов
/ 28 января 2010

Координаты, которые вы будете использовать, зависят только от того, как вы определяете свой видовой экран и разрешение, в котором вы работаете. Фактически, вы можете подумать о том, чтобы собрать координаты щелчков мыши в любой произвольной системе координат, которую вы хотите, и затем отобразить эти координаты в координаты OpenGL.

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