+ * Set the blending mode
+ * @param[in] blendingMode to use
+ */
+ void SetBlendMode(BlendMode::Type blendingMode);
+
+ /**
+ * Get the blending mode
+ * @return The the blending mode
+ */
+ BlendMode::Type GetBlendMode() const;
+
+ /**
+ * Set the blending options. This should only be called from the update thread.
+ * @param[in] options A bitmask of blending options.
+ */
+ void SetBlendingOptions(uint32_t options);
+
+ /**
+ * Get the blending options
+ * @return The the blending mode
+ */
+ uint32_t GetBlendingOptions() const;
+
+ /**
+ * Set the blend color for blending operation
+ * @param blendColor to pass to GL
+ */
+ void SetBlendColor(const Vector4& blendColor);
+
+ /**
+ * Get the blending color
+ * @return The blend color
+ */
+ Vector4 GetBlendColor() const;
+
+ /**
+ * Set the index of first element for indexed draw
+ * @param[in] firstElement index of first element to draw
+ */
+ void SetIndexedDrawFirstElement(uint32_t firstElement);
+
+ /**
+ * Get the index of first element for indexed draw
+ * @return The index of first element for indexed draw
+ */
+ uint32_t GetIndexedDrawFirstElement() const;
+
+ /**
+ * Set the number of elements to draw by indexed draw
+ * @param[in] elementsCount number of elements to draw
+ */
+ void SetIndexedDrawElementsCount(uint32_t elementsCount);
+
+ /**
+ * Get the number of elements to draw by indexed draw
+ * @return The number of elements to draw by indexed draw
+ */
+ uint32_t GetIndexedDrawElementsCount() const;
+
+ /**
+ * @brief Set whether the Pre-multiplied Alpha Blending is required
+ * @param[in] preMultipled whether alpha is pre-multiplied.
+ */
+ void EnablePreMultipliedAlpha(bool preMultipled);
+
+ /**
+ * @brief Query whether alpha is pre-multiplied.
+ * @return True is alpha is pre-multiplied, false otherwise.
+ */
+ bool IsPreMultipliedAlphaEnabled() const;
+
+ /**
+ * Sets the depth buffer write mode
+ * @param[in] depthWriteMode The depth buffer write mode
+ */
+ void SetDepthWriteMode(DepthWriteMode::Type depthWriteMode);
+
+ /**
+ * Get the depth buffer write mode
+ * @return The depth buffer write mode
+ */
+ DepthWriteMode::Type GetDepthWriteMode() const;
+
+ /**
+ * Sets the depth buffer test mode
+ * @param[in] depthTestMode The depth buffer test mode
+ */
+ void SetDepthTestMode(DepthTestMode::Type depthTestMode);
+
+ /**
+ * Get the depth buffer test mode
+ * @return The depth buffer test mode
+ */
+ DepthTestMode::Type GetDepthTestMode() const;
+
+ /**
+ * Sets the depth function
+ * @param[in] depthFunction The depth function
+ */
+ void SetDepthFunction(DepthFunction::Type depthFunction);
+
+ /**
+ * Get the depth function
+ * @return The depth function
+ */
+ DepthFunction::Type GetDepthFunction() const;
+
+ /**
+ * Sets the render mode
+ * @param[in] mode The render mode
+ */
+ void SetRenderMode(RenderMode::Type mode);
+
+ /**
+ * Sets the stencil function
+ * @param[in] stencilFunction The stencil function
+ */
+ void SetStencilFunction(StencilFunction::Type stencilFunction);
+
+ /**
+ * Sets the stencil function mask
+ * @param[in] stencilFunctionMask The stencil function mask
+ */
+ void SetStencilFunctionMask(int stencilFunctionMask);
+
+ /**
+ * Sets the stencil function reference
+ * @param[in] stencilFunctionReference The stencil function reference
+ */
+ void SetStencilFunctionReference(int stencilFunctionReference);
+
+ /**
+ * Sets the stencil mask
+ * @param[in] stencilMask The stencil mask
+ */
+ void SetStencilMask(int stencilMask);
+
+ /**
+ * Sets the stencil operation for when the stencil test fails
+ * @param[in] stencilOperationOnFail The stencil operation
+ */
+ void SetStencilOperationOnFail(StencilOperation::Type stencilOperationOnFail);
+
+ /**
+ * Sets the stencil operation for when the depth test fails
+ * @param[in] stencilOperationOnZFail The stencil operation
+ */
+ void SetStencilOperationOnZFail(StencilOperation::Type stencilOperationOnZFail);
+
+ /**
+ * Sets the stencil operation for when the depth test passes
+ * @param[in] stencilOperationOnZPass The stencil operation
+ */
+ void SetStencilOperationOnZPass(StencilOperation::Type stencilOperationOnZPass);
+
+ /**
+ * Gets the stencil parameters
+ * @return The stencil parameters
+ */
+ const Render::Renderer::StencilParameters& GetStencilParameters() const;
+
+ /**
+ * Bakes the opacity