CmRenderStateManager.cpp 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. #include "CmRenderStateManager.h"
  2. #include "CmSamplerState.h"
  3. #include "CmDepthStencilState.h"
  4. #include "CmRasterizerState.h"
  5. #include "CmBlendState.h"
  6. namespace CamelotEngine
  7. {
  8. RenderStateManager::RenderStateManager()
  9. {
  10. mDefaultSamplerState = createSamplerState(SAMPLER_STATE_DESC());
  11. mDefaultBlendState = createBlendState(BLEND_STATE_DESC());
  12. mDefaultRasterizerState = createRasterizerState(RASTERIZER_STATE_DESC());
  13. mDefaultDepthStencilState = createDepthStencilState(DEPTH_STENCIL_STATE_DESC());
  14. }
  15. SamplerStatePtr RenderStateManager::createSamplerState(const SAMPLER_STATE_DESC& desc) const
  16. {
  17. SamplerStatePtr samplerState = SamplerStatePtr(new SamplerState());
  18. samplerState->setThisPtr(samplerState);
  19. samplerState->initialize(desc);
  20. return samplerState;
  21. }
  22. DepthStencilStatePtr RenderStateManager::createDepthStencilState(const DEPTH_STENCIL_STATE_DESC& desc) const
  23. {
  24. DepthStencilStatePtr depthStencilState = DepthStencilStatePtr(new DepthStencilState());
  25. depthStencilState->setThisPtr(depthStencilState);
  26. depthStencilState->initialize(desc);
  27. return depthStencilState;
  28. }
  29. RasterizerStatePtr RenderStateManager::createRasterizerState(const RASTERIZER_STATE_DESC& desc) const
  30. {
  31. RasterizerStatePtr rasterizerState = RasterizerStatePtr(new RasterizerState());
  32. rasterizerState->setThisPtr(rasterizerState);
  33. rasterizerState->initialize(desc);
  34. return rasterizerState;
  35. }
  36. BlendStatePtr RenderStateManager::createBlendState(const BLEND_STATE_DESC& desc) const
  37. {
  38. BlendStatePtr blendState = BlendStatePtr(new BlendState());
  39. blendState->setThisPtr(blendState);
  40. blendState->initialize(desc);
  41. return blendState;
  42. }
  43. SamplerStatePtr RenderStateManager::createEmptySamplerState() const
  44. {
  45. SamplerStatePtr samplerState = SamplerStatePtr(new SamplerState());
  46. samplerState->setThisPtr(samplerState);
  47. return samplerState;
  48. }
  49. DepthStencilStatePtr RenderStateManager::createEmptyDepthStencilState() const
  50. {
  51. DepthStencilStatePtr depthStencilState = DepthStencilStatePtr(new DepthStencilState());
  52. depthStencilState->setThisPtr(depthStencilState);
  53. return depthStencilState;
  54. }
  55. RasterizerStatePtr RenderStateManager::createEmptyRasterizerState() const
  56. {
  57. RasterizerStatePtr rasterizerState = RasterizerStatePtr(new RasterizerState());
  58. rasterizerState->setThisPtr(rasterizerState);
  59. return rasterizerState;
  60. }
  61. BlendStatePtr RenderStateManager::createEmptyBlendState() const
  62. {
  63. BlendStatePtr blendState = BlendStatePtr(new BlendState());
  64. blendState->setThisPtr(blendState);
  65. return blendState;
  66. }
  67. }