DirectX&Direct 3 Dゲーム開発の3 Dプログラム基本フレームワーク構築

8755 ワード

デバイス類
関連パラメータはmsdn:http://msdn.microsoft.com/zh-cn/library/ms129556(v=vs.90)を参照
3 Dプログラムの基本フレームワークの構築
 
フレームワークにはいくつかの基本的な関数があります.
 
InitializeGraphics()
 
主にデバイスクラスのパラメータを設定し、関連するカスタムメソッドとイベントを初期化します.
 
コード:


InitializeGraphics
 1         public bool InitializeGraphics()

 2         {

 3             try

 4             {

 5                 PresentParameters presentParams = new PresentParameters();

 6                 presentParams.Windowed = true;//

 7                 presentParams.SwapEffect = SwapEffect.Discard;//         

 8                 presentParams.EnableAutoDepthStencil = true;//          

 9                 presentParams.AutoDepthStencilFormat = DepthFormat.D16;//        16     

10 

11                 device = new Device(0, DeviceType.Hardware, this, CreateFlags.SoftwareVertexProcessing, presentParams);//       

12 

13                 //        (device.DeviceReset)     this.OnResetDevice

14                 device.DeviceReset += new EventHandler(OnResetDevice);

15 

16                 this.OnCreateDevice(device, null);//     ,   Device          

17                 this.OnResetDevice(device, null);//        (device.DeviceReset)    

18 

19             }//           Device  ,             

20             catch (DirectXException)

21             {

22                 return false;

23             }

24             return true;

25         }

OnCreateDevice ()
カスタムメソッド、Deviceを初期化する作業このメソッドでは、InitializeGraphics()でのみ呼び出されます.つまり、1回のみ呼び出されます.
コード:
        public void OnCreateDevice(object sender, EventArgs e)

        {}

OnResetDevice()
ウィンドウモードによってデバイスクラスが変化するパラメータを再設定するイベントHandle関数.
コード:
        void OnResetDevice(object sender, EventArgs e)

        {}

Render()
レンダーメソッドは、レンダーメソッドを呼び出すたびに、ディスプレイ画面に画像を表示します.一般的にはフレーム画像と呼ばれます.
コード:


レンダーレンダー(Render Renderer)
 1         public void Render()

 2         {

 3             if (device == null)

 4                 return;

 5             if (pause)

 6                 return;

 7             device.Clear(ClearFlags.Target | ClearFlags.ZBuffer, Color.Blue, 1.0f, 0);//                     RGBA   、       ,        

 8             device.BeginScene();//    

 9             device.EndScene();//    

10             device.Present();//

11         }//     Render  ,              ,        

Form1_Paint()
フォームイベントHandle関数で、図形描画ツールを使用して図形を描画します.
コード:
        private void Form1_Paint(object sender, PaintEventArgs e)

        {

            this.Render();

        }

Form1_Resize()
フォームイベントHandle関数は、コントロールを調整するときに発生します.
コード:
        private void Form1_Resize(object sender, EventArgs e)

        {

            pause = ((this.WindowState == FormWindowState.Minimized) || !this.Visible);

        }