【发布时间】:2014-02-10 23:37:53
【问题描述】:
我有一个关于 glsl 中属性float 的资源消耗的问题。
是否需要与vec4 一样多的资源,还是不需要?
我问这个,因为制服需要https://stackoverflow.com/a/20775024/1559666(至少,他们可以)
如果不是,那么将 4 个float 打包成一个vec4 属性是否有意义?
【问题讨论】:
-
驱动程序完全有可能无论如何都会进行优化
-
每个属性在 GLSL 中必须有自己的唯一位置。这是您在编写着色器时唯一可以依赖的存储限制,您知道 GLSL 提供了 16 个顶点属性槽的最小值(通常是最大值),并且一个槽足够大以存储
vec4机器类型。驱动程序无法将各个float属性组合到一个插槽中,每个属性都有自己的位置,float属性的数据仅占该位置总潜在存储空间的 1/4。所以float,在这种情况下,是相当浪费的。
标签: opengl attributes glsl