我在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