DirectX中从单通道纹理中采样

3

我有一个以DXGI_FORMAT_R32_FLOAT格式化的2D纹理。在我的像素着色器中,我这样对它进行采样:

float sample = texture.Sample(sampler, coordinates);

这会导致以下编译器警告:

警告 X3206: 向量类型的隐式截断

我对此感到困惑。根据示例,应该返回单个通道,因此是标量值,而不是向量吧?
我使用的着色器模型为4级9_1。
1个回答

3

要么将您的纹理声明为单通道,要么指定您想要的通道。没有 <float> 部分,它会假设它是一个四通道纹理,因此 Sample 将返回 float4。

Texture2D<float> texture;

或者

float sample = texture.Sample(sampler, coordinates).r;

纹理在 CPU 端声明为 R32_FLOAT。在 GPU 端,我的纹理目前在着色器中声明为“Texture2D纹理”。我需要做些什么来指定它只有一个通道吗? - Justin R.
哦,我明白了,StackOverflow的格式化删除了两个'<float>'实例。'Texture2D<float> texture;'这就是你想要的,我会编辑我的答案。 - Adam Miles

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接