2

我是 OpenGL ES 2.0 的新手,我正在尝试一些 2-D 渲染。

假设每个对象都会被平移、旋转、倾斜和缩放,并且可以通过鼠标单击来选择,我现在有两个选择:

  • 为每个变换存储一个矩阵,并将它们分别传递给顶点着色器。矩阵乘法将在 GPU 上完成,我想这会更快。当只改变一个变换矩阵时也很方便。决定选择有点重,因为我需要将每个矩阵应用于一个向量。

  • 只存储一个矩阵作为所有变换矩阵的乘积并将其传递给顶点着色器。这可能很好,因为某些方法(例如Matrix.scaleM()Matrix.translateM())速度很快并且不需要乘法。这也是因为我们每帧上传到着色器的统一数据减少了。但每次变换矩阵之一改变时,都应该重新计算整个乘积。决定选择相对简单,因为我只需要将单个矩阵应用于向量。

    欢迎任何关于选择的建议。

  • 4

    1 回答 1

    2

    如果执行基准测试会更好,因为性能与多个关注点有关:

  • CPU和GPU的乘法性能差距。
  • 上传制服的带宽。
  • 应用变换的顶点数。
  • 仅将一个转换矩阵标记为脏的可能性。
  • 改变变换参数的频率。

    通常可以在本地执行此操作,因为在仅涉及 2D 对象时可以轻松优化矩阵乘法。

  • 于 2012-04-22T12:08:10.803 回答