Переместить окно DirectX с одного монитора на другой в расширенном режиме - PullRequest
1 голос
/ 16 июня 2011

У меня есть простое тестовое приложение DirectX-9, которое я хочу переместить с одного монитора на другой в расширенном режиме.
Окно и устройство создаются на основном мониторе, и сцена рисуется правильно, но когда я перемещаю свойокно ко второму монитору замерзнет.Там нет ошибки, и даже текущие вызовы не перестают работать, но нет обновления окна.Как только я возвращаю окно на основной монитор, все снова в порядке.
Может кто-нибудь подсказать, что мне не хватает, чтобы это работало?

1 Ответ

1 голос
/ 16 июня 2011

Обязательно перечисляйте режимы вашего адаптера. Режим, который вы используете, может иметь проблемы с видеокартой. Кроме того, для каждого формата, поддерживаемого адаптером, существует список режимов отображения, основанный на количестве доступных режимов. Вот быстрый пример зацикливания этих режимов:

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
}

Кроме того, убедитесь, что вы НЕ используете переворот, если находитесь в оконном режиме. В оконном режиме вы делитесь текущим режимом видео запущенных приложений. К сожалению, вы должны использовать более медленный процесс блиттинга. Надеюсь, это поможет.

С уважением,

Будет

...