Direct3D 9Ex - 创建全屏设备

时间:2013-12-23 22:51:19

标签: c++ fullscreen directx-9

我在互联网上看了这个并没有找到任何结果。

我知道Direct3D 9Ex在Alt-Tabbing退出程序后工作,取消Direct3D 9(只是崩溃)。出于这个原因,我试图使用Direct3D 9Ex。我想让程序全屏。但是,每当我使用设备执行任何操作(IDirect3DDevice9Ex *)时,我都会获得读取内存位置0x00000000的访问冲突。这是我的代码:

Direct3DCreate9Ex(D3D_SDK_VERSION, &pD3D);
ZeroMemory(&d3dpp, sizeof(d3dpp));
d3dpp.BackBufferCount = 1;
d3dpp.BackBufferFormat = D3DFMT_X8R8G8B8;
d3dpp.BackBufferHeight = iHeight;
d3dpp.BackBufferWidth = iWidth;
d3dpp.hDeviceWindow = hWnd;
d3dpp.SwapEffect = D3DSWAPEFFECT_DISCARD;
d3dpp.Windowed = false;
D3DDISPLAYMODEEX dm;
dm.Format = D3DFMT_X8R8G8B8;
dm.Height = iHeight;
dm.Size = sizeof(dm);
dm.RefreshRate = 60;
dm.ScanLineOrdering = D3DSCANLINEORDERING_PROGRESSIVE;
dm.Width = iWidth;
pD3D->CreateDeviceEx(D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL, hWnd, D3DCREATE_HARDWARE_VERTEXPROCESSING, &d3dpp, &dm, &pD3DDevice);

任何帮助都将不胜感激。

1 个答案:

答案 0 :(得分:0)

d3dpp.FullScreen_RefreshRateInHz (0)dm.RefreshRate (60)不同。 它们都应设置为相同的速率,对两者都尝试D3DPRESENT_RATE_DEFAULT

应使用HRESULTCreateDeviceEx宏检查SUCCEEDED来电中的FAILED返回。