我一直在使用directx11编写一个程序,我还编写了一个基本的camera类来操作视图矩阵。当我测试程序时,结果是场景没有移动,但当我移动相机时,它具有切断在任意位置可见的效果。我附上了一些图片来表达我的意思。
我已经让我的像素着色器现在只输出红色像素。
我的顶点着色器基于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显示了世界、视图和投影矩阵似乎存在并正在应用,尽管很明显有些东西是不正确的。
谢谢。
发布于 2012-01-31 23:00:51
在将矩阵传递到着色器中之前,可以使用row_major修改器而不是转置矩阵
发布于 2012-01-31 19:43:19
数学失败,我发送了视图矩阵,而不是它的转置到着色器。
https://stackoverflow.com/questions/9074487
复制相似问题