X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=dali%2Fpublic-api%2Frendering%2Fframe-buffer.h;h=30c5e6de4d0bdc756018be285eeb8246c148c167;hb=646f736e77b085c86e982c0d1d4b895c2a431330;hp=6e826de99ab77e2c370663d5b9930ce9ae0e1f29;hpb=7e670cd9cb16d7b93787a147088d67f87086f8b8;p=platform%2Fcore%2Fuifw%2Fdali-core.git diff --git a/dali/public-api/rendering/frame-buffer.h b/dali/public-api/rendering/frame-buffer.h index 6e826de..30c5e6d 100644 --- a/dali/public-api/rendering/frame-buffer.h +++ b/dali/public-api/rendering/frame-buffer.h @@ -2,7 +2,7 @@ #define DALI_FRAMEBUFFER_H /* - * Copyright (c) 2016 Samsung Electronics Co., Ltd. + * Copyright (c) 2018 Samsung Electronics Co., Ltd. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -18,6 +18,9 @@ * */ +// EXTERNAL INCLUDES +#include // uint32_t + // INTERNAL INCLUDES #include #include @@ -31,49 +34,62 @@ class FrameBuffer; } /** - * @brief FrameBuffer is a collection of textures that can be used as the destination for rendering + * @brief FrameBuffer is a collection of textures that can be used as the destination for rendering. * @SINCE_1_1.43 */ -class DALI_IMPORT_API FrameBuffer : public BaseHandle +class DALI_CORE_API FrameBuffer : public BaseHandle { public: /** - * @brief Format of the FrameBuffer to be created. - * @SINCE_1_1.43 + * @brief The initial attachments to create the FrameBuffer with. + * @note The color attachment is created on calling AttachColorTexture(). If a color attachment is not required, omit this call. + * @note With "NONE", no attachments are created initially. However color attachments can still be added as described above. + * + * @SINCE_1_1.45 */ - enum Format + struct Attachment { - COLOR, ///< Framebuffer will be created with color buffer @SINCE_1_1.43 - COLOR_DEPTH, ///< Framebuffer will be created with color and depth buffer @SINCE_1_1.43 - COLOR_STENCIL, ///< Framebuffer will be created with color and stencil buffer @SINCE_1_1.43 - COLOR_DEPTH_STENCIL ///< Framebuffer will be created with color, depth and stencil buffer. @note May be not supported in all devices @SINCE_1_1.43 + /** + * @brief Enumeration for the bit-mask value. + * @SINCE_1_1.45 + */ + enum Mask + { + NONE = 0, ///< No attachments are created initially @SINCE_1_1.45 + + DEPTH = 1 << 0, ///< Depth buffer bit-mask value @SINCE_1_1.45 + STENCIL = 1 << 1, ///< Stencil buffer bit-mask value @SINCE_1_1.45 + + // Preset bit-mask combinations: + DEPTH_STENCIL = DEPTH | STENCIL ///< The Framebuffer will be created with depth and stencil buffer @SINCE_1_1.45 + }; }; /** - * @brief Creates a new FrameBuffer object + * @brief Creates a new FrameBuffer object. * * @SINCE_1_1.43 * @param[in] width The width of the FrameBuffer * @param[in] height The height of the FrameBuffer - * @param[in] format The format of the FrameBuffer + * @param[in] attachments The attachments comprising the format of the FrameBuffer (the type is int to allow multiple bitmasks to be ORd) * @return A handle to a newly allocated FrameBuffer */ - static FrameBuffer New( unsigned int width, unsigned int height, Format format ); + static FrameBuffer New( uint32_t width, uint32_t height, uint32_t attachments ); /** - * @brief Default constructor, creates an empty handle + * @brief Default constructor, creates an empty handle. */ FrameBuffer(); /** - * @brief Destructor + * @brief Destructor. * @SINCE_1_1.43 */ ~FrameBuffer(); /** - * @brief Copy constructor, creates a new handle to the same object + * @brief Copy constructor, creates a new handle to the same object. * * @SINCE_1_1.43 * @param[in] handle Handle to an object @@ -81,17 +97,16 @@ public: FrameBuffer( const FrameBuffer& handle ); /** - * @brief Downcast to a FrameBuffer. - * + * @brief Downcasts to a FrameBuffer. + * If not, the returned handle is left uninitialized. * @SINCE_1_1.43 - * If not the returned handle is left uninitialized. * @param[in] handle Handle to an object * @return FrameBuffer handle or an uninitialized handle */ static FrameBuffer DownCast( BaseHandle handle ); /** - * @brief Assignment operator, changes this handle to point at the same object + * @brief Assignment operator, changes this handle to point at the same object. * * @SINCE_1_1.43 * @param[in] handle Handle to an object @@ -100,29 +115,31 @@ public: FrameBuffer& operator=( const FrameBuffer& handle ); /** - * @brief Attach the base LOD of a 2D texture to the framebuffer for color rendering + * @brief Attach the base LOD of a 2D texture to the framebuffer for color rendering. + * @note This causes a color attachment to be added. * * @SINCE_1_1.43 * @param[in] texture The texture that will be used as output when rendering * @note The texture has to have the same size than the FrameBuffer - * otherwise it won't be attached + * otherwise it won't be attached. */ void AttachColorTexture( Texture& texture ); /** - * @brief Attach a texture to the framebuffer for color rendering + * @brief Attach a texture to the framebuffer for color rendering. + * @note This causes a color attachment to be added. * * @SINCE_1_1.43 * @param[in] texture The texture that will be used as output when rendering * @param[in] mipmapLevel The mipmap of the texture to be attached * @param[in] layer Indicates which layer of a cube map or array texture to attach. Unused for 2D textures * @note The specified texture mipmap has to have the same size than the FrameBuffer - * otherwise it won't be attached + * otherwise it won't be attached. */ - void AttachColorTexture( Texture& texture, unsigned int mipmapLevel, unsigned int layer ); + void AttachColorTexture( Texture& texture, uint32_t mipmapLevel, uint32_t layer ); /** - * @brief Get the color texture used as output in the FrameBuffer + * @brief Gets the color texture used as output in the FrameBuffer. * * @SINCE_1_1.43 * @returns A handle to the texture used as color output, or an uninitialized handle