如何声明TEXCOORD数组? 在不同的结构中,我有:
float2 foo : TEXCOORD0
float3 bar : TEXCOORD1
现在我需要
float4 Positions[NUMBER_OF_FLOATS]
float3 OtherPositions[NUMBER_OF_FLOATS_2]
我希望这些数组由TEXCOORD组成(如果省略TEXCOORD语义,我会因此而收到错误)。但无论我如何写它,我都会遇到重复错误,我多次使用TEXCOORD0和TEXCOORD1。
感谢任何帮助。
答案 0 :(得分:0)
问题在于像TEXCOORD这样的预定义语义具有特定类型(见doc)。因此编译器希望TEXCOORD是浮点向量而不是浮点向量数组。也许它适用于自定义语义,但没有找到任何引用,也从未自己测试过。
我也偶然发现了这个问题并用预处理器解决了它(非常难看)。在你的情况下,它看起来像
#if NUMBER_OF_FLOATS > 0
float4 Position_1 : TEXCOORD0;
#endif
#if NUMBER_OF_FLOATS > 1
float4 Position_2 : TEXCOORD1;
#endif
#if NUMBER_OF_FLOATS > 2
float4 Position_3 : TEXCOORD2;
#endif
...
当然,如果数字发生变化并且顶点布局必须适合,则需要重新编译着色器,但是尽管它不是最适合我的解决方案:)