BsD3D11Device.h 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  1. #pragma once
  2. #include "BsD3D11Prerequisites.h"
  3. namespace BansheeEngine
  4. {
  5. /**
  6. * @brief Available DX11 error levels.
  7. */
  8. enum BS_D3D11_ERROR_LEVEL
  9. {
  10. D3D11ERR_NO_EXCEPTION,
  11. D3D11ERR_CORRUPTION,
  12. D3D11ERR_ERROR,
  13. D3D11ERR_WARNING,
  14. D3D11ERR_INFO
  15. };
  16. /**
  17. * @brief Wrapper around DirectX 11 device object.
  18. */
  19. class BS_D3D11_EXPORT D3D11Device
  20. {
  21. public:
  22. /**
  23. * @brief Constructs the object with a previously created DX11 device.
  24. */
  25. D3D11Device(ID3D11Device* device);
  26. ~D3D11Device();
  27. /**
  28. * @brief Shuts down the device any releases any internal resources.
  29. */
  30. void shutdown();
  31. /**
  32. * @brief Returns DX11 immediate context object.
  33. */
  34. ID3D11DeviceContext* getImmediateContext() const { return mImmediateContext; }
  35. /**
  36. * @brief Returns DX11 class linkage object.
  37. */
  38. ID3D11ClassLinkage* getClassLinkage() const { return mClassLinkage; }
  39. /**
  40. * @brief Returns internal DX11 device.
  41. */
  42. ID3D11Device* getD3D11Device() const { return mD3D11Device; }
  43. /**
  44. * @brief Resets error state & error messages.
  45. */
  46. void clearErrors();
  47. /**
  48. * @brief Query if error occurred at any point since last "clearError" call.
  49. * Use getErrorDescription to get a string describing the error.
  50. */
  51. bool hasError() const;
  52. /**
  53. * @brief Returns a string describing an error if one occurred.
  54. */
  55. String getErrorDescription(bool clearErrors = true);
  56. /**
  57. * @brief Sets the level for which we want to receive errors for. Errors will be reported
  58. * for the provided level and any higher priority level.
  59. */
  60. void setExceptionsErrorLevel(const BS_D3D11_ERROR_LEVEL exceptionsErrorLevel);
  61. private:
  62. D3D11Device();
  63. ID3D11Device* mD3D11Device;
  64. ID3D11DeviceContext* mImmediateContext;
  65. ID3D11InfoQueue* mInfoQueue;
  66. ID3D11ClassLinkage* mClassLinkage;
  67. };
  68. }