我有一些文字,我正在绘制到屏幕上...但由于要求使用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