BsD3D9DriverList.cpp 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. //********************************** Banshee Engine (www.banshee3d.com) **************************************************//
  2. //**************** Copyright (c) 2016 Marko Pintera ([email protected]). All rights reserved. **********************//
  3. #include "BsD3D9DriverList.h"
  4. #include "BsD3D9VideoModeInfo.h"
  5. #include "BsException.h"
  6. #include "BsD3D9RenderAPI.h"
  7. namespace BansheeEngine
  8. {
  9. D3D9DriverList::D3D9DriverList()
  10. {
  11. IDirect3D9* lpD3D9 = D3D9RenderAPI::getDirect3D9();
  12. for (UINT32 i = 0; i < lpD3D9->GetAdapterCount(); i++)
  13. {
  14. D3DADAPTER_IDENTIFIER9 adapterIdentifier;
  15. D3DCAPS9 d3dcaps9;
  16. lpD3D9->GetAdapterIdentifier(i, 0, &adapterIdentifier);
  17. lpD3D9->GetDeviceCaps(i, D3DDEVTYPE_HAL, &d3dcaps9);
  18. mDriverList.push_back(D3D9Driver(i, d3dcaps9, adapterIdentifier));
  19. }
  20. mVideoModeInfo = bs_shared_ptr_new<D3D9VideoModeInfo>(lpD3D9);
  21. }
  22. D3D9DriverList::~D3D9DriverList()
  23. {
  24. mDriverList.clear();
  25. }
  26. UINT32 D3D9DriverList::count() const
  27. {
  28. return (UINT32)mDriverList.size();
  29. }
  30. D3D9Driver* D3D9DriverList::item(UINT32 index)
  31. {
  32. return &mDriverList.at(index);
  33. }
  34. D3D9Driver* D3D9DriverList::item(const String &name)
  35. {
  36. Vector<D3D9Driver>::iterator it = mDriverList.begin();
  37. if (it == mDriverList.end())
  38. return nullptr;
  39. for (;it != mDriverList.end(); ++it)
  40. {
  41. if (it->getDriverDescription() == name)
  42. return &(*it);
  43. }
  44. return nullptr;
  45. }
  46. }