我目前正在学习 DirectX(2010 年 6 月的 SDK)并且正在将位图绘制到屏幕上。现在我希望能够对这些图像进行转换,并且无法沿 x 轴或 y 轴镜像图像。
在绘图之前,我可以设置一个将应用于绘图操作的转换矩阵。尽管 DirectX 使用的是 D2D1_MATRIX_3x2_F 类型,但根据 MSDN,只有该矩阵的 2x2 部分用于转换。例如,矩阵 { [1, 0], [0, 1], [0, 0] } 是使所有内容自然显示的单位矩阵。
据我了解,沿 x 轴镜像图像的矩阵变换应如下所示:{ [1, 0], [0, -1], [0, 0] },沿 y 轴然后将是 { [-1, 0], [0, 1], [0, 0] }。但是,如果我使用这些矩阵进行转换,则会出现黑屏。
对我来说,问题是,我有点卡在这一点上,不知道这个问题可能是由什么引起的,或者更确切地说,它是由背后的数学逻辑错误引起的,还是由实现本身引起的。不幸的是,除了 Direct2D RenderTarget 的头文件中的一行注释“必须通过矩阵转换完成镜像”之外,我找不到任何材料。
我目前用于测试的源代码是:
D2D1_MATRIX_3X2_F m;
m._11 = 1; m._12 = 0;
m._21 = 0; m._22 = -1;
m._31 = 0; m._32 = 0;
m_pDX2DRenderTarget->SetTransform( m );