你如何可靠地(u,v)将纹理索引为向量的二维数组?

时间:2011-12-13 02:17:59

标签: gpu gpgpu direct3d11

使用着色器模型5 / D3D11 / HLSL。

我想将2D纹理像素数据视为向量的二维矩阵

      u
v (1,4,3,9)   (7, 5.5, 4.9, 2.1)

(每个纹素是4分量向量)。对于不同的着色器,我需要访问纹理中特定范围的数据。因此,纹理中访问的范围自然应该被索引为u,v components。

我如何在HLSL中做到这一点?我在想以下几点:

  • 按照正常
  • 创建纹理
  • 将矢量值加载到纹理中(每个纹素1个矢量)
  • 关闭纹理采样的所有线性插值(“最近邻居”)
  • 在着色器中,使用纹理坐标
  • 查找所需的矢量

我唯一觉得不稳定的是当我使用浮点u和v来索引纹理时是否会出现奇怪的错误。

如果纹理是1024x1024纹素,并且我想索引(3,2) - >(3,7),那将是u =(3 / 1024,2 / 1024) - >(3 / 1024,7 / 1024)感觉有点不稳定。有没有办法用int组件索引纹理?或者它会好起来吗?

Texture2DArray

不希望仅为此使用GPGPU框架(所以没有CUDA建议请:)。

1 个答案:

答案 0 :(得分:0)

您可以使用hlsl 5.0中的operator[]

来完成此操作

See here