2012-04-20 13 views
0

В Stage3D/AGAL, можно указать для отдельных VertexBuffers к тому же va0 таким образом, чтобы:Может ли четыре (4) одиночных VertexBuffers быть привязаны к каждому полю регистра Vertex Attribute?

  • Каждые данные VertexBuffer могут быть независимо изменено (было бы предположить, что это большая производительность в некоторых ситуациях , да?).

  • Каждый VertexBuffer фокусируется на одном поле va0 (первого регистра вершинного атрибута), так что vertexbuffer1 манипулирует va0.x, vertexbuffer2 = va0.y, vertexbuffer3 = va0.z и vertexbuffer4 = va0.w;

Так как вы можете указать «смещение» и формат данных (например: FLOAT_1, FLOAT_4) при назначении VertexBuffer к Context3D объекта, я предположил бы, что это может быть возможно.

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

Нужно ли каждому VertexBuffer принимать все 4 поля в каждом регистре? Если это так, я не уверен, что понимаю, почему существуют значения FLOAT_1 -to-FLOAT_3! : S

Заранее благодарен!

+0

Я думаю, что нашел решение этого, глядя на исходный код для Axel (axgl.org). Я позже опубликую подробный ответ, но на данный момент - похоже, что 'VertexBuffer' можно повторно использовать в разных регистрах атрибутов вершин, а игра со смещением может дать некоторые опрятные решения при использовании FLOAT_2. Не похоже, что отдельные VertexBuffers могут быть привязаны к одному и тому же атрибуту вершины без перезаписывания предыдущего. – bigp

ответ

1

При назначении буфера вершин или константы вы выделяете 128 бит (то есть 4 x 32). И вы будете точно ограничены одним атрибутом (va0, va1). Поэтому я думаю, что невозможно связать разные буферы с одним атрибутом. И если вы поместите FLOAT_1, вы потеряете память.

 Смежные вопросы

  • Нет связанных вопросов^_^