代码之家  ›  专栏  ›  技术社区  ›  pestilence669

iPhone上压缩顶点阵列的最佳排序

  •  2
  • pestilence669  · 技术社区  · 16 年前

    iPhone硬件上的顶点阵列是否有最佳的封装格式?我的纹理(三角形)数组是按顺序排列的:

    1. 顶点(x,y,z)
    2. 顶点法向(X,Y,Z)
    3. 纹理坐标(u,v)

    这是我一贯的做法。紫外线应该早于正常值吗?我不确定是否重要。我认为纹理和照明单元会有一个偏好,但我找不到任何关于它的内容。我当然看不出有什么不同。

    4 回复  |  直到 15 年前
        1
  •  2
  •   Brad Larson    16 年前

    从iPhone OpenGL ES Programming Guide :

    在OpenGL ES中,您可以启用 将你的应用需求和 提供指向该数组的指针 数据类型。OpenGL ES允许您 指定一个步幅,它提供 应用灵活性 提供多个阵列(也称为 作为数组结构)或单个 单顶点格式的数组 结构数组)。

    应用程序应使用数组 具有单个交错结构的 顶点格式。交错数据 提供比 为每个使用单独的数组 属性。

    您可能需要分离出属性 以频率更新的数据 与其他顶点不同 数据(如__Vertex Buffer中所述 用法>同样,如果属性数据 可以在两个或更多人之间共享 几何学的碎片,把它分开 可能会减少内存使用。

    在当前的文档中似乎没有任何推荐的订购方式,但是有一个Technote(TN2230)正在为iPhone调优OpenGL ES,它似乎已经消失了。其中有以下句子:

    为了获得最佳性能,交织 单个组件的顺序 位置,正常,颜色,texcoord0, texcoord1,点大小,权重, 矩阵索引

    请注意,此技术说明可能已被删除,因为其中包含的信息不正确或过时。我不知道我在用这种方式排列顶点缓冲区对象时看到了很大的进步,当然不是简单地使用gl-short而不是gl-float来减小几何体的大小。

        2
  •  1
  •   Pivot    16 年前

    顶点属性的排序实际上只与运行iPhone OS 3.1或更高版本的旧设备(iPhone 2G/3G和iPod touch 1G/2G)相关,如果排序与TN2230中的旧设备匹配,则可以更高效地提交顶点数据。这不会增加GPU端的顶点吞吐量,但会导致CPU使用率降低。正如布拉德所观察到的,如果你想通过GPU推更多的顶点,你最好的办法就是把它们变小。

        3
  •  0
  •   Nils Pipenbrinck    16 年前

    这没什么区别。

        4
  •  0
  •   Jonathan Hartley Zombie    15 年前

    既然iPhone只有少量的硬件实现,你难道不能通过经验来衡量性能,并确定哪种方法在实践中比理论上更快吗?