【问题标题】:Can four (4) single VertexBuffers be associated to each fields of a Vertex Attribute register?可以将四 (4) 个单个 VertexBuffer 关联到顶点属性寄存器的每个字段吗?
【发布时间】:2012-04-20 14:39:40
【问题描述】:

Stage3D / AGAL 中,是否可以通过以下方式将单个 VertexBuffers 指向同一个 va0

  • 每个VertexBuffer 数据都可以独立更改(假设这在某些情况下表现出色,是吗?)。

  • 每个VertexBuffer关注va0(第一个顶点属性寄存器)的一个字段,因此vertexbuffer1操作va0.x,vertexbuffer2 = va0.y,vertexbuffer3 = va0.z,vertexbuffer4 = va0.w;

由于您可以在将 VertexBuffer 分配给 Context3D 对象时指定“偏移量”和数据格式(例如:FLOAT_1、FLOAT_4),我想这是可能的。

也许我的设置不正确,但是当我尝试这样做时,我无法实现。

每个 VertexBuffer 是否需要占用每个寄存器中的全部 4 个字段?如果是这样,我不确定我是否理解为什么存在 FLOAT_1 -to- FLOAT_3 值! :S

提前致谢!

【问题讨论】:

  • 我想我在查看 Axel (axgl.org) 的源代码时找到了解决方案。我稍后会发布一个详细的答案,但现在 - 看起来VertexBuffers 可以在不同的顶点属性寄存器中重复使用,并且在使用 FLOAT_2 时使用偏移量可以产生一些巧妙的解决方案。看起来不像单独的 VertexBuffers 可以分配给相同的顶点属性而不覆盖以前的。

标签: field allocation vertex-buffer stage3d agal


【解决方案1】:

当您分配顶点缓冲区或常量时,您分配 128 位(即 4 x 32)。而且您将被完全限制在一个属性(va0,va1)上。所以我认为不可能将不同的缓冲区绑定到单个属性。而且如果放FLOAT_1,就会浪费内存。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-11-02
    • 1970-01-01
    • 2015-06-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-24
    相关资源
    最近更新 更多