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