最も簡単な初期化であり、もっとも手間のかからないウィンドウ作成方法です。
using System; using System.Drawing; using System.Windows.Forms; using Microsoft.DirectX; using Microsoft.DirectX.Direct3D; namespace Project2 { /// <summary> /// md3d2 の概要の説明です。 /// </summary> public class md3d2:Form { //クライアント領域のサイズ const int clientHeight =600; const int clientWight =800; public md3d2():base() { //固定サイズのフォーム this.FormBorderStyle = FormBorderStyle.FixedSingle; //サイダかボタン無し this.MaximizeBox = false; //クライアント領域サイズ this.ClientSize = new Size(clientWight,clientHeight); //ウィンドウの名前(かっこいいのを付けてあげてください) this.Text ="Direct3D-My"; } private Device device_; /// <summary> /// Direct3Dの初期化を行います。 /// </summary> /// <returns>初期化が成功したかどうか</returns> public bool DXInitialize() { try { //プレゼンテーションパラメータを作成 PresentParameters pp = new PresentParameters(); //ウィンドウモード pp.Windowed =true; //スワップエフェクトを設定。 pp.SwapEffect = SwapEffect.Discard; //デバイスを作成 device_ = new Device(0,DeviceType.Hardware,this ,CreateFlags.HardwareVertexProcessing,pp); //頂点バッファを作成 this.creatVertex(); //初期化成功 return true; } catch { //初期化失敗 return false; } } /// <summary> /// 頂点バッファ /// </summary> private VertexBuffer vertexBuffer_; /// <summary> /// 頂点バッファ作成関数 /// </summary> private void creatVertex() { //頂点バッファ領域を確保 vertexBuffer_ = new VertexBuffer(typeof(CustomVertex.TransformedColored), 6, device_, 0, CustomVertex.TransformedColored.Format, Pool.Managed); //バッファをロック GraphicsStream stm = vertexBuffer_.Lock(0,0,0); //頂点データの配列を作成 CustomVertex.TransformedColored[] verts = new CustomVertex.TransformedColored[6]; //頂点データ verts[0].X=50;verts[0].Y=250;verts[0].Z=0.5f; verts[0].Rhw=1; verts[0].Color = System.Drawing.Color.LightPink.ToArgb(); verts[1].X=150;verts[1].Y=50;verts[1].Z=0.5f; verts[1].Rhw=1; verts[1].Color = System.Drawing.Color.Aqua.ToArgb(); verts[2].X=250;verts[2].Y=250;verts[2].Z=0.5f;verts[2].Rhw=1; verts[2].Color = System.Drawing.Color.Brown.ToArgb(); verts[3].X=350;verts[3].Y=50;verts[3].Z=0.5f; verts[3].Rhw=1; verts[3].Color = System.Drawing.Color.Black.ToArgb(); verts[4].X=450;verts[4].Y=250;verts[4].Z=0.5f;verts[4].Rhw=1; verts[4].Color = System.Drawing.Color.Red.ToArgb(); verts[5].X=550;verts[5].Y=50;verts[5].Z=0.5f; verts[5].Rhw=1; verts[5].Color = System.Drawing.Color.Green.ToArgb(); //頂点データをバッファに書き込み stm.Write(verts); //バッファのロックを解除 vertexBuffer_.Unlock(); } public void Render() { if(device_==null)return; if(this.WindowState ==FormWindowState.Minimized)return; //クリア処理 device_.Clear(ClearFlags.Target,Color.Blue,1.0f,0); //描画開始 device_.BeginScene(); //頂点バッファをセット device_.SetStreamSource(0,vertexBuffer_,0); //頂点バッファのフォーマットをセット device_.VertexFormat = CustomVertex.TransformedColored.Format; //描画 device_.DrawPrimitives(PrimitiveType.LineStrip,0,5); //描画終わり device_.EndScene(); //更新 device_.Present(); } } /// <summary> /// エントリクラス /// </summary> class Program { public static void Main() { using(md3d2 dxform =new md3d2()) { //Direct3Dの初期化を実行 if(!dxform.DXInitialize()) { MessageBox.Show("Direct3Dの初期化に失敗しました。","初期化の失敗"); return; } //ウィンドウを表示 dxform.Show(); //メッセージループ //フォームがある間だけまわるようにする while(dxform.Created) { //描画する dxform.Render(); //たまっているメッセージを処理する Application.DoEvents(); } } } } }
分からない人は「入門編」を読んでください。