| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576 |
- #pragma once
- #include "CmPrerequisites.h"
- #include "CmCommonEnums.h"
- #include "CmResource.h"
- namespace CamelotFramework
- {
- struct CM_EXPORT RASTERIZER_STATE_DESC
- {
- RASTERIZER_STATE_DESC()
- : polygonMode(PM_SOLID)
- , cullMode(CULL_COUNTERCLOCKWISE)
- , depthBias(0)
- , depthBiasClamp(0.0f)
- , slopeScaledDepthBias(0.0f)
- , depthClipEnable(true)
- , scissorEnable(false)
- , multisampleEnable(true)
- , antialiasedLineEnable(false)
- { }
- PolygonMode polygonMode;
- CullingMode cullMode;
- int depthBias;
- float depthBiasClamp;
- float slopeScaledDepthBias;
- bool depthClipEnable;
- bool scissorEnable;
- bool multisampleEnable;
- bool antialiasedLineEnable;
- };
- // TODO Low priority - Write doc explaining various states
- class CM_EXPORT RasterizerState : public Resource
- {
- public:
- virtual ~RasterizerState() {}
- PolygonMode getPolygonMode() const { return mData.polygonMode; }
- CullingMode getCullMode() const { return mData.cullMode; }
- int getDepthBias() const { return mData.depthBias; }
- float getDepthBiasClamp() const { return mData.depthBiasClamp; }
- float getSlopeScaledDepthBias() const { return mData.slopeScaledDepthBias; }
- bool getDepthClipEnable() const { return mData.depthClipEnable; }
- bool getScissorEnable() const { return mData.scissorEnable; }
- bool getMultisampleEnable() const { return mData.multisampleEnable; }
- bool getAntialiasedLineEnable() const { return mData.antialiasedLineEnable; }
- static HRasterizerState create(const RASTERIZER_STATE_DESC& desc);
- /**
- * @brief Returns the default rasterizer state;
- */
- static const RasterizerStatePtr& getDefault();
- protected:
- friend class RenderStateManager;
- virtual void initialize(const RASTERIZER_STATE_DESC& desc);
- RASTERIZER_STATE_DESC mData;
- /************************************************************************/
- /* RTTI */
- /************************************************************************/
- public:
- friend class RasterizerStateRTTI;
- static RTTITypeBase* getRTTIStatic();
- virtual RTTITypeBase* getRTTI() const;
- };
- }
|