2012-01-31 61 views
0

我一直在用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表明,世界,視圖和投影矩陣似乎存在並且正在被應用,雖然很明顯某些事情是不正確的。

謝謝。

+0

移動是其渲染的場景的一部分似乎是正確的相機時,我注意到,那就是,有可能確定觀看平截頭體似乎在移動。這就是爲什麼在我的第二張照片中部分場景被切斷。但是,場景渲染不正確。這就好像觀看平截頭體與相機的位置是分開的,儘管我認爲兩者都鎖定在原點上。 – fabspro 2012-01-31 11:30:18

+0

數學失敗,我已經將視圖矩陣而不是它的轉置發送給着色器。 – fabspro 2012-01-31 11:42:46

回答

1

您可以通過他們的內部着色器之前使用,而不是轉置矩陣row_major修改

+0

謝謝,我已經看過了,這是一個更好的方法 – fabspro 2012-01-31 16:07:12

+0

並證實,它的作品非常漂亮。謝謝! – fabspro 2012-01-31 16:09:55

0

數學失敗,我發送了視圖矩陣,而不是它的轉置到着色器。