hlsl文件如下
//---------------------------------
Texture2D DiffuseTexture : register(t0);
SamplerState TextureSampler : register(s0);
cbuffer Transforms
{
matrix WorldMatrix;
matrix ViewMatrix;
matrix ProjMatrix;
};
//---------------------------------
struct VS_INPUT
{
float4 position : POSITION;
float4 color : COLOR;
float2 tex : TEXCOORD0;
};
struct VS_OUTPUT
{
float4 position : SV_POSITION;
float4 color : COLOR;
float2 tex : TEXCOORD0;
};
//----------------------------------
VS_OUTPUT VSMain(in VS_INPUT v)
{
VS_OUTPUT o;
float4 WorldSpace = mul(v.position, WorldMatrix);
float4 ViewSpace = mul(WorldSpace, ViewMatrix);
float4 ScreenSpace = mul(ViewSpace, ProjMatrix);
o.position = ScreenSpace;
o.color = v.color;
output.tex = input.tex;
return o;
}
//-----------------------------------
float4 PSMain(in VS_OUTPUT input) : SV_Target
{
float4 sampledTextureColour = DiffuseTexture.Sample(TextureSampler, input.tex);
return(sampledtexturecolour);
}
有谁知道到底是什么导致了这个错误?
一直在努力寻找在线 Heiroglyph3 资源
尝试运行 heiroglpyh3 项目以使用上述 hlsl 着色器文件加载纹理球体,但出现如图所示的错误
问题出在
VSMain()
:output.tex = input.tex;
output
没有在任何地方声明。您的意思可能是o.tex
。
即使您修复了该问题,您也会遇到的另一个问题是在同一行上使用
input
,因为它也没有声明。您仅在PSMain()
中声明了它。我怀疑正确的使用方法是o.tex = v.tex;