2016-12-31 1 views
0

私はC++を使用しています。私は、MSDNに[here](-here I should add the link-)次のコードを見て:Direct2Dで単位行列を使った乗算 - なぜですか?

m_pRenderTarget->BeginDraw(); 
m_pRenderTarget->SetTransform(D2D1::Matrix3x2F::Identity()); 
m_pRenderTarget->Clear(D2D1::ColorF(D2D1::ColorF::White)); 

彼らは単位行列に掛けるなぜ私は疑問に思います。変更なし: I * A = AA * B = Cの場合。 I * C = Cで、C * I = Aではないので、C * I = Aではありませんが、私の友人はSetTransform(identity)なら、レンダーターゲットは初期状態になります。

なぜ恒等行列を乗算するのですか?

+0

あなたが試したこと、あなたの情報源は何かを示してください...次の質問をする前に、[尋ねる]を注意深く読んでください。 –

答えて

0

最初の変換はゼロかもしれないし、ガベージ(初期化されていない)かもしれないし、アイデンティティかもしれないが、わからない。変換を何であるか知るために、それをアイデンティティに設定する必要があります。最初の変換が実際にどのようなものであっても、それをユニット化して使用する前にその値を割り当てると仮定する必要があります。

+0

私は最初の変換がアイデンティティであることは確信しています。そうでなければ、変換を設定する必要があります。 – user1610015

0

私はこの構文は1が電流を削除するにはしたいとき変換に使用されるhere

あなたが持っているなら、彼らは言う:

pRenderTarget->SetTransform(
    D2D1::Matrix3x2F::Rotation(20, D2D1::Point2F(100,100))); 

に適用される変換再度SetTransformを呼び出すまで、その後の描画操作はすべて終了します。現在の変換を削除するには、Matrix3x2F::Identity関数によって返される単位行列を使用してSetTransformを呼び出します。

pRenderTarget->SetTransform(D2D1::Matrix3x2F::Identity()); 
0

SetTransformは(存在しない)MultiplyTransformのようなものと混同してはなりません。 に変換が追加されていません。 Direct2Dでは、プッシュ/ポップスタイルの行列操作を行うのはあなた次第です。