我有一个简单的directX-9测试应用程序,我想在扩展模式下从一个显示器移动到另一个显示器。
窗口和设备是在主监视器上创建的,场景绘制正确,但当我将窗口移动到第二个监视器时,它将冻结。没有错误,甚至当前调用也不会失败,但不会更新窗口。只要我把窗口移回到主监视器上,一切都会恢复正常。
有人能给我一个提示吗?我遗漏了什么才能让它正常工作?
发布于 2011-06-17 00:03:37
确保枚举您的适配器模式。您使用的模式可能与图形卡有关。此外,对于适配器支持的每种格式,都有一个基于可用模式数量的显示模式列表。下面是遍历这些模式的快速示例:
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过程。希望这能有所帮助。
致以敬意,
将要
https://stackoverflow.com/questions/6373829
复制相似问题