我有一个顶点着色器(2.0)做一些实例化——每个顶点都指定一个数组的索引。
如果我有这样的数组:
float instanceData[100];
编译器为其分配了 100 个常量寄存器。每个常量寄存器都是 a float4
,因此它分配了所需空间的 4 倍。
我需要一种方法让它只分配 25 个常量寄存器并在每个寄存器中存储四个值。
理想情况下,我想要一种在 CPU 和 GPU 上仍然看起来像 a 的方法float[]
(现在我正在调用EffectParamter.SetValue(Single[])
,我正在使用 XNA)。但是手动打包和解包 afloat4[]
也是一种选择。
另外:这样做对性能有什么影响?它真的值得吗?(对我来说,这将在每四五个中节省一批)。