DirectX&Direct 3 Dゲーム開発の3 Dプログラム基本フレームワーク構築
8755 ワード
デバイス類
関連パラメータはmsdn:http://msdn.microsoft.com/zh-cn/library/ms129556(v=vs.90)を参照
3 Dプログラムの基本フレームワークの構築
フレームワークにはいくつかの基本的な関数があります.
InitializeGraphics()
主にデバイスクラスのパラメータを設定し、関連するカスタムメソッドとイベントを初期化します.
コード:
InitializeGraphics
OnCreateDevice ()
カスタムメソッド、Deviceを初期化する作業このメソッドでは、InitializeGraphics()でのみ呼び出されます.つまり、1回のみ呼び出されます.
コード:
OnResetDevice()
ウィンドウモードによってデバイスクラスが変化するパラメータを再設定するイベントHandle関数.
コード:
Render()
レンダーメソッドは、レンダーメソッドを呼び出すたびに、ディスプレイ画面に画像を表示します.一般的にはフレーム画像と呼ばれます.
コード:
レンダーレンダー(Render Renderer)
Form1_Paint()
フォームイベントHandle関数で、図形描画ツールを使用して図形を描画します.
コード:
Form1_Resize()
フォームイベントHandle関数は、コントロールを調整するときに発生します.
コード:
関連パラメータは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);
}