我在游戏中使用5种颜色的调色板,每次我将每种颜色作为list_of_floats = eval(“[-0.34354989003, 1.4838348]”)
传递给程序时。如果我使用包含所有5种颜色(纹理中有15个浮点数)的一维纹理,会更有效吗?
那只是我想做这种事情的一种情况。另一种方法是将所有矩阵/变量一次发送到着色器程序。我每次发送要渲染的变量时似乎都效率低下。将它们全部归为一个纹理,然后一次全部发送会更好吗?
也许还有另一种甚至更有效的方式来做我想做的事?
答案 0 :(得分:4)
如果我使用包含所有5种颜色(纹理中有15种浮点数)的一维纹理会更有效吗?
不,纹理读取最有可能会降低性能,但就您而言,应该不会有太大的不同。
也许还有另一种甚至更有效的方式来做我想做的事?
好吧,如果它们始终与您说的相同,则只需将它们作为常量放入着色器中即可。
那只是我想做这种事情的一种情况。另一种方法是将所有矩阵/变量一次发送到着色器程序。我每次发送要渲染的变量时似乎都效率低下。将它们全部归为一个纹理,然后一次全部发送会更好吗?
修改纹理不会比设置一些制服更快。
如果您要针对每个顶点或每个片段使用矩阵,则将导致大量纹理读取。实际上,这可能会导致性能大幅下降,具体取决于您拥有的顶点/片段/矩阵的数量。而且即使该纹理数据最终存储在L1纹理缓存中,它也不会超过统一读取。
如果您不想独立发送所有变量,则可以使用统一缓冲区对象。