摄像头不寻常的行为,DX11
问题描述:
我一直在用directx11编写一个程序,并且我已经编写了一个基本的摄像头类来处理视图矩阵。当我测试程序时,结果是场景不移动,但是当我移动相机时,它具有切断在任意位置可见的效果。我附上了一些照片来展示我的意思。 摄像头不寻常的行为,DX11
我已经离开我的像素着色器,现在只输出红色像素。
我的顶点着色器是基于SDK的例子:
cbuffer cbChangeOnResize : register(b1) { matrix Projection; };
cbuffer cbChangesEveryFrame : register(b2)
{
matrix View;
matrix World;
};
struct VS_INPUT
{
float4 Pos : POSITION;
float2 Tex : TEXCOORD0;
};
struct PS_INPUT
{
float4 Pos : SV_POSITION;
float2 Tex : TEXCOORD0;
};
PS_INPUT TEX_VS(VS_INPUT input)
{
PS_INPUT output = (PS_INPUT)0;
output.Pos = mul(input.Pos, World);
output.Pos = mul(output.Pos, View);
output.Pos = mul(output.Pos, Projection);
output.Tex = input.Tex;
return output;
}
我一直在抓我的头一对夫妇对这个问题的天,但我不知道是什么原因造成这一点,或甚至哪些代码是相关的。 PIX表明,世界,视图和投影矩阵似乎存在并且正在被应用,虽然很明显某些事情是不正确的。
谢谢。
答
数学失败,我发送了视图矩阵,而不是它的转置到着色器。
移动是其渲染的场景的一部分似乎是正确的相机时,我注意到,那就是,有可能确定观看平截头体似乎在移动。这就是为什么在我的第二张照片中部分场景被切断。但是,场景渲染不正确。这就好像观看平截头体与相机的位置是分开的,尽管我认为两者都锁定在原点上。 – fabspro 2012-01-31 11:30:18
数学失败,我已经将视图矩阵而不是它的转置发送给着色器。 – fabspro 2012-01-31 11:42:46