2012年1月10日火曜日

IDirect3D9::GetAdapterModeCount

ディスプレイモードの数を返すIDirect3D9::GetAdapterModeCount.最初の引数は,0以上でIDirect3D9::GetAdapterCount()が返す値未満の値を渡す.第二引数には,D3DFORMATの値を渡す.ただ,D3DFORMATの値ならどれでも良いのかが,ドキュメント読んだだけではいまいち分からない.

#include <sdkddkver.h>

#define WIN32_LEAN_AND_MEAN
#include <Windows.h>

#include <tchar.h>
#include <sstream>
typedef std::basic_ostringstream<TCHAR> tostringstream;

#include <d3d9.h>

int APIENTRY _tWinMain(HINSTANCE, HINSTANCE, LPTSTR, int)
{
    // IDirect3D9オブジェクトの生成
    LPDIRECT3D9 pD3D = Direct3DCreate9(D3D_SDK_VERSION);

    // エラーチェック
    if(pD3D == NULL){
        MessageBox(
            NULL,
            TEXT("IDirect3D9のオブジェクトを生成できませんでした."),
            TEXT("失敗"),
            MB_OK
        );
        return -1;
    }

    UINT n = pD3D->GetAdapterCount();
    for(UINT i = 0; i < n; ++i){
        // GetAdapterModeCount()の結果を文字列に
        tostringstream msg;

        msg << "Adapter " << i << '\n';
        msg << "D3DFMT_X8R8G8B8     : " << pD3D->GetAdapterModeCount(i, D3DFMT_X8R8G8B8) << '\n';

        MessageBox(
            NULL,
            msg.str().c_str(),
            TEXT("結果"),
            MB_OK
        );
    }
    
    // 後始末
    pD3D->Release();

    return 0;
}

0 件のコメント:

コメントを投稿