将D2D1 :: Matrix3x2F转换为XMMATRIX

时间:2014-01-21 01:14:59

标签: c++ matrix directx

我有一些文字,我正在绘制到屏幕上...但由于要求使用D2D1 :: Matrix3x2F作为翻译,它不会被绘制在我真正想要绘制的地方......其他所有内容都是使用XMMATRIX ... 有没有办法转换这两个?

文字转换内容:

D2D1::Matrix3x2F screenTranslation = D2D1::Matrix3x2F::Translation(
    Window::width - hud->textMetrics.layoutWidth,
    Window::height - hud->textMetrics.height
    );

d2dDeviceContext->SetTransform( D2D1::Matrix3x2F::Translation( hud->starEndPositionX, hud->starEndPositionY ) );

其他一切都是这样完成的:

XMMATRIX rot = XMMatrixRotationY( a->rot );
XMMATRIX trans = XMMatrixTranslation( a->x, a->y, 0.0f );
XMATRIX final = rot * trans;

所以问题是我的所有坐标都是以0,0,0作为屏幕中心,而文本就像0,0是左上角。 1920 x 1080是右下角。 Boooooo。

旁注:我的3D转换设置如下:

// trans
matView = XMMatrixOrthographicLH( Window::width, Window::height, -1.0, 1.0 );

//projection

float fieldOfView = ( float )PI;
float screenAspect = Window::width / Window::height;

matProjection = XMMatrixPerspectiveFovLH( fieldOfView, screenAspect, -1.0, 1.0 );

总而言之......有没有办法将一些二维坐标转换为三维坐标,甚至反之亦然,这样当我可以将我的三维坐标转换为二维3x2F平移时呢?

D2D1 :: Matrix3x2F到XMMATRIX

0 个答案:

没有答案