如何在HLSL中使用庞大的数组(错误X4505)

时间:2015-06-09 12:47:23

标签: arrays directx shader hlsl

当我尝试编译时,我收到错误:

  

X4505:临时寄存器和可索引临时寄存器的总和超出限制   4096。

但我的着色器 FX Composer 中有效。

它崩溃的原因可能是因为我使用了一个非常大的数组,因为我正在使用行进立方体。

const static int edgeTable[256] = ...
const static int triTable[256][16] = ...

我应该如何使用这些数组? (D11)

1 个答案:

答案 0 :(得分:0)

https://msdn.microsoft.com/en-us/library/windows/desktop/ff476898(v=vs.85).aspx#Shader_Constant_Buffer

每个着色器阶段最多允许15个着色器常量缓冲区;每个缓冲区最多可容纳4096个常量。