DirectX 9 get the Adapter info

1. In DirectX 9,  the adpater means   One Display Card & One Moniter, the concept is difference with DirectX 10 's DXGI 


code:

     #include <d3d9.h>






LPDIRECT3D9             g_pD3D       = NULL; //Direct3D对象  


HRESULT InitD3D()  
{  
    //创建Direct3D对象, 该对象用来创建Direct3D设备对象  
    if( NULL == ( g_pD3D = Direct3DCreate9( D3D_SDK_VERSION ) ) )  
        return E_FAIL;  

UINT cnt = g_pD3D->GetAdapterCount();


printf("Adapter Count %d\n", cnt);


for(UINT i = 0; i < cnt; ++i)
{
D3DADAPTER_IDENTIFIER9 adpInfo;
g_pD3D->GetAdapterIdentifier(i, 0, &adpInfo);


printf("info of adapter(%d):\n", i+1);
printf("\tDriver[%s]\n", adpInfo.Driver);
printf("\tDescription[%s]\n", adpInfo.Description);
printf("\tDevName[%s]\n", adpInfo.DeviceName);
printf("\tVendorId[%d]\n", adpInfo.VendorId);
printf("\tDriverVersion[%d]\n", adpInfo.DriverVersion);
//printf("\tDeviceIdentifier[%s]\n", adpInfo.DeviceIdentifier);

}
return S_OK;  
}  




#include <vector>
class AdapterInfo
{
public:
typedef  std::vector<D3DADAPTER_IDENTIFIER9> ADAPTER_INFO;




AdapterInfo(LPDIRECT3D9 pD3D)
:m_pD3D(pD3D)
{
this->Init();
}
~AdapterInfo(){}


int Init()
{
UINT cnt = m_pD3D->GetAdapterCount();


for(UINT i = 0; i < cnt; ++i)
{
D3DADAPTER_IDENTIFIER9 adpInfo;
if(D3D_OK == m_pD3D->GetAdapterIdentifier(i, 0, &adpInfo))
{
m_infos.push_back(adpInfo);
}
else
{
return -1;
}
}
return 0;
}


unsigned int GetAdapterCount()
{
return m_infos.size();
}

const AdapterInfo::ADAPTER_INFO & GetInfo()
{
return m_infos;
}


private:
LPDIRECT3D9 m_pD3D;

ADAPTER_INFO m_infos;
};


HRESULT TestGetInfo()  
{  
    //创建Direct3D对象, 该对象用来创建Direct3D设备对象  
    if( NULL == ( g_pD3D = Direct3DCreate9( D3D_SDK_VERSION ) ) )  
        return E_FAIL;  

AdapterInfo info(g_pD3D);


unsigned int cnt = info.GetAdapterCount();
printf("Adapter Count %d\n", cnt);


for(unsigned int i = 0; i < cnt; ++i)
{
const D3DADAPTER_IDENTIFIER9 & adpInfo = info.GetInfo()[i];


printf("info of adapter(%d):\n", i+1);
printf("\tDriver[%s]\n", adpInfo.Driver);
printf("\tDescription[%s]\n", adpInfo.Description);
printf("\tDevName[%s]\n", adpInfo.DeviceName);
printf("\tVendorId[%d]\n", adpInfo.VendorId);
printf("\tDriverVersion[%d]\n", adpInfo.DriverVersion);
}
return S_OK;  
}  




int _tmain(int argc, _TCHAR* argv[])
{


TestGetInfo();


getchar();


return 0;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值