我在Direct3D畫布上有一個背景圖像。我正在背景上的特定位置繪製一個圓圈。畫布放大/使用相機(使用世界/視圖/投影)平移後,背景被更新。Direct3D中的世界空間座標
現在的問題是,我無法找到圖像上的前一個位置來重畫圓圈。我正在使用以下函數(DirectX 11.1)來查找座標。但它不起作用。
XMVECTOR Camera::Unproject(Windows::Foundation::Rect viewPort, Windows::Foundation::Point location)
{
XMFLOAT3 worldPosition(location.X, location.Y, 0.0f);
XMVECTOR worldVector = XMLoadFloat3(&worldPosition);
return XMVector3Unproject(worldVector, viewPort.X, viewPort.Y, viewPort.Width, viewPort.Height, 0.0f, 1.0f, this->Projection(), this->View(), this->World());
}
我甚至嘗試用XMMatrixIdentity作爲世界。但沒有成功。 任何人都可以幫我嗎?
爲什麼你需要重畫圓圈?如您所說,背景將根據相機移動進行更新,因此背景上的圓圈將自動更新(放大/縮小)。 – zdd
@zdd圓形的顏色和紋理需要用新的縮放係數進行更改。 – Liton
然後將其繪製爲之前的位置並更改顏色和紋理,因爲您正在移動相機,相機只會改變視圖,不會改變圓的方向。你不需要爲它計算新的中心。 – zdd