在 HLSL 中初始化未知大小的数组

发布于 2024-10-13 05:23:24 字数 558 浏览 4 评论 0原文

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

该数组声明如下:

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 中不知道大小的数组?

I have a small fragment shader that operates on a number of values in an array, however the size of the array is stored in a constant.

The array is declared as follows:

float4 colors[(blurRadius*2+1)*(blurRadius*2+1)];

and then I proceed to assign them values using a for loop

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);
    }
}

however, when run the code comes back with the following compiler error:

error X4000: variable 'colors' used without having been completely initialized

How do I completely initialize an array whose size I don't know in HLSL?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

蓝颜夕 2024-10-20 05:23:24

看来我今天有点白痴了。只要你的步幅正确,上面列出的方法就非常有效。

结果是:

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

没有寻址整个数组,因此当我尚未分配值时,其中一些数组后来被访问。

Seems I'm a bit of an idiot today. The method listed above works perfectly fine, as long as your stride is correct.

Turns out:

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

Doesn't address the whole array, so some of it was later being accessed when I'd yet to assign a value.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文