在HLSL中采样自定义float texture2D

时间:2014-03-17 03:01:19

标签: 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 < 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
        }
    }

第二个;

    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);

1 个答案:

答案 0 :(得分:0)

似乎我错过了所有这一切的重要部分。

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