#define __DALI_INTERNAL_SCENE_GRAPH_RENDER_DATA_PROVIDER_H__
/*
- * Copyright (c) 2015 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.
*
*/
-#include <dali/internal/render/data-providers/geometry-data-provider.h>
-#include <dali/internal/render/data-providers/material-data-provider.h>
+#include <dali/public-api/common/vector-wrapper.h>
+#include <dali/public-api/rendering/renderer.h>
#include <dali/internal/render/data-providers/node-data-provider.h>
-#include <dali/internal/render/data-providers/sampler-data-provider.h>
#include <dali/internal/render/data-providers/property-buffer-data-provider.h>
#include <dali/internal/render/data-providers/uniform-map-data-provider.h>
+#include <dali/internal/render/renderers/render-sampler.h>
+#include <dali/internal/render/renderers/render-texture.h>
+#include <dali/internal/update/common/animatable-property.h>
namespace Dali
{
namespace Internal
{
+
+struct BlendingOptions;
+
namespace SceneGraph
{
class PropertyBuffer;
* the current render. It essentially provides double buffering of the
* provider accessor through the message system. It does not take ownership
* of any objects.
- *
- * @todo - Add set of bools to state what changed (For improving performance)
*/
class RenderDataProvider
{
public:
typedef Dali::Vector< const PropertyBufferDataProvider* > VertexBuffers;
- typedef Dali::Vector< const SamplerDataProvider* > Samplers;
+ typedef std::vector< Render::Sampler* > Samplers;
/**
* Constructor.
* The RendererAttachment that creates this object will initialize the members
* directly.
*/
- RenderDataProvider();
+ RenderDataProvider( AnimatableProperty< float >& opacity );
/**
* Destructor
~RenderDataProvider();
public:
- /**
- * Set the geometry data provider
- * @param[in] geometryDataProvider The geometry data provider
- */
- void SetGeometry( const GeometryDataProvider& geometryDataProvider );
-
- /**
- * Get the geometry data provider
- * @return the geometry data provider
- */
- const GeometryDataProvider& GetGeometry() const;
-
- /**
- * Set the material data provider
- * @param[in] materialDataProvider The material data provider
- */
- void SetMaterial( const MaterialDataProvider& materialDataProvider );
-
- /**
- * Get the material data provider
- * @return the material data provider
- */
- const MaterialDataProvider& GetMaterial() const;
/**
* Set the uniform map data provider
Shader& GetShader() const;
/**
- * Set the index buffer
- * @param[in] indexBuffer the index buffer to set
- */
- void SetIndexBuffer( const PropertyBufferDataProvider* indexBuffer );
-
- /**
- * Get the index buffer of the geometry
- * @return A const reference to the index buffer
+ * Returns the list of samplers
+ * @return The list of samplers
*/
- const PropertyBufferDataProvider* GetIndexBuffer() const;
+ Samplers& GetSamplers();
/**
- * Set the vertex buffers
- * @param[in] vertexBuffers The vertex buffers
+ * Returns the list of Textures
+ * @return The list of Textures
*/
- void SetVertexBuffers( const VertexBuffers& vertexBuffers );
+ std::vector<Render::Texture*>& GetTextures();
/**
- * Get the vertex buffers of the geometry
- * @return A const reference to the vertex buffers
+ * Get the opacity
+ * @return The opacity
*/
- const VertexBuffers& GetVertexBuffers() const;
+ float GetOpacity( BufferIndex bufferIndex );
- /**
- * Set the sampler data providers
- * @param[in] samplers The sampler data providers
- */
- void SetSamplers( const Samplers& samplers );
+private:
- /**
- * Returns the list of sampler data providers
- * @return The list of samplers
- */
- const Samplers& GetSamplers() const;
+ const UniformMapDataProvider* mUniformMapDataProvider;
+ Shader* mShader;
+ std::vector<Render::Texture*> mTextures;
+ Samplers mSamplers;
+ AnimatableProperty< float >& mOpacity;
-private:
- const GeometryDataProvider* mGeometryDataProvider;
- const MaterialDataProvider* mMaterialDataProvider;
- const UniformMapDataProvider* mUniformMapDataProvider;
- Shader* mShader;
- const PropertyBufferDataProvider* mIndexBuffer;
- VertexBuffers mVertexBuffers;
- Samplers mSamplers;
-
-// Give RendererAttachment access to our private data to reduce copying vectors on construction.
- friend class RendererAttachment;
+ // Give Renderer access to our private data to reduce copying vectors on construction.
+ friend class Renderer;
};
} // SceneGraph