我有很多顶点着色器使用不同的顶点组件。有些处理相当大的顶点[位置,4个UV通道,2个颜色通道,法线,骨骼权重],而另一些则使用小的顶点[例如位置和法线]。
我能(用
glBindAttribLocation()
)每个组件使用相同的
index
在每个材质球中,即使该属性不存在于材质球中,
无绩效惩罚
?
例如:
glBindAttribLocation(programID, 0, "p");
glBindAttribLocation(programID, 1, "uv");
glBindAttribLocation(programID, 2, "uv1"); // these are used only in certain shaders
glBindAttribLocation(programID, 3, "uv2");
glBindAttribLocation(programID, 4, "uv3");
glBindAttribLocation(programID, 5, "n"); // commonly used across most shaders
...
我担心的是,如果一个明暗器使用的组件很少,但未使用的组件是活动的,或者使用的组件处于非传染性索引,该明暗器将不得不为它不使用的组件付费。