Cannot set two textures to shader in dx11

1

I want to set two textures to shader, but when i sample second i get color of first one. Textures haves various size, so i cannot use array. What may be wrong?

    //-- fill and set interface dynamic texture

    D3D11_MAPPED_SUBRESOURCE msr;
    devcon->Map(Interface_DynamicTexture, 0, D3D11_MAP_WRITE_DISCARD, 0, &msr);
    memcpy(msr.pData, ibb, ibw*ibh*4);
    devcon->Unmap(Interface_DynamicTexture, 0);

    devcon->PSSetShaderResources(0, 1, &Interface_DynamicTexture_SRV);

    //-- set 3d render target as textures

    devcon->PSSetShaderResources(1, 1, &Render_SRV);

    //-- render to back buffer

    devcon->VSSetShader(PostProcess_VertexShader, 0, 0);
    devcon->PSSetShader(PostProcess_PixelShader, 0, 0);

    devcon->IASetInputLayout(ScreenPlane_Layout);
    UINT stride = sizeof(ScreenPlane_Vertex);
    UINT offset = 0;
    devcon->IASetVertexBuffers(0, 1, &ScreenPlane_Buffer, &stride, &offset);
    devcon->IASetPrimitiveTopology(D3D10_PRIMITIVE_TOPOLOGY_TRIANGLELIST);

    devcon->OMSetBlendState(Interface_BlendState, 0, 0xffffffff);
    devcon->OMSetRenderTargets(1, &BackBuffer_Target, NULL);
    devcon->ClearRenderTargetView(BackBuffer_Target, D3DXCOLOR(0.0f, 0.0f, 0.4f, 1.0f));
    devcon->Draw(6, 0);

    swapchain->Present(options.graphics.vsync, 0);
Texture2D interf;
Texture2D color;

SamplerState SampleType
{
    Filter = MIN_MAG_MIP_LINEAR;
    AddressU = Wrap;
    AddressV = Wrap;
};

struct IN
{
    float4 unsigned_short2: SV_POSITION;
    float2 tex: TEXCOORD0;
};

float4 main(IN i): SV_TARGET
{
    return color.Sample(SampleType, i.tex);
}

I tried : register(tXX); but it didn't work.

c++
hlsl
asked on Stack Overflow Apr 21, 2019 by 8up tuotlo • edited Apr 22, 2019 by EdChum

0 Answers

Nobody has answered this question yet.


User contributions licensed under CC BY-SA 3.0