我一直在使用directx11 编写程序,并且编写了一个基本的相机类来操作视图矩阵。当我测试程序时,结果是场景没有移动,但是当我移动相机时,它具有切断任意位置可见的效果。我附上了一些图片来说明我的意思。
我现在让我的像素着色器只输出红色像素。
我的顶点着色器基于 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 显示世界、视图和投影矩阵似乎存在并且正在被应用,尽管很明显有些事情是不正确的。
谢谢你。