2014-09-10 82 views
0

我有两种方法发送两个变量到我的顶点:Opengl ES 2.0 Vertex - 哪种方式更有效率?

A,使用两个属性发送两个变量。 B,将两个变量合并为一个,例如'Mix = Var1 * 100 + Var2',并且只发送一个属性'Mix'到我的顶点。在顶点代码中,我使用一些计算来呈现'Var1'和'Var2'。

我不知道哪种方式更有效率(花费更少的时间)。

任何想法?

+2

我也不知道。 (*提示:知道它的知识*) – 2014-09-10 12:02:43

+0

也是变量标量或向量。如果它们是矢量,它们具有哪个维度? – datenwolf 2014-09-10 12:13:40

+0

我认为这只是Glfloat。 – 2014-09-10 12:28:02

回答

0

如果这是您的一个极其奇怪的原因的瓶颈,您可以通过一些大量的迭代来剖析2种方法,以查看差异。你应该知道,即使在得到这个结果之后,你应该考虑在不同的设备上进行相同的测试,因为输出可能会因为不同的GPU而发生变化。

如果您确实选择使用B方法,您应该输入一个整数值,而不是乘以100并将其除以100,尝试使用按位操作,如32位整数中的Var1<<16 + Var2。这意味着一个值将会占用前16位,另一个值将占用第二个16位,这些操作速度非常快。

既然你问了这个问题,它表明这个操作不是你的瓶颈,也不会是,你只是问,因为你希望你的代码快。如果这是真的,那么不要担心这种算法的速度性能,而是问问自己,你的代码将如何更易于维护。 A方法似乎更直接,会使代码易读和可维护,所以我会选择那一个。除此之外,如果你在某些时候决定这些值将会变得太大以至于无法打包2合1,那么将代码从B转换为A会有相当大的问题;如果你使用A并且最后需要额外的性能增益(假设B以某种方式更快),那么你真正需要做的就是编写这两行算法并注释一个额外的属性。所以从这个角度来看,你应该选择A.