利用可能な表示モードを取得しようとしたときに奇妙な問題が発生しました。説明させてください...
最初に、利用可能なアダプターを列挙し、次に std::vector にプッシュすると、これは正常に機能します。
for(UINT i = 0; pFactory->EnumAdapters(i, &pAdapter) != DXGI_ERROR_NOT_FOUND; ++i)
vAdapters->push_back(pAdapter);
次に、これらのアダプターをコンボボックスに入力し、使用するアダプターを選択できるようにします。
出力を列挙して利用可能な表示モードを取得しようとすると、最初にコンボボックスから選択されたアダプターを取得します。
IDXGIAdapter* pSelectedAdapter = (*vAdapters)[index];
選択したアダプターのアドレスを確認したところ、アダプターの列挙中に取得したものと一致しました。
次に、出力を列挙してその説明を取得しようとします。
IDXGIOutput* pOutput;
DXGI_OUTPUT_DESC *odesc = 0;
for(UINT i = 0; pSelectedAdapter->EnumOutputs(i, &pOutput) != DXGI_ERROR_NOT_FOUND; ++i)
{
pOutput->GetDesc(odesc);
}
そして問題があります。ループは 2 つのモニターを検出し、それらすべてに対して pOutput ポインターを返しますが、GetDesc(odesc) を起動しようとすると、odesc が返されません。pOutput ポインタが指しているように見えます...空のオブジェクト。使用可能な表示モードを列挙すると、モードを確認するバック バッファー形式に関係なく、使用可能なモードが 0 になります。
ありがとう、パトリック