龙书11_chapter_4 二:习题中的Adapter

如何计算设备的Adapter数?

 

主要参考MSDN:  EnumAdapters

在d3dApp.cpp文件InitDirect3D()接口中:

    HR(dxgiFactory->CreateSwapChain(md3dDevice, &sd, &mSwapChain));
    //begin 检测本设备有几个图形卡
    UINT myAdapterNums = 0;
    IDXGIAdapter *pAdapter;
    std::vector<IDXGIAdapter* > vAdapters;//adapter容器
    while (dxgiFactory->EnumAdapters(myAdapterNums,&pAdapter)!=DXGI_ERROR_NOT_FOUND)//获取所有的
    {
        vAdapters.push_back(pAdapter);
        ++myAdapterNums;//计数
    }
    char szBuf[10];
    //memset(szBuf,_T(''),sizeof(szBuf));
    //sprintf_s(szBuf,"%d",myAdapterNums);
    _itoa_s(myAdapterNums,szBuf,10);//int --> char*
    int begIndex =  strlen(szBuf);  //计算这个整数有多少位,即在char数组中有几个元素? 
    for (int i=begIndex;i<=9;i++) //对其后的元素全部赋为空, 避免的乱码问题。
    {
        szBuf[i] = '';
    }
    OutputDebugString(L"Testtttttttttttt:");
    OutputDebugString((LPCTSTR)szBuf);
    //end 检测本设备有几个图形卡

按键F5,调试模式下,可以通过 OutputDebugString在输出栏显示Testttttt:2,也就是我设备两个图形卡

原文地址:https://www.cnblogs.com/dust-fly/p/4523629.html