【问题标题】:Initializing arrays with unknown size in HLSL在 HLSL 中初始化大小未知的数组
【发布时间】:2011-01-23 23:00:00
【问题描述】:

我有一个小的片段着色器,它对数组中的多个值进行操作,但是数组的大小存储在一个常量中。

数组声明如下:

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 中完全初始化一个我不知道其大小的数组?

【问题讨论】:

    标签: c arrays memory initialization hlsl


    【解决方案1】:

    看来我今天有点傻。只要你的步幅正确,上面列出的方法就可以很好地工作。

    结果:

    j + blurRadius + ((i+blurRadius)*blurRadius)
    

    不解决整个数组,所以当我还没有分配一个值时,其中一些被访问了。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-04-21
      • 2014-10-27
      • 1970-01-01
      • 2013-10-20
      • 2023-04-11
      • 1970-01-01
      相关资源
      最近更新 更多