BsD3D11Device.h 2.1 KB

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