#include <dali/internal/update/rendering/scene-graph-renderer.h>
#include <dali/internal/render/shaders/scene-graph-shader.h>
#include <dali/internal/render/renderers/render-property-buffer.h>
+#include <dali/internal/event/rendering/texture-impl.h>
namespace Dali
{
/**
* Uploads data to a texture owned by the RenderManager
* @param[in] texture The texture
- * @param[in] buffer Vector with the data to be uploaded
+ * @param[in] pixelData The pixel data object
* @param[in] params The parameters for the upload
*/
- void UploadTexture( Render::NewTexture* texture, Vector<unsigned char>& buffer, const TextureUploadParams& params );
+ void UploadTexture( Render::NewTexture* texture, PixelDataPtr pixelData, const NewTexture::UploadParams& params );
/**
* Generates mipmaps for a texture owned by the RenderManager
*/
void AttachColorTextureToFrameBuffer( Render::FrameBuffer* frameBuffer, Render::NewTexture* texture, unsigned int mipmapLevel, unsigned int face );
- /**
- * Attach a texture as depth-stencil to an existing FrameBuffer
- * @param[in] frameBuffer The FrameBuffer
- * @param[in] texture The texture that will be used as depth-stencil buffer when rendering
- */
- void AttachDepthStencilTextureToFrameBuffer( Render::FrameBuffer* frameBuffer, Render::NewTexture* texture );
-
public:
/**
new (slot) LocalType( &manager, &UpdateManager::RemoveTexture, &texture );
}
-template< typename T >
-class UploadTextureDataMessage : public MessageBase
-{
-public:
-
- /**
- * Constructor which does a Vector::Swap()
- */
- UploadTextureDataMessage( T* manager, Render::NewTexture* texture, Dali::Vector<unsigned char>& data, const Dali::TextureUploadParams& params )
- : MessageBase(),
- mManager( manager ),
- mRenderTexture( texture ),
- mParams( params )
- {
- mData.Swap( data );
- }
-
- /**
- * Virtual destructor
- */
- virtual ~UploadTextureDataMessage()
- {
- }
-
- /**
- * @copydoc MessageBase::Process
- */
- virtual void Process( BufferIndex /*bufferIndex*/ )
- {
- DALI_ASSERT_DEBUG( mManager && "Message does not have an object" );
- mManager->UploadTexture( mRenderTexture, mData, mParams );
- }
-
-private:
-
- T* mManager;
- Render::NewTexture* mRenderTexture;
- Dali::Vector<unsigned char> mData;
- Dali::TextureUploadParams mParams;
-};
-
-inline void UploadTextureMessage( UpdateManager& manager, Render::NewTexture& texture, Dali::Vector<unsigned char>& data, const Dali::TextureUploadParams& params )
+inline void UploadTextureMessage( UpdateManager& manager, Render::NewTexture& texture, PixelDataPtr pixelData, const NewTexture::UploadParams& params )
{
- typedef UploadTextureDataMessage< UpdateManager > LocalType;
+ typedef MessageValue3< UpdateManager, Render::NewTexture*, PixelDataPtr, NewTexture::UploadParams > LocalType;
// Reserve some memory inside the message queue
unsigned int* slot = manager.ReserveMessageSlot( sizeof( LocalType ) );
// Construct message in the message queue memory; note that delete should not be called on the return value
- new (slot) LocalType( &manager, &texture, data, params );
+ new (slot) LocalType( &manager, &UpdateManager::UploadTexture, &texture, pixelData, params );
}
inline void GenerateMipmapsMessage( UpdateManager& manager, Render::NewTexture& texture )