X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=dali%2Finternal%2Frender%2Fcommon%2Frender-manager.h;h=2e3ea2db1bc4383340c207071df6dcf1a17f14d2;hb=6bfe656ae942470e3768d2a143a536b92a24d1ea;hp=fe50ea39eee95e74a3c30cd4968cd2b231d2e133;hpb=c7ff03ac2e775c5f53a82863a9fd474ff94c32ea;p=platform%2Fcore%2Fuifw%2Fdali-core.git diff --git a/dali/internal/render/common/render-manager.h b/dali/internal/render/common/render-manager.h index fe50ea3..2e3ea2d 100644 --- a/dali/internal/render/common/render-manager.h +++ b/dali/internal/render/common/render-manager.h @@ -22,9 +22,9 @@ #include #include #include -#include -#include #include +#include +#include namespace Dali { @@ -62,7 +62,6 @@ class RenderQueue; class RenderInstruction; class RenderInstructionContainer; class Shader; -class PropertyBufferDataProvider; class Scene; /** @@ -85,7 +84,8 @@ public: Integration::GlSyncAbstraction& glSyncAbstraction, Integration::GlContextHelperAbstraction& glContextHelperAbstraction, Integration::DepthBufferAvailable depthBufferAvailable, - Integration::StencilBufferAvailable stencilBufferAvailable ); + Integration::StencilBufferAvailable stencilBufferAvailable, + Integration::PartialUpdateAvailable partialUpdateAvailable ); /** * Non-virtual destructor; not intended as a base class @@ -131,12 +131,6 @@ public: void SetDefaultSurfaceRect( const Rect& rect ); /** - * Returns the orintation for the default surface (probably the application window). - * @return Orientation for the surface. - */ - void SetDefaultSurfaceOrientation( int orientation ); - - /** * Add a Renderer to the render manager. * @param[in] renderer The renderer to add. * @post renderer is owned by RenderManager @@ -181,17 +175,17 @@ public: /** * Add a property buffer to the render manager. - * @param[in] propertyBuffer The property buffer to add. + * @param[in] vertexBuffer The property buffer to add. * @post propertBuffer is owned by RenderManager */ - void AddPropertyBuffer( OwnerPointer< Render::PropertyBuffer >& propertyBuffer ); + void AddVertexBuffer( OwnerPointer< Render::VertexBuffer >& vertexBuffer ); /** * Remove a property buffer from the render manager. - * @param[in] propertyBuffer The property buffer to remove. - * @post propertyBuffer is destroyed. + * @param[in] vertexBuffer The property buffer to remove. + * @post vertexBuffer is destroyed. */ - void RemovePropertyBuffer( Render::PropertyBuffer* propertyBuffer ); + void RemoveVertexBuffer( Render::VertexBuffer* vertexBuffer ); /** * Add a geometry to the render manager. @@ -210,32 +204,32 @@ public: /** * Adds a property buffer to a geometry from the render manager. * @param[in] geometry The geometry - * @param[in] propertyBuffer The property buffer to remove. + * @param[in] vertexBuffer The property buffer to remove. */ - void AttachVertexBuffer( Render::Geometry* geometry, Render::PropertyBuffer* propertyBuffer ); + void AttachVertexBuffer( Render::Geometry* geometry, Render::VertexBuffer* vertexBuffer ); /** * Remove a property buffer from a Render::Geometry from the render manager. * @param[in] geometry The geometry - * @param[in] propertyBuffer The property buffer to remove. + * @param[in] vertexBuffer The property buffer to remove. * @post property buffer is destroyed. */ - void RemoveVertexBuffer( Render::Geometry* geometry, Render::PropertyBuffer* propertyBuffer ); + void RemoveVertexBuffer( Render::Geometry* geometry, Render::VertexBuffer* vertexBuffer ); /** * Sets the format of an existing property buffer - * @param[in] propertyBuffer The property buffer. + * @param[in] vertexBuffer The property buffer. * @param[in] format The new format of the buffer */ - void SetPropertyBufferFormat( Render::PropertyBuffer* propertyBuffer, OwnerPointer< Render::PropertyBuffer::Format>& format ); + void SetVertexBufferFormat( Render::VertexBuffer* vertexBuffer, OwnerPointer< Render::VertexBuffer::Format>& format ); /** * Sets the data of an existing property buffer - * @param[in] propertyBuffer The property buffer. + * @param[in] vertexBuffer The property buffer. * @param[in] data The new data of the buffer * @param[in] size The new size of the buffer */ - void SetPropertyBufferData( Render::PropertyBuffer* propertyBuffer, OwnerPointer< Vector >& data, uint32_t size ); + void SetVertexBufferData( Render::VertexBuffer* vertexBuffer, OwnerPointer< Vector >& data, uint32_t size ); /** * Sets the data for the index buffer of an existing geometry @@ -290,7 +284,7 @@ public: void RemoveFrameBuffer( Render::FrameBuffer* frameBuffer ); /** - * Attach a texture as color output to an existing FrameBuffer + * Attaches a texture as color output to the existing frame buffer * @param[in] frameBuffer The FrameBuffer * @param[in] texture The texture that will be used as output when rendering * @param[in] mipmapLevel The mipmap of the texture to be attached @@ -299,6 +293,22 @@ public: void AttachColorTextureToFrameBuffer( Render::FrameBuffer* frameBuffer, Render::Texture* texture, uint32_t mipmapLevel, uint32_t layer ); /** + * Attaches a texture as depth output to the existing frame buffer + * @param[in] frameBuffer The FrameBuffer + * @param[in] texture The texture that will be used as output when rendering + * @param[in] mipmapLevel The mipmap of the texture to be attached + */ + void AttachDepthTextureToFrameBuffer( Render::FrameBuffer* frameBuffer, Render::Texture* texture, uint32_t mipmapLevel ); + + /** + * Attaches a texture as depth/stencil output to the existing frame buffer + * @param[in] frameBuffer The FrameBuffer + * @param[in] texture The texture that will be used as output when rendering + * @param[in] mipmapLevel The mipmap of the texture to be attached + */ + void AttachDepthStencilTextureToFrameBuffer( Render::FrameBuffer* frameBuffer, Render::Texture* texture, uint32_t mipmapLevel ); + + /** * Initializes a Scene to the render manager * @param[in] scene The Scene to initialize */ @@ -349,6 +359,18 @@ public: */ void PreRender( Integration::RenderStatus& status, bool forceClear, bool uploadOnly ); + // This method should be called from Core::PreRender() + + /** + * This is called before rendering any scene in the next frame. This method should be preceded + * by a call up Update. + * Multi-threading note: this method should be called from a dedicated rendering thread. + * @pre The GL context must have been created, and made current. + * @param[in] scene The scene to be rendered. + * @param[out] damagedRects The list of damaged rects for the current render pass. + */ + void PreRender( Integration::Scene& scene, std::vector>& damagedRects ); + // This method should be called from Core::RenderScene() /** @@ -357,10 +379,24 @@ public: * and the second pass to render the surface. * Multi-threading note: this method should be called from a dedicated rendering thread. * @pre The GL context must have been created, and made current. + * @param[out] status contains the rendering flags. + * @param[in] scene The scene to be rendered. + * @param[in] renderToFbo True to render off-screen frame buffers only if any, and False to render the surface only. + */ + void RenderScene( Integration::RenderStatus& status, Integration::Scene& scene, bool renderToFbo ); + + /** + * Render a scene in the next frame. This method should be preceded by a call up PreRender. + * This method should be called twice. The first pass to render off-screen frame buffers if any, + * and the second pass to render the surface. + * Multi-threading note: this method should be called from a dedicated rendering thread. + * @pre The GL context must have been created, and made current. + * @param[out] status contains the rendering flags. * @param[in] scene The scene to be rendered. * @param[in] renderToFbo True to render off-screen frame buffers only if any, and False to render the surface only. + * @param[in] clippingRect The clipping rect for the rendered scene. */ - void RenderScene( Integration::Scene& scene, bool renderToFbo ); + void RenderScene( Integration::RenderStatus& status, Integration::Scene& scene, bool renderToFbo, Rect& clippingRect ); // This method should be called from Core::PostRender()