+ * @brief Struct to encapsulate stencil parameters required for control of the stencil buffer.
+ */
+ struct StencilParameters
+ {
+ StencilParameters( RenderMode::Type renderMode, StencilFunction::Type stencilFunction, int stencilFunctionMask,
+ int stencilFunctionReference, int stencilMask, StencilOperation::Type stencilOperationOnFail,
+ StencilOperation::Type stencilOperationOnZFail, StencilOperation::Type stencilOperationOnZPass )
+ : stencilFunctionMask ( stencilFunctionMask ),
+ stencilFunctionReference ( stencilFunctionReference ),
+ stencilMask ( stencilMask ),
+ renderMode ( renderMode ),
+ stencilFunction ( stencilFunction ),
+ stencilOperationOnFail ( stencilOperationOnFail ),
+ stencilOperationOnZFail ( stencilOperationOnZFail ),
+ stencilOperationOnZPass ( stencilOperationOnZPass )
+ {
+ }
+
+ int stencilFunctionMask; ///< The stencil function mask
+ int stencilFunctionReference; ///< The stencil function reference
+ int stencilMask; ///< The stencil mask
+ RenderMode::Type renderMode:4; ///< The render mode
+ StencilFunction::Type stencilFunction:4; ///< The stencil function
+ StencilOperation::Type stencilOperationOnFail:4; ///< The stencil operation for stencil test fail
+ StencilOperation::Type stencilOperationOnZFail:4; ///< The stencil operation for depth test fail
+ StencilOperation::Type stencilOperationOnZPass:4; ///< The stencil operation for depth test pass
+ };
+
+ /**
+ * @copydoc Dali::Internal::GlResourceOwner::GlContextDestroyed()
+ */
+ void GlContextDestroyed();
+
+ /**
+ * @copydoc Dali::Internal::GlResourceOwner::GlCleanup()
+ */
+ void GlCleanup();
+
+ /**
+ * Create a new renderer instance
+ * @param[in] dataProviders The data providers for the renderer
+ * @param[in] geometry The geometry for the renderer
+ * @param[in] blendingBitmask A bitmask of blending options.
+ * @param[in] blendColor The blend color to pass to GL
+ * @param[in] faceCullingMode The face-culling mode.
+ * @param[in] preMultipliedAlphaEnabled whether alpha is pre-multiplied.
+ * @param[in] depthWriteMode Depth buffer write mode
+ * @param[in] depthTestMode Depth buffer test mode
+ * @param[in] depthFunction Depth function
+ * @param[in] stencilParameters Struct containing all stencil related options
+ */
+ static Renderer* New( SceneGraph::RenderDataProvider* dataProviders,
+ Render::Geometry* geometry,
+ uint32_t blendingBitmask,
+ const Vector4& blendColor,
+ FaceCullingMode::Type faceCullingMode,
+ bool preMultipliedAlphaEnabled,
+ DepthWriteMode::Type depthWriteMode,
+ DepthTestMode::Type depthTestMode,
+ DepthFunction::Type depthFunction,
+ StencilParameters& stencilParameters );
+
+ /**
+ * Constructor.
+ * @param[in] dataProviders The data providers for the renderer
+ * @param[in] geometry The geometry for the renderer
+ * @param[in] blendingBitmask A bitmask of blending options.
+ * @param[in] blendColor The blend color to pass to GL
+ * @param[in] faceCullingMode The face-culling mode.
+ * @param[in] preMultipliedAlphaEnabled whether alpha is pre-multiplied.
+ * @param[in] depthWriteMode Depth buffer write mode
+ * @param[in] depthTestMode Depth buffer test mode
+ * @param[in] depthFunction Depth function
+ * @param[in] stencilParameters Struct containing all stencil related options
+ */
+ Renderer( SceneGraph::RenderDataProvider* dataProviders,
+ Render::Geometry* geometry,
+ uint32_t blendingBitmask,
+ const Vector4& blendColor,
+ FaceCullingMode::Type faceCullingMode,
+ bool preMultipliedAlphaEnabled,
+ DepthWriteMode::Type depthWriteMode,
+ DepthTestMode::Type depthTestMode,
+ DepthFunction::Type depthFunction,
+ StencilParameters& stencilParameters );
+
+ /**
+ * Change the geometry used by the renderer
+ * @param[in] geometry The new geometry