1
Я знаю, как отражать постоянные буферы, но как отражать текстуры? Вот мой шейдер:Отражая регистр текстуры из шейдера HLSL по имени
cbuffer buffer : register(b0)
{
column_major matrix viewProjectionMatrix;
column_major matrix modelMatrix;
float4 texScaleOffset;
float4 tint;
}
struct VS_INPUT
{
float4 Pos : POSITION;
float2 Tex : TEXCOORD0;
};
struct PS_INPUT
{
float4 Pos : SV_POSITION;
float2 Tex : TEXCOORD0;
};
PS_INPUT VS(VS_INPUT input)
{
PS_INPUT output = (PS_INPUT)0;
output.Pos = mul(viewProjectionMatrix, mul(modelMatrix, input.Pos));
output.Tex = input.Tex * texScaleOffset.xy + texScaleOffset.zw;
return output;
}
Texture2D textureMap : register(t0);
SamplerState SampleType : register(s0);
float4 PS(PS_INPUT input) : SV_Target
{
return textureMap.Sample(SampleType, input.Tex);
}
Так как я запрос номер регистра textureMap от C++, если я знаю его имя («textureMap»)? Мой вариант использования - это механизм, который позволяет пользователям писать свои собственные шейдеры, поэтому я не могу кодировать любые значения.