Direct3Dのデバイスをフルスクリーンで作成する †
Direct3DではCreateDeviceを使ってデバイスを作成しますが、フルスクリーンモードでデバイスを作成したい場合は画面に設定できる幅や高さの組み合わせは限られています。その為どの組み合わせが有効かは事前にEnumAdapterModesで調べておくと良いでしょう。
またEnumAdapterModesで取得できるディスプレイのモードに何種類の組み合わせがあるかはGetAdapterModeCountで調べる事ができます。
実際のコード †
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
| |
LPDIRECT3D9 lpD3D;
LPDIRECT3DDEVICE9 lpD3Ddev;
D3DDISPLAYMODE d3dspMode;
D3DPRESENT_PARAMETERS d3dPrm;
std::vector<D3DDISPLAYMODE> DModes;
lpD3D = Direct3DCreate9(D3D_SDK_VERSION);
int cnt = lpD3D->GetAdapterModeCount(D3DADAPTER_DEFAULT, D3DFMT_X8R8G8B8);
for (int i = 0; i < cnt; ++i) {
lpD3D->EnumAdapterModes(D3DADAPTER_DEFAULT, D3DFMT_X8R8G8B8, i, &d3dspMode);
DModes.push_back(d3dspMode);
}
d3dspMode = DModes[x];
ZeroMemory(&d3dPrm, sizeof(D3DPRESENT_PARAMETERS));
d3dPrm.BackBufferWidth = d3dspMode.Width; d3dPrm.BackBufferHeight = d3dspMode.Height; d3dPrm.BackBufferFormat = D3DFMT_X8R8G8B8;
d3dPrm.BackBufferCount = 1; d3dPrm.SwapEffect = D3DSWAPEFFECT_DISCARD;
d3dPrm.hDeviceWindow = hWnd; d3dPrm.Windowed = FALSE; d3dPrm.PresentationInterval = D3DPRESENT_INTERVAL_DEFAULT;
lpD3D->CreateDevice(D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL, hWnd, D3DCREATE_HARDWARE_VERTEXPROCESSING, &d3dPrm, &lpD3Ddev);
|
補足 |
Direct3Dでフルスクリーン表示するプログラミング例として、幅640・高さ480で初期化する場合が多いですが、これはその解像度をサポートしているビデオカードが多いからだと思われます。
|
ページ情報 |
- カテゴリ : DirectX
- 作成日 : 2006-07-02 (日) 02:00:41
- 作成者 : rakuppe?
- 最終編集日 : 2006-07-02 (日) 02:00:41
- 最終編集者 : rakuppe?
|