У меня есть Texture2D, легко доступный; У меня есть явно работающий образец текстуры шейдера и переменная текстуры шейдера, в которую я могу поместить эту Texture2D.
Единственная проблема в том, что я не знаю, как загрузить текстуру в шейдер в DirectX11 - и либо Google бесполезен, либо я просто не могу составить хорошие условия поиска.
Что мне нужно: код, который возьмет Texture2D и загрузит его в шейдер. Ссылка о том, как это сделать, например.
В любом случае, вот мой код шейдера:
cbuffer CameraSet : register(b0)
{
float4x4 ViewProj ;
} ;
cbuffer MeshSet : register(b1)
{
float4x4 World ;
texture2D Texture ;
SamplerState MeshTextureSampler
{
Filter = MIN_MAG_MIP_LINEAR ;
AddressU = WRAP ;
AddressV = WRAP ;
} ;
} ;
struct VShaderOutput
{
float4 WorldPosition : POSITION ;
float4 ScreenPosition : SV_POSITION ;
float2 UV : TEXCOORD;
} ;
VShaderOutput VShader( float4 position : POSITION, float2 uv : TEXCOORD )
{
VShaderOutput r ;
r.WorldPosition = mul( position, World ) ;
r.ScreenPosition = mul( r.WorldPosition, ViewProj ) ;
r.UV.x = abs( uv.x ) ;
r.UV.y = abs( uv.y ) ;
return r ;
}
struct PShaderOutput
{
float4 SV_Target : SV_TARGET ;
float SV_Depth : SV_DEPTH ;
};
PShaderOutput PShader( VShaderOutput input )
{
PShaderOutput r ;
r.SV_Depth = input.ScreenPosition.z;
r.SV_Target = Texture.Sample( MeshTextureSampler, input.UV ) ;
return r ;
}
Спасибо.