using System;
using System.Drawing;
using System.Windows.Forms;
using Microsoft.DirectX;
using Microsoft.DirectX.Direct3D;namespace Chapter1Code
{
    /// <summary>
    /// Summary description for Form1.
    /// </summary>
    public class Form1 : System.Windows.Forms.Form
    {
        private Device device = null;
        /// <summary>
        /// Required designer variable.
        /// </summary>
        private System.ComponentModel.Container components = null;
        private float angle = 0.0f;        public Form1()
        {
            //
            // Required for Windows Form Designer support
            //
            InitializeComponent();            this.Size = new Size(800, 600);
            this.SetStyle(ControlStyles.AllPaintingInWmPaint | ControlStyles.Opaque, true);
        }        /// <summary>
        /// We will initialize our graphics device here
        /// </summary>
        public void InitializeGraphics()
        {
            // Set our presentation parameters
            PresentParameters presentParams = new PresentParameters();            presentParams.Windowed = true;
            presentParams.SwapEffect = SwapEffect.Discard;            // Create our device
            device = new Device(0, DeviceType.Hardware, this, CreateFlags.SoftwareVertexProcessing, presentParams);
        }        private void SetupCamera()
        {
            device.RenderState.CullMode = Cull.None;
            device.Transform.World = Matrix.RotationAxis(new Vector3(angle / ((float)Math.PI * 2.0f), angle / ((float)Math.PI * 4.0f), angle / ((float)Math.PI * 6.0f)), angle / (float)Math.PI);
            angle += 0.1f;
    
            device.Transform.Projection = Matrix.PerspectiveFovLH((float)Math.PI / 4, this.Width / this.Height, 1.0f, 100.0f);
            device.Transform.View = Matrix.LookAtLH(new Vector3(0, 0, 5.0f), new Vector3(), new Vector3(0, 1, 0));
            device.RenderState.Lighting = true;
        }
               protected override void OnPaint(System.Windows.Forms.PaintEventArgs e)
        {
            device.Clear(ClearFlags.Target, System.Drawing.Color.CornflowerBlue, 1.0f, 0);            SetupCamera();            CustomVertex.PositionNormalColored[] verts = new CustomVertex.PositionNormalColored[3];
            //2005/07/10, TheZbuffer.com, Updated for June SDK
            //verts[0].SetPosition(new Vector3(0.0f, 1.0f, 1.0f));
            //verts[0].SetNormal(new Vector3(0.0f, 0.0f, -1.0f));            verts[0].Position = new Vector3(0.0f, 1.0f, 1.0f);
            verts[0].Normal = new Vector3(0.0f, 0.0f, -1.0f);
            verts[0].Color = System.Drawing.Color.White.ToArgb();
            //2005/07/10, TheZbuffer.com, Updated for June SDK
            //verts[1].SetPosition(new Vector3(-1.0f, -1.0f, 1.0f));
            //verts[1].SetNormal(new Vector3(0.0f, 0.0f, -1.0f));
            verts[1].Position = new Vector3(-1.0f, -1.0f, 1.0f);
            verts[1].Normal = new Vector3(0.0f, 0.0f, -1.0f);
            verts[1].Color = System.Drawing.Color.White.ToArgb();
            //2005/07/10, TheZbuffer.com, Updated for June SDK
            //verts[2].SetPosition(new Vector3(1.0f, -1.0f, 1.0f));
            //verts[2].SetNormal(new Vector3(0.0f, 0.0f, -1.0f));
            verts[2].Position = new Vector3(1.0f, -1.0f, 1.0f);
            verts[2].Normal = new Vector3(0.0f, 0.0f, -1.0f);
            verts[2].Color = System.Drawing.Color.White.ToArgb();            device.Lights[0].Type = LightType.Point;
            device.Lights[0].Position = new Vector3();
            device.Lights[0].Diffuse = System.Drawing.Color.White;
            device.Lights[0].Attenuation0 = 0.2f;
            device.Lights[0].Range = 10000.0f;            //2005/07/10, TheZbuffer.com, Updated for June SDK
            //device.Lights[0].Commit();
            device.Lights[0].Enabled = true;            device.BeginScene();
            device.VertexFormat = CustomVertex.PositionNormalColored.Format;
            device.DrawUserPrimitives(PrimitiveType.TriangleList, 1, verts);
            device.EndScene();            device.Present();            this.Invalidate();
        }        /// <summary>
        /// Clean up any resources being used.
        /// </summary>
        protected override void Dispose(bool disposing)
        {
            if (disposing)
            {
                if (components != null)
                {
                    components.Dispose();
                }
            }
            base.Dispose(disposing);
        }        #region Windows Form Designer generated code
        /// <summary>
        /// Required method for Designer support - do not modify
        /// the contents of this method with the code editor.
        /// </summary>
        private void InitializeComponent()
        {
            this.SuspendLayout();
            // 
            // Form1
            // 
            this.ClientSize = new System.Drawing.Size(292, 273);
            this.Name = "Form1";
            this.Text = "Form1";
            this.Load += new System.EventHandler(this.Form1_Load);
            this.ResumeLayout(false);        }
        #endregion        /// <summary>
        /// The main entry point for the application.
        /// </summary>
        static void Main()
        {
            using (Form1 frm = new Form1())
            {
                // Show our form and initialize our graphics engine
                frm.Show();
                frm.InitializeGraphics();
                Application.Run(frm);
            }
        }        private void Form1_Load(object sender, EventArgs e)
        {        }
    }
}

解决方案 »

  1.   

    请问这段代码中那个是控制三角转动的,是相机动了还是三角动了? 自己顶下,刚刚接触MDX,希望各位能提供一些帮助,请问有没C#MDXQQ群? 或是有C#MDX游戏经验能加我好友我简单问点小问题的?我的理想就是用C#做出来个二D游戏就好了。 FC一样的就行慢慢再说。在下QQ 21003617恳请同好加QQ;
      

  2.   

    回想小时候在学习机上玩C语言,认真的照着做也没做出那个书上游戏。如今,我能做简单的动画,我学了C#平台的入门关于网页方面的知识。我又一点一点的知道了MDX托管。我想做简单的2D游戏。