【问题标题】:OpenGL ES 2.0 Vertex skinning maximum number of bones?OpenGL ES 2.0 顶点蒙皮最大骨骼数?
【发布时间】:2012-02-12 12:20:31
【问题描述】:

在绘制顶点蒙皮模型时,不同 iOS 设备每次绘制调用/批次的最大骨骼数是多少?

在 OpenGL ES 1.1 上,限制是由调色板矩阵的数量设置的,但是在 OpenGL ES 2.0 上,限制是什么?

【问题讨论】:

    标签: ios opengl-es opengl-es-2.0 skinning vertex


    【解决方案1】:

    OpenGL ES 2.0 使用着色器进行所有顶点处理。因此,这取决于您可以创建多少个统一矩阵。这是一个实现定义的限制,因此它因硬件而异。

    您还可以将四元数+位置用于骨骼而不是完整矩阵以节省空间。

    【讨论】:

    • 如果 ES 2.0 支持顶点纹理,您还可以为转换数据使用纹理,这可能会提供更多内存。但我想性能不会那么好。
    • 感谢您的回答!正如苹果herePowerVR SGX 上的 OpenGL ES 2.0 所指定的那样,“顶点着色器中最多支持 128 个统一向量”。这如何转化为最大数量的统一矩阵?
    • @JonasBromö:这取决于。如果你使用mat4s,那么你将数字除以4,得到32。如果你使用mat3x4s并做一些换位工作,那么你将数字除以3,得到42。如果你使用四元数+位置作为我建议,这只需要 2 个向量,所以你可以有 64 个。当然减去您可能需要的任何其他制服,例如投影矩阵或其他任何东西。
    • 嗨,我不相信这是正确的方法。顶点支持浮点矩阵数组的输入,类似于纹理。这应该支持许多矩阵,可能达到纹理的最大尺寸,所以我说的是数千个 3x3 矩阵,对吗?
    【解决方案2】:

    从 iOS 7 开始,您可以从顶点着色器访问纹理单元,因此您可以制作纹理,用矩阵填充它,然后从顶点着色器访问矩阵。这将允许访问更多矩阵,但代价是实现更复杂。

    【讨论】:

      猜你喜欢
      • 2013-07-20
      • 2012-10-15
      • 2021-12-16
      • 2022-11-21
      • 2011-11-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-07-23
      相关资源
      最近更新 更多