使用Texture1D而不是制服

问题描述 投票:1回答:1

我使用的5种颜色调色板在我的游戏,每一次,我路过的每一个颜色作为uniform vec3的程序。难道是更有效的,如果我使用一个包含所有5种颜色(15个漂浮在纹理)一个维纹理?

这只是在那里我愿做这样的事情的情况之一。另一个办法是一次发送所有矩阵/变量的着色器程序。我似乎有点低效的每一个变量,一个在那个时候,我想渲染每次发送。它会更好,以他们全部组在一个单一的纹理并立即给他们呢?

是否有另一种可能,更高效的在做什么,我试图做的方法是什么?

opengl opengl-es
1个回答
4
投票

难道是更有效的,如果我使用一个包含所有5种颜色(15个漂浮在纹理)一个维纹理?

不,纹理读是最有可能会较少的性能,但在你的情况下,它不应该太大的差别。

是否有另一种可能,更高效的在做什么,我试图做的方法是什么?

好吧,如果他们总是一样的,你说,那只是把它们作为着色器常量。

这只是在那里我愿做这样的事情的情况之一。另一个办法是一次发送所有矩阵/变量的着色器程序。我似乎有点低效的每一个变量,一个在那个时候,我想渲染每次发送。它会更好,以他们全部组在一个单一的纹理并立即给他们呢?

修改纹理是不会被任何更快然后设置几个制服。

如果你要使用你的矩阵每顶点或每片段,那么就会造成大量的纹理读取。这实际上可能导致显著性能下降,这取决于顶点/片段/矩阵你有量。即使纹理数据L1纹理缓存结束,它仍然不会超越统一读取。

如果你不想单独发送所有的变量,你可以使用统一的缓冲对象。

© www.soinside.com 2019 - 2024. All rights reserved.