在我的2D iOS OpenGL引擎中,我目前通过在CPU上创建一个浮点数组来绘制所有内容,该数组填充了我想要绘制的对象框的坐标点,使用该数组调用glVertexAttribPointer,然后使用glDrawArrays。这种方法非常完美,即使对于许多物体也非常快。 iOS OpenGL分析器虽然不是很高兴。它建议使用VBO。 我之所以没有从头开始使用它们的原因是没有任何东西真正“静态”足以让VBO有意义。这个引擎的本质是如此动态,我无法真正“缓存”任何东西。物体可以是任何尺寸,比例,并可在任何给定时间旋转到任何角度。 我知道使用我当前的方法不是很好,并且它用于绘制批次 - 但它到目前为止工作得很好。
问题是 - 使用1x1大小的VBO然后通过设置统一矩阵而不是仅仅计算CPU上的顶点来修改它的外观会更快吗?每个想要绘制的对象只计算4个点。我只是不知道更新统一值是否比将顶点传输到GPU更快。将顶点从CPU传输到GPU是8个浮点数。传输新的变换矩阵是16个浮点数(4x4矩阵)。那么更新均匀的顶点数据的好处是否比证明数据传输的两倍更合理呢?
是否有更好/更快的方式来绘制大量不断变化的物体?