Directx 在HLSL中采样自定义浮点纹理2D

Directx 在HLSL中采样自定义浮点纹理2D,directx,shader,hlsl,directx-11,Directx,Shader,Hlsl,Directx 11,我想知道如何对传递给着色器文件的数据进行采样。我用两种方法,两种方法都一样吗?网上有什么资源可以让我真正了解这类事情吗 在5.0下编译,但版本号并不重要 我有两种方法来传递数据 第一, for( UINT row = 0; row < textureDesc.Height; row++ ) { UINT rowStart = row * mappedResource.RowPitch; for( UINT col = 0; col <

我想知道如何对传递给着色器文件的数据进行采样。我用两种方法,两种方法都一样吗?网上有什么资源可以让我真正了解这类事情吗

在5.0下编译,但版本号并不重要


我有两种方法来传递数据

第一,

    for( UINT row = 0; row < textureDesc.Height; row++ )
    {
        UINT rowStart = row * mappedResource.RowPitch;
        for( UINT col = 0; col < textureDesc.Width; col++ )
        {
            //width * number of channels (r,g,b,a)
            UINT colStart = col * 4;
            pTexels[rowStart + colStart + 0] = 10.0f; // Red
            pTexels[rowStart + colStart + 1] = 10.0f; // Green
            pTexels[rowStart + colStart + 2] = 255.0f; // Blue
            pTexels[rowStart + colStart + 3] = 255.0f; // Alpha
        }
    }
for(UINT行=0;行
第二

    float elements[416][416];
    int elementsCount = 416*416;

    for( int i = 0; i < 416; i++ )
    {
        for( int k = 0; k < 416; k++ )
        {
            elements[i][k] = 0;
        }
    }

    memcpy(mappedResource.pData, elements, sizeof(float) * elementsCount);
float元素[416][416];
int ELEMENTSCONT=416*416;
对于(int i=0;i<416;i++)
{
对于(int k=0;k<416;k++)
{
元素[i][k]=0;
}
}
memcpy(mappedResource.pData,elements,sizeof(float)*elementscont);

似乎我错过了这一切的一个重要部分


创建纹理时,在纹理描述中,是采样对象时将返回的类型。非常感谢Drop的帮助。

似乎是您手动创建纹理,如果您想简化过程,为什么不将其与文件相同并通过DirectX加载?@Dino(1)shader中的采样并不关心您如何将数据复制到纹理中。因此,如果您以不同的方式复制相同的数据,HLSL也是一样的。(2) 你要读什么还不太清楚。你只需要样本纹理?然后使用。你需要采样教程吗?现在有很多。请精确回答您的问题,以获得有意义的答案。zdd我需要手动创建它,它会在每一帧更新@我可以简单地对它进行采样,它就会知道它包含一个浮点数?即使这些浮动是使用memcpy设置的?我的问题实际上是如何访问着色器文件中的数据。所以要得到元素[x][y],它应该是float val=Texture.Sample(Texture,texcoord)?我只是不确定GPU将如何解释纹理中的数据或它期望的是什么,所以我不确定如何在着色器文件中读取数据。采样在许多方面与数组访问不同。如果您查看上面的链接,可以看到该纹理。示例(纹理,texcoord)将返回类型值,具体取决于创建纹理时使用的DXGI_格式。将纹理用作阵列时会出现一些问题。如果您需要类似HLSL端的C数组,请使用(需要SM 5.0,限制在SM 4.0上)。@Drop我在读取链接之前已回复,我已让它读取传递到纹理的数据,但我忘记回复。StructuredBuffers是否比用作数组的采样纹理更有效顺便说一句,谢谢你的帮助。