Готовый перевод Stage3D / AGAL from scratch. Part II – Anatomy of a Stage3D Program / Изучаем Stage3D / AGAL с нуля. Часть II – Анатомия Stage3D программы: Анатомия Stage3D программы
Перед тем, как начать написание нашей первой программы, рисующей треугольник, мы должны по-быстрому изучить структуру Stage3D программы.
Это также верно и для WebGL программ и для всего, что имеет отношение к низкоуровневому 3D программированию.
При работе с низкоуровневым 3D API, вы должны немножко разбираться в том, как работает железо.
Напоминаю вам, что V-RAM – это память вашей видеокарты, а буферы – это некоторое выделенное пространство в вашей V-RAM.
Чтобы визуализировать некоторое количество треугольников, вашему GPU требуются, по крайней мере, некоторое количество вершин (вершина – это точка в пространстве), а также программа, которая скажет, как визуализировать эти точки на экране.
Есть еще одна важная вещь, о которой мы не говорили ранее. Речь идет о индексах.
Индексы определяют, в каком порядке должны визуализироваться ваши вершины, чтобы в конечном итоге образовать треугольник.
Вы можете представить индексы, номерами над точками из игр типа «соедини все точки линиями» в которые мы играли, когда мы были детьми.
Отлично! Теперь мы можем добавить определение индексов в наш словарь.
Индексы: список целых чисел, определяющих в каком порядке видеокарта должна визуализировать вершины треугольника.
Не волнуйтесь в настоящее время о вопросах работы с индексами, мы вернемся к ним позже и уделим побольше внимания.
Сейчас, я хотел бы вам продемонстрировать вот такую схему:
Вы можете выделить 3 главные фазы в этой схеме:
Фаза распределения: создание буферов для каждого типа данных GPU, которые будут использоваться (вершина, текстуры, программы) в вашей V-RAM.
Фаза загрузки: отправка данных, или текстур, или программ в буфера, чтобы GPU cмог получить к ним доступ.
Фаза декларации: сказать GPU, какой буфер будет использоваться в качестве данных для вершин, какие будут использоваться текстуры и программы.
Первые две фазы, фазы распределения и загрузки, являются основой Stage3D.
Выделение пространства в видеопамяти и загрузка туда данных занимает много времени, но как только ваши меши будут записаны в вашу видеопамять, больше ничего от процессора не требуется. Как следствие, это является причиной, почему ваш GPU может визуализировать меши так быстро, оставляя ваш процессор свободным для других процессов, таких как расчет физики и что-то типа этого.
Все эти три фазы можно выполнить один раз, и не выполнять снова до тех пор, пока текущие данные или программы не изменятся.
Мы будем называть этот процесс – настройкой.
Настройка может быть произведена в любом порядке: вы можете начать с определения программы, затем создать вершины, далее индексы, но если хотите, вы можете проделать это все и в противоположном порядке.
Конечно, нужно при этом следить за порядком выполнения действий, указанных в каждом столбце: например, нужно сначала создать буфер, чтобы иметь возможность загрузить некоторые данные в него! Но, в конечном итоге, по окончании процесса настройки, когда вы будете вызывать метод drawTriangle(), единственное что имеет значение, это чтобы все данные были на своих местах и готовы к запуску, не важно в каком порядке они были загружены в видеопамять.
Теперь, вы знаете, как строится любая низкоуровневая 3D-программа, какие действия и в каком порядке их следует выполнять: распределение, передача данных в буфер и т.д …
-
Переведено на Нотабеноиде
http://notabenoid.org/book/32157/112033
Переводчики: redefy
Настройки
Готово:
