CmRenderStateManager.h 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. #pragma once
  2. #include "CmPrerequisites.h"
  3. #include "CmModule.h"
  4. namespace CamelotEngine
  5. {
  6. class CM_EXPORT RenderStateManager : public Module<RenderStateManager>
  7. {
  8. public:
  9. /**
  10. * @brief Creates and initializes a new SamplerState.
  11. */
  12. virtual SamplerStatePtr createSamplerState(const SAMPLER_STATE_DESC& desc) const;
  13. /**
  14. * @brief Creates and initializes a new DepthStencilState.
  15. */
  16. virtual DepthStencilStatePtr createDepthStencilState(const DEPTH_STENCIL_STATE_DESC& desc) const;
  17. /**
  18. * @brief Creates and initializes a new RasterizerState.
  19. */
  20. virtual RasterizerStatePtr createRasterizerState(const RASTERIZER_STATE_DESC& desc) const;
  21. /**
  22. * @brief Creates and initializes a new BlendState.
  23. */
  24. virtual BlendStatePtr createBlendState(const BLEND_STATE_DESC& desc) const;
  25. /**
  26. * @brief Creates a completely empty and uninitialized SamplerState.
  27. * Should only be used for VERY specific purposes, like deserialization,
  28. * as it requires additional manual initialization that is not required normally.
  29. */
  30. virtual SamplerStatePtr createEmptySamplerState() const;
  31. /**
  32. * @brief Creates a completely empty and uninitialized DepthStencilState.
  33. * Should only be used for VERY specific purposes, like deserialization,
  34. * as it requires additional manual initialization that is not required normally.
  35. */
  36. virtual DepthStencilStatePtr createEmptyDepthStencilState() const;
  37. /**
  38. * @brief Creates a completely empty and uninitialized RasterizerState.
  39. * Should only be used for VERY specific purposes, like deserialization,
  40. * as it requires additional manual initialization that is not required normally.
  41. */
  42. virtual RasterizerStatePtr createEmptyRasterizerState() const;
  43. /**
  44. * @brief Creates a completely empty and uninitialized BlendState.
  45. * Should only be used for VERY specific purposes, like deserialization,
  46. * as it requires additional manual initialization that is not required normally.
  47. */
  48. virtual BlendStatePtr createEmptyBlendState() const;
  49. };
  50. }