2

我已经开始使用android,所以我正在开发一个小游戏(主要用于学习目的)。我的游戏有一个简单的 2d 非滚动地图,并且我有许多将放置在地图中的对象。对象已经在它们的类中进行了静态建模,我了解如何将它们转换为浮点缓冲区并将它们发送到着色器。

我了解模型、视图和项目矩阵的要点,但我听说在着色器中进行翻译或为每个对象传递特定模型矩阵效率低下。

我如何以最佳方式获取建模对象,并将它们放置在地图上的适当位置(世界坐标)?该转换应该发生在哪里(在着色器之前或期间?作为模型矩阵的一部分?)

(如有必要,伪代码足以回答。)

谢谢!

4

1 回答 1

1

这一切都归结为(模型的)多少顶点与单个平移(变换的变化)的比率。作为一般规则,为了渲染大部分几何图形,如果您想最大化管道,则应该为给定的制服发送至少 100 个顶点。请注意,如果您的顶点总数相对较少,大约低于 10000,您可能不会注意到现代系统上的任何性能损失。

所以,如果你的对象是不平凡的,即有大量的顶点,改变制服是要走的路。如果您的对象很简单,则将它们放入共享顶点数组中,并在一个统一的变换数组中添加一个额外的顶点属性索引将更好地利用管道。

这实际上取决于您的对象有多复杂。

于 2012-11-22T01:28:44.543 回答