Запрос предложений по написанию чисто любительского движка рендеринга

Я создал что-то вроде упрощенного рендерера самостоятельно, используя OpenGL ES 2.0. По сути, это просто класс для рендеринга квадов по заданной текстуре спрайта. Чтобы уточнить, это всего лишь один объект, который принимает объекты, представляющие четырехугольники. Каждый четырехъядерный объект поддерживает матрицу преобразования мира и объекта и предоставляет методы для их преобразования в течение заданного количества кадров, а также определяет смещения текстуры в спрайт. Этот четырехъядерный класс также поддерживает список операций преобразования для выполнения над его матрицами. Затем класс рендерера считывает все эти свойства из четырехугольника и настраивает VBO для отрисовки всех четырехугольников в списке рендеринга.

Например:

Quad q1 = new Quad();
Quad q2 = new Quad();

q1->translate(vector3( .1, .3, 0), 30); // Move the quad to the right and up for 30 frames.
q2->translate(vector3(-.1, -.3, 0), 30); // Move the quad down and to the left for 30 frames.

Renderer renderer;
renderer.addQuads({q1, q2});
It's more complex than this, but you get the simple idea.

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

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


person Joey Carson    schedule 12.07.2013    source источник


Ответы (1)


Проблема с этим подходом заключается в том, что для добавления новой геометрии, текстур или анимации требуется написание кода. Должна быть возможность создавать контент для игрового движка с помощью установленных инструментов, таких как 3DS, Maya или Blender, которые являются полностью интерактивными. Это требует чтения и разбора некоторых стандартных форматов файлов, таких как Collada. Я не хочу подавлять ваше желание учиться самостоятельной реализацией кода, но вам действительно стоит взглянуть на PowerVR SDK, который предоставляет множество важных компонентов для создания игровых движков. Исходный код предоставляется бесплатно.

person ClayMontgomery    schedule 12.07.2013
comment
спасибо за Ваш ответ. На данный момент меня больше интересует, как все работает на фундаментальном уровне, поэтому я хочу сделать что-то самостоятельно. Моя забота не столько в том, чтобы создать игру, сколько в том, чтобы создать упрощенный движок рендеринга моделей, связанный с чем-то, что можно было бы делать в школе. Я начал писать простой загрузчик ресурсов, который использует Assimp для загрузки моделей OBJ, и хочу создать простой рендерер и перемещать модели с помощью клавиатуры и мыши. - person Joey Carson; 13.07.2013