Posted on 2008-11-21 23:37
Herbert 閱讀(356)
評論(0) 編輯 收藏 引用 所屬分類:
DirectX
今天在做畢業(yè)設(shè)計的時候,想在場景中添加一個網(wǎng)狀的地面。但不知道為什么,無論我怎么移動攝像機,場景中顯示的網(wǎng)狀地面總是一條線,而另外一個模型則可以隨攝像機移動而變換,折騰了半天還是找不出原因。我所用的攝像機是DXUT提供的CFristPersonCamera 和 CModelViewerCamera,在 OnFrameRender里面給設(shè)備設(shè)置了 WorldMatrix 、ViewMatrix、ProjectionMatrix。然后分別為模型和網(wǎng)格的顯示提供了兩個不同的渲染效果。為網(wǎng)格提供的fx文件代碼如下:
VS_OUTPUT VS_ResetMatrix(VS_INPUT input)
{
VS_OUTPUT output = (VS_OUTPUT) 0;
output.pos = mul( input.pos, g_wvpMatrix);
output.diffuse = g_color;
output.tex = input.tex;
return output;
}
其中 g_wvpMatrix是經(jīng)過World 、View、Project變換以后得出的矩陣。后來我先后試著把 World變換和 Project變換去掉看結(jié)果,發(fā)現(xiàn)當我去掉 World變換以后,攝像機的使用就正常了。
另外,如果有自定義的頂點格式,注意使用的FVF中頂點的處理方式是D3DFVF_XYZ 還是 D3DFVF_XYZRHW。如果是D3DFVF_XYZ,則需要自己進行 World、View、Project變換;如果是D3DFVF_XYZRHW 則意味著這些頂點表示已經(jīng)經(jīng)過這三個變換。