2 using System.Collections.Generic;
\r
4 using System.Diagnostics;
\r
5 using SlimDX.Direct3D9;
\r
11 /// 描画フレーム毎にGPUをフラッシュして、描画遅延を防ぐ。
\r
12 /// DirectX9の、Occlusion Queryを用いる。(Flush属性付きでGetDataする)
\r
13 /// Device Lost対策のため、QueueをCActivitiyのManagedリソースとして扱う。
\r
14 /// On進行描画()を呼び出すことで、GPUをフラッシュする。
\r
16 internal class CActFlushGPU : CActivity
\r
20 public override void OnManagedリソースの作成()
\r
24 try // #xxxxx 2012.12.31 yyagi: to prepare flush, first of all, I create q queue to the GPU.
\r
26 IDirect3DQuery9 = new SlimDX.Direct3D9.Query(CDTXMania.Instance.Device, QueryType.Occlusion);
\r
30 Trace.TraceError(e.Message);
\r
32 base.OnManagedリソースの作成();
\r
35 public override void OnManagedリソースの解放()
\r
37 IDirect3DQuery9.Dispose();
\r
38 IDirect3DQuery9 = null;
\r
39 base.OnManagedリソースの解放();
\r
41 public override int On進行描画()
\r
45 IDirect3DQuery9.Issue(Issue.End);
\r
47 IDirect3DQuery9.GetData<int>(true); // flush GPU queue
\r
56 private SlimDX.Direct3D9.Query IDirect3DQuery9;
\r