如何在 HLSL 中定义具有大维度的数组

How can I define an array with a large dimension in HLSL?

本文关键字:数组 HLSL 定义      更新时间:2023-10-16

有没有办法在 HLSL 中定义一个大数组或任何替代方案,因为我正在尝试将我的一些计算移动到 GPU。

我目前有

struct Buffer
{
    float3 image[640 * 480];   
};

但是我收到错误

error X3059: array dimension must be between 1 and 65536

如果我不必将其拆分,然后将它们合并回 CPU 上,那就太好了。

有没有办法解决这个问题?

更新

如评论中所述,将此数据存储为纹理更有意义,因为我尝试创建的数组存储像素数据。我尝试在 HLSL 文件中定义我的Texture2D,但我似乎无法编辑数据或写入纹理文件。

有谁知道如何做到这一点?

我找不到解决方案,但是由于我正在操作图像数据,使用RWTexture2D<float4>并提供读写访问权限似乎可以很好地实现我想要实现的目标。