Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/mercurial/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Direct3d 未定义的TEXCOORDs数_Direct3d_Hlsl - Fatal编程技术网

Direct3d 未定义的TEXCOORDs数

Direct3d 未定义的TEXCOORDs数,direct3d,hlsl,Direct3d,Hlsl,如何声明TEXCOORDs数组? 在不同的结构中,我有: float2 foo : TEXCOORD0 float3 bar : TEXCOORD1 现在我需要 float4 Positions[NUMBER_OF_FLOATS] float3 OtherPositions[NUMBER_OF_FLOATS_2] 我希望这些数组由TEXCOORDs组成(如果我省略TEXCOORD语义,我会因此得到一个错误)。但无论我如何编写,我都会得到一个重复的错误,即我多次使用TEXCOORD0和TEX

如何声明TEXCOORDs数组? 在不同的结构中,我有:

float2 foo : TEXCOORD0 
float3 bar : TEXCOORD1
现在我需要

float4 Positions[NUMBER_OF_FLOATS]
float3 OtherPositions[NUMBER_OF_FLOATS_2]
我希望这些数组由TEXCOORDs组成(如果我省略TEXCOORD语义,我会因此得到一个错误)。但无论我如何编写,我都会得到一个重复的错误,即我多次使用TEXCOORD0和TEXCOORD1


非常感谢您的帮助。

问题在于预定义的语义(如TEXCOORD)具有特定的类型(如中所示)。因此,编译器希望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
...
当然,如果数量发生变化,并且必须适应顶点布局,则需要对着色器进行重新组合,但尽管这不是最佳解决方案,但它对我来说仍然有效:)