我已经开始使用android了,所以我正在开发一个小游戏(主要用于学习目的)。我的游戏有一个简单的2d非滚动地图,我有很多对象将被放置在地图中。这些对象已经在它们的类中静态建模,我理解如何将它们移动到浮点缓冲区并将它们发送到着色器。
我理解模型,视图和项目矩阵的要点,但我听说在着色器中进行转换,或者为每个对象传递特定的模型矩阵是低效的。
如何以最佳方式拍摄建模对象,并将它们放置在地图上的适当位置(世界坐标)?应该在哪里进行转换(在着色器之前或之后?作为模型矩阵的一部分?)
(如果需要,伪代码足以回答。)
谢谢!
答案 0 :(得分:1)
这一切都归结为(单个模型的)顶点到单个平移(变换的变化)的比率。作为一般规则,对于渲染大量几何体,如果要最大化管道,则应为给定的制服发送至少100个顶点。请注意,如果您的顶点总数相对较小,大约小于10000,那么您可能不会注意到现代系统上的任何性能问题。
因此,如果您的对象非常重要,即具有大量顶点,那么改变制服就是最佳选择。如果您的对象很简单,将它们放入一个共享的顶点数组,并将一个额外的顶点属性索引到一个统一的转换数组中,将更好地利用该管道。
这实际上取决于对象的复杂程度。