Пустой outputInfoList для второй графической карты

У меня на ПК два дискретных видеоадаптера: GTX 1060 и RTX 2080 ti. Я хотел бы использовать второй для своего приложения DXUT. Я нашел аргумент командной строки -adapter #, чтобы указать его, однако моя программа вылетела из строя при запуске с параметром -adapter1 (1 - порядковый номер адаптера для RTX2080). Я начал отладку и выяснил следующую проблему: EnumOutputs возвращает только DXGI_ERROR_NOT_FOUND.

Для GTX1060 первый вызов EnumOutputs возвращает правильный результат.

Раздел кода:

      HRESULT CD3D11Enumeration::EnumerateOutputs( _In_ CD3D11EnumAdapterInfo* pAdapterInfo )
{
    HRESULT hr;
    IDXGIOutput* pOutput;

    for( int iOutput = 0; ; ++iOutput )
    {
        pOutput = nullptr;
        //next line returns at once DXGI_ERROR_NOT_FOUND for RTX2080
        hr = pAdapterInfo->m_pAdapter->EnumOutputs( iOutput, &pOutput ); 
        if( DXGI_ERROR_NOT_FOUND == hr )
        {
            return S_OK;
        }
        ...
}
              hr = EnumerateOutputs( pAdapterInfo );
        if( FAILED( hr ) || pAdapterInfo->outputInfoList.empty() ) //failed here cause second condition is true
        {
            delete pAdapterInfo;
            continue;
        }

Кто знает как исправить эту проблему?

Все драйверы обновлены.

PS Я также пытался указать графическую карту через программное обеспечение Windows и GeForce, но это кажется подходящим только для корпуса ноутбука с обеими интегрированными / дискретными картами.

1 ответ

Боже мой .. Проблема только в GTX1060, подключенном к моему монитору.

Мой наставник объяснил мне, что в этом случае невозможно отрендерить буфер кадра.

Другие вопросы по тегам