我有一个小片段着色器,可以对数组中的多个值进行操作,但是数组的大小存储在一个常量中。
数组声明如下:
float4 colors[(blurRadius*2+1)*(blurRadius*2+1)];
然后我继续使用for循环
为它们分配值for(int i = -blurRadius; i<= blurRadius; i++)
{
for(int j = -blurRadius; j<=blurRadius;j++)
{
colors[j + blurRadius + ((i+blurRadius)*blurRadius)]=float4(0,0,0,0);
}
}
但是,运行时代码返回时出现以下编译器错误:
error X4000: variable 'colors' used without having been completely initialized
如何在HLSL中完全初始化一个我不知道的大小的数组?
答案 0 :(得分:1)
原来:
j + blurRadius + ((i+blurRadius)*blurRadius)
不解决整个数组,所以当我还没有分配值时,其中一些后来被访问。