在DirectX 11中将纹理数组发送到着色器

丹尼X

我几乎没有要在HLSL着色器中设置为数组的纹理。每个纹理都表示为ID3D11ShaderResourceView *。每个纹理的大小可能不同。

现在,如果我在D3D中将它们设置为数组:

ID3D11ShaderResourceView* m_array[3];

    m_array[0] = ...;
    m_array[1] = ...;
    m_array[2] = ...;

    m_deviceContext->PSSetShaderResources(
        0,  // Start slot
        3,  // Nb of textures
        m_array); // Array

在我的HLSL着色器中,我声明:

Texture2D       g_textures[3];

是否可以正确映射?

死的

通常,这是一种可用于将纹理数组从运行时映射到着色器执行的方法。数组中的纹理尺寸是否匹配并不重要,但是,您可能需要在着色器代码中考虑到这一点,具体取决于对纹理的采样方式。

另外,在您的HLSL中,您假设将g_textures数组分配给插槽0,因此如果由于某种原因它实际上并没有到达插槽(例如,着色器源中之前有另一个纹理资源),则您不会将目标资源设置为正确的插槽。我发现最好明确地映射它们,例如:

Texture2D g_textures[3] : register(t0);

如果存在冲突,则会在(着色器)编译时找到它。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在DirectX 11中将纹理数组发送到着色器

来自分类Dev

C ++中的着色器和Directx11编译

来自分类Dev

将密钥发送到DirectX游戏

来自分类Dev

Directx:基于HLSL纹理的高度图。(着色器5.0)

来自分类Dev

DirectX 11:BOUND着色器资源视图的数量

来自分类Dev

DirectX11:从计算着色器读取模具位

来自分类Dev

DirectX11 HLSL着色器未运行

来自分类Dev

编译DirectX11着色器文件

来自分类Dev

编译着色器时出错 - DirectX11

来自分类Dev

在DirectX 11中渲染

来自分类Dev

DirectX纹理错误

来自分类Dev

DirectX 11领域

来自分类Dev

Directx 11内存管理

来自分类Dev

DirectX 11效果

来自分类Dev

DirectX 11视频播放

来自分类Dev

DirectX 11骨骼动画

来自分类Dev

DirectX 11访问冲突

来自分类Dev

DirectX 11效果

来自分类Dev

DirectX中的色度键

来自分类Dev

使用DirectX11像素着色器将颜色从DXGI_FORMAT_B8G8R8A8_UNORM转换为GPU中的NV12

来自分类Dev

DirectX11 - 几何着色器流输出流未定义

来自分类Dev

Directx Assimp 错误的纹理坐标

来自分类Dev

DirectX:渲染到Texture2DArray,并在计算着色器中从中加载

来自分类Dev

使用SendInput包装器将击键发送到DirectX应用程序时出现问题

来自分类Dev

使用SendInput包装器将击键发送到DirectX应用程序时出现问题

来自分类Dev

将纹理映射到DirectX球体?

来自分类Dev

DirectX 11 Make a square.

来自分类Dev

DirectX 11:创建多个对象

来自分类Dev

DirectX11-矩阵转换