如何在HLSL中定义具有大尺寸的数组?

时间:2017-11-09 19:33:41

标签: c++ directx hlsl

有没有办法在HLSL中定义一个大型数组,或者我正在尝试将一些计算移到GPU上。

我目前有

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

但我收到了错误

error X3059: array dimension must be between 1 and 65536

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

有解决方法吗?

更新

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

有谁知道怎么做?

1 个答案:

答案 0 :(得分:0)

我无法找到解决方案但是当我操作图像数据时,使用RWTexture2D<float4>并提供读写访问似乎可以正常工作。