続々々WindowsフォームアプリでXNAを使ってみる
XNA 4.0になって Effect.Begin、Effect.Endメソッドが無くなっていたので、Effectのクローンを作って対応してみた。 正解かどうかは不明だが・・・
1.共通情報であるViewとProjectionをセットした後にクローンを作成
effect.View = Matrix.CreateLookAt(new Vector3(0, 0, -5), Vector3.Zero, Vector3.Up);
effect.Projection = Matrix.CreatePerspectiveFieldOfView(1, aspect, 1, 10);
//レクタングル描画用に複製を作る
effectRect = (BasicEffect)effect.Clone();
1.共通情報であるViewとProjectionをセットした後にクローンを作成
effect.View = Matrix.CreateLookAt(new Vector3(0, 0, -5), Vector3.Zero, Vector3.Up);
effect.Projection = Matrix.CreatePerspectiveFieldOfView(1, aspect, 1, 10);
//レクタングル描画用に複製を作る
effectRect = (BasicEffect)effect.Clone();
2.描画
            // トライアングルを描画
            effect.VertexColorEnabled = true;
            effect.TextureEnabled = false;
            effect.World = Matrix.CreateFromYawPitchRoll(pitch, yaw, roll);
            effect.CurrentTechnique.Passes[0].Apply();
            GraphicsDevice.DrawUserPrimitives(PrimitiveType.TriangleStrip, Vertices, 0, 1);
            // レクタングルを描画
            effectRect.VertexColorEnabled = false;
            effectRect.TextureEnabled = true;
            effectRect.Texture = texture;
            effectRect.World = Matrix.CreateFromYawPitchRoll(-pitch, yaw, roll);
            effectRect.CurrentTechnique.Passes[0].Apply();
            GraphicsDevice.DrawUserPrimitives(PrimitiveType.TriangleStrip, VerticesRect, 0, 2);

 
 
 
コメント
コメントを投稿