|
|
@@ -0,0 +1,71 @@
|
|
|
+#include "CmBlendState.h"
|
|
|
+#include "CmRenderStateManager.h"
|
|
|
+
|
|
|
+namespace CamelotEngine
|
|
|
+{
|
|
|
+ void BlendState::initialize(const BLEND_STATE_DESC& desc)
|
|
|
+ {
|
|
|
+ mData = desc;
|
|
|
+ }
|
|
|
+
|
|
|
+ bool BlendState::getBlendEnable(UINT32 renderTargetIdx) const
|
|
|
+ {
|
|
|
+ assert(renderTargetIdx >= 0 && renderTargetIdx < CM_MAX_MULTIPLE_RENDER_TARGETS);
|
|
|
+
|
|
|
+ return mData.renderTargetDesc[renderTargetIdx].blendEnable;
|
|
|
+ }
|
|
|
+
|
|
|
+ SceneBlendFactor BlendState::getSrcBlend(UINT32 renderTargetIdx) const
|
|
|
+ {
|
|
|
+ assert(renderTargetIdx >= 0 && renderTargetIdx < CM_MAX_MULTIPLE_RENDER_TARGETS);
|
|
|
+
|
|
|
+ return mData.renderTargetDesc[renderTargetIdx].srcBlend;
|
|
|
+ }
|
|
|
+
|
|
|
+ SceneBlendFactor BlendState::getDstBlend(UINT32 renderTargetIdx) const
|
|
|
+ {
|
|
|
+ assert(renderTargetIdx >= 0 && renderTargetIdx < CM_MAX_MULTIPLE_RENDER_TARGETS);
|
|
|
+
|
|
|
+ return mData.renderTargetDesc[renderTargetIdx].dstBlend;
|
|
|
+ }
|
|
|
+
|
|
|
+ SceneBlendOperation BlendState::getBlendOperation(UINT32 renderTargetIdx) const
|
|
|
+ {
|
|
|
+ assert(renderTargetIdx >= 0 && renderTargetIdx < CM_MAX_MULTIPLE_RENDER_TARGETS);
|
|
|
+
|
|
|
+ return mData.renderTargetDesc[renderTargetIdx].blendOp;
|
|
|
+ }
|
|
|
+
|
|
|
+ SceneBlendFactor BlendState::getAlphaSrcBlend(UINT32 renderTargetIdx) const
|
|
|
+ {
|
|
|
+ assert(renderTargetIdx >= 0 && renderTargetIdx < CM_MAX_MULTIPLE_RENDER_TARGETS);
|
|
|
+
|
|
|
+ return mData.renderTargetDesc[renderTargetIdx].srcBlendAlpha;
|
|
|
+ }
|
|
|
+
|
|
|
+ SceneBlendFactor BlendState::getAlphaDstBlend(UINT32 renderTargetIdx) const
|
|
|
+ {
|
|
|
+ assert(renderTargetIdx >= 0 && renderTargetIdx < CM_MAX_MULTIPLE_RENDER_TARGETS);
|
|
|
+
|
|
|
+ return mData.renderTargetDesc[renderTargetIdx].dstBlendAlpha;
|
|
|
+ }
|
|
|
+
|
|
|
+ SceneBlendOperation BlendState::getAlphaBlendOperation(UINT32 renderTargetIdx) const
|
|
|
+ {
|
|
|
+ assert(renderTargetIdx >= 0 && renderTargetIdx < CM_MAX_MULTIPLE_RENDER_TARGETS);
|
|
|
+
|
|
|
+ return mData.renderTargetDesc[renderTargetIdx].blendOpAlpha;
|
|
|
+ }
|
|
|
+
|
|
|
+ UINT8 BlendState::getRenderTargetWriteMask(UINT32 renderTargetIdx) const
|
|
|
+ {
|
|
|
+ assert(renderTargetIdx >= 0 && renderTargetIdx < CM_MAX_MULTIPLE_RENDER_TARGETS);
|
|
|
+
|
|
|
+ return mData.renderTargetDesc[renderTargetIdx].renderTargetWriteMask;
|
|
|
+ }
|
|
|
+
|
|
|
+ BlendStatePtr BlendState::create(const BLEND_STATE_DESC& desc)
|
|
|
+ {
|
|
|
+ return RenderStateManager::instance().createBlendState(desc);
|
|
|
+ }
|
|
|
+}
|