1

我有一个简单的 directX-9 测试应用程序,我想以扩展模式从一台显示器移动到另一台显示器。
窗口和设备是在主监视器上创建的,并且场景绘制正确,但是当我将窗口移动到第二个监视器时,它会冻结。没有错误,甚至当前的调用也没有失败,但没有更新窗口。一旦我将窗口移回主监视器,一切都会再次正常。
任何人都可以给我一个提示我缺少什么来让它工作吗?

4

1 回答 1

1

确保枚举您的适配器模式。您使用的模式可能与显卡有问题。此外,对于适配器支持的每种格式,都有一个基于可用模式数量的显示模式列表。下面是一个循环遍历这些模式的简单示例:

D3DDISPLAYMODE mode;
UINT adapter = 0;
D3DFORMAT format = D3DFMT_R5G6B5;
LPDIRECT3D9 pD3D;

pD3D = Direct3DCreate9( D3D_SDK_VERSION );

if(!pD3D) return FALSE;

UINT availableModes = pD3D->GetAdapterModeCount(Adapter, Format);

if(!availableModes) return FALSE;

for(UINT i = 0; i < availableModes; i++)
{
    pD3D->EnumAdapterModes( adapter, format, i, &mode);
    formatModeList->push_back(mode); // A list of modes
}

此外,如果您处于窗口模式,请确保您没有使用翻转。在窗口模式下,您共享正在运行的应用程序的当前视频模式。不幸的是,您必须使用较慢的 blitting 过程。希望这会有所帮助。

问候,

将要

于 2011-06-16T16:03:36.910 回答