我有一个小片段着色器,它对数组中的许多值进行操作,但是数组的大小存储在一个常量中。
数组声明如下:
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中不知道大小的数组?
最佳答案
今天我好像有点傻。只要你的步幅正确,上面列出的方法就可以很好地工作。
结果是:
j + blurRadius + ((i+blurRadius)*blurRadius)
不处理整个数组,因此稍后在我尚未分配值时访问了其中一些数组。
关于c - 在HLSL中初始化大小未知的数组,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4777143/