Stage3D / AGAL с нуля. Часть 2 – Анатомия программы Stage3D

Добрый день, это вторая статья на тему Stage3D / AGAL, она будет тоже теоретической, как и первая. Ждите практику в следующей статье.

Анатомия программы Stage3D


Перед тем, как начать работу над нашим первым треугольником, давайте сперва взглянем на структуру программы в Stage3D. Приведенная далее информация так же будет касаться WebGL программ и низкоуровневого 3D программирования в целом.
При работе с низкоуровневыми API, стоит понимать принципы их работы. Напомню, V-Ram — это видеопамять, а Буфер — это некоторое занятое месть в ней. Чтобы отображать треугольники, видеокарте нужно располагать как минимум тремя вершинами (точками в пространстве) и программой, определяющей как именно вы хотите нарисовать все это на экране.

Кое о чем мы все еще не поговорили, об индексах. Индексы представляют собой порядок, в котором надо обходить вершины, что бы получить треугольники. Вы можете ассоциировать индексы с точками в детской игре "Соедини точки".
Итак, теперь мы можем добавить в свой словарь еще один термин:

Индексы — список целых чисел (Integers), определяющий порядок прорисовки вершин видеокартой для образования треугольников.

Пока не стоит сильно беспокоиться об индексах, мы еще к ним вернемся. Кстати, я слышал, вам нравятся диаграммы :)



Отсюда можно выделить 3 основные этапа:
  • Резервирование памяти: Создание буферов для каждого типа данных, которым будут использоваться (вершины, текстуры, программы)
  • Загрузка данных: Загрузка вышеперечисленных данных в память.
  • Определение: Дать видеокарте знать какие буферы содержать какие типы данных.

Первые два этапа и определяют силу Stage3D. Резервирование памяти и загрузка данных занимает много времени, но когда все на месте, нам уже не нужен процессор (CPU). Видеокарта способна отрисовывать уже загруженные в ее память данные достаточно быстро, оставляя процессор для дел другого профиля, например, для просчета физики.

Все эти три этапа могут быть произведены всего раз, к слову, они и не должны происходить вновь до тех пор, когда данные изменятся. Назовем это «Исходной» позицией.

Составляющие «исходной» могут быть выполнены в любом порядке. Вы можете начать с программы, потом загрузить вершины, а за ними уже текстуры, но можно и наоборот. Конечно же, для каждой колонки на диаграмме последовательно сть должна оставаться неизменной. Когда вызываете метод drawTriangle(), важно только одно — чтобы все было на своем месте, в каком порядке оно туда попало — не так важно.

Теперь нам известны основание принципы работы с Stage3D, в следующей статье (которая будет достаточно большой), мы наконец поработаем с кодом и нарисуем треугольник.

Оригинал: Stage3D/AGAL from scratch. Anatomy of a Stage3D Program.
Автор оригинала: Norbz.
Перевод: MidnightOne.

Комментарии (5)

+3
Жду следующую статью.
+1
Автор крадется к сути. Пока хорошо )
0
Ага, — неторопливо, но уверенно. :)
+2
redefy.net/2011/12/14/adobe-flash11-stage3d-chapter-1/ вот тоже немного интересной информации. Меня попросил запостить ее человек пожелавший остаться неизвестным.
0
Надеюсь, статьи, которые переводит MidnightOne, получше.
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.