using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using Microsoft.DirectX.Direct3D; using Microsoft.DirectX; namespace DirectXProject { public partial class mioForm : Form { public Device device; CustomVertex.PositionColored[] vertices; public mioForm() { InitializeComponent(); } public void InitializeDevice() { angle = 0f; PresentParameters presentParams = new PresentParameters(); presentParams.Windowed = true; presentParams.SwapEffect = SwapEffect.Discard; device = new Device(0, DeviceType.Hardware, this, CreateFlags.SoftwareVertexProcessing, presentParams); } public void CreaVertici() { vertices= new CustomVertex.PositionColored[3]; vertices[0].Position = new Vector3(0f, 0f, 0f); vertices[0].Color = Color.Red.ToArgb(); vertices[1].Position = new Vector3(10f, 0f, 0f); vertices[1].Color = Color.Green.ToArgb(); vertices[2].Position = new Vector3(5f, 10f, 0f); vertices[2].Color = Color.Yellow.ToArgb(); } public void Camera() { device.Transform.Projection = Matrix.PerspectiveFovLH((float)Math.PI / 4, this.Width / this.Height, 1f, 50f); device.Transform.View = Matrix.LookAtLH(new Vector3(0, 0, -30), new Vector3(0, 0, 0), new Vector3(0, 1, 0)); device.RenderState.Lighting = false; device.RenderState.CullMode = Cull.None; } protected override void OnPaint(PaintEventArgs e) { device.Clear(ClearFlags.Target, Color.DarkSlateBlue, 1.0f, 0); device.BeginScene(); device.VertexFormat = CustomVertex.PositionColored.Format; device.DrawUserPrimitives(PrimitiveType.TriangleList, 1, vertices); device.EndScene(); device.Present(); } public static void Main() { mioForm frm = new mioForm(); frm.InitializeDevice(); frm.CreaVertici(); frm.Camera(); Application.Run(frm); } } }Dunque il metodo CreaVertici(), che ho creato io, non fa altro che inizializzare un array di vertici del tipo PositionColored.
Il metodo Camera(), sempre creato da me, non fa che posizionare la telecamera, il punto di osservazione.
Il metodo Main chiama questi metodi che preparano i vertici e la telecamera, e quindi inizia il metodon OnPaint, nel quale:
- Si dice al device qual è il formato dei vertici.
- Si dice quale primitiva usare e la matrice di vertici da prendere in considerazione.
Nessun commento:
Posta un commento