私は現在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のヘッダーファイルに「ミラーリングは行列変換を使用して実行する必要がある」という1行のコメント以外に、これに関する資料は見つかりませんでした。
これをテストするために現在使用しているソースコードは次のとおりです。
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 );