DirectX 边界框绘制
DirectX bounding box drawing
我的想法是在显示我的 DiretXTK 模型后在屏幕上将边界框绘制为二维角。
我在 std::vector<DirectX::SimpleMath::Vector3>
中得到了来自 DirectXKT 的边界框角,所以
auto mf = m_world * m_view * m_proj;
D3D11_VIEWPORT vp;
UINT j = 1;
ctx->RSGetViewports(&j,&vp);
for (auto& c : corners)
{
DirectX::SimpleMath::Vector3 ft = DirectX::XMVector3Transform(c, mf);
float scalex = vp.Width / 2;
float scaley = vp.Height / 2;
float screenx = ft.x * scalex;
float screeny = ft.y * scaley;
}
这些坐标无效,我在将每个角的 XYZ 转换为屏幕投影时出错了。
非常感谢您的帮助。
在 DirectX Tool Kit wiki 中,我有一个 DebugDraw
助手,它是专门为使用 DirectX 工具包的 PrimitiveBatch
绘制 DirectXMath 边界体积而设计的.
参见 this topic page。
You may also want to take a look at the Collision sample.
我的想法是在显示我的 DiretXTK 模型后在屏幕上将边界框绘制为二维角。
我在 std::vector<DirectX::SimpleMath::Vector3>
中得到了来自 DirectXKT 的边界框角,所以
auto mf = m_world * m_view * m_proj;
D3D11_VIEWPORT vp;
UINT j = 1;
ctx->RSGetViewports(&j,&vp);
for (auto& c : corners)
{
DirectX::SimpleMath::Vector3 ft = DirectX::XMVector3Transform(c, mf);
float scalex = vp.Width / 2;
float scaley = vp.Height / 2;
float screenx = ft.x * scalex;
float screeny = ft.y * scaley;
}
这些坐标无效,我在将每个角的 XYZ 转换为屏幕投影时出错了。
非常感谢您的帮助。
在 DirectX Tool Kit wiki 中,我有一个 DebugDraw
助手,它是专门为使用 DirectX 工具包的 PrimitiveBatch
绘制 DirectXMath 边界体积而设计的.
参见 this topic page。
You may also want to take a look at the Collision sample.