mIndexedDrawFirstElement( 0u ),
mIndexedDrawElementsCount( 0u ),
mBlendBitmask( 0u ),
- mReferenceCount( 0u ),
mRegenerateUniformMap( 0u ),
mResendFlag( 0u ),
mDepthFunction( DepthFunction::LESS ),
mShader->RemoveConnectionObserver(*this);
mShader=NULL;
}
-
}
void Renderer::operator delete( void* ptr )
mResendFlag |= RESEND_DEPTH_FUNCTION;
}
-//Called when a node with this renderer is added to the stage
-void Renderer::OnStageConnect()
-{
- ++mReferenceCount;
- if( !mRenderer)
- {
- RenderDataProvider* dataProvider = NewRenderDataProvider();
-
- mRenderer = Render::Renderer::New( dataProvider, mGeometry,
- mBlendBitmask, mBlendColor,
- static_cast< FaceCullingMode::Type >( mFaceCullingMode ),
- mPremultipledAlphaEnabled,
- mDepthWriteMode,
- mDepthTestMode,
- mDepthFunction );
-
- mSceneController->GetRenderMessageDispatcher().AddRenderer( *mRenderer );
- mResendFlag = 0;
- }
-}
-
-//Called when the node with this renderer has gone out of the stage
-void Renderer::OnStageDisconnect()
-{
- --mReferenceCount;
- if( mReferenceCount == 0 )
- {
- mSceneController->GetRenderMessageDispatcher().RemoveRenderer( *mRenderer );
- mRenderer = NULL;
- }
-}
-
//Called when SceneGraph::Renderer is added to update manager ( that happens when an "event-thread renderer" is created )
void Renderer::ConnectToSceneGraph( SceneController& sceneController, BufferIndex bufferIndex )
{
mRegenerateUniformMap = REGENERATE_UNIFORM_MAP;
mSceneController = &sceneController;
-}
+ RenderDataProvider* dataProvider = NewRenderDataProvider();
+ mRenderer = Render::Renderer::New( dataProvider, mGeometry,
+ mBlendBitmask, mBlendColor,
+ static_cast< FaceCullingMode::Type >( mFaceCullingMode ),
+ mPremultipledAlphaEnabled,
+ mDepthWriteMode,
+ mDepthTestMode,
+ mDepthFunction );
+ mSceneController->GetRenderMessageDispatcher().AddRenderer( *mRenderer );
+}
//Called just before destroying the scene-graph renderer ( when the "event-thread renderer" is no longer referenced )
void Renderer::DisconnectFromSceneGraph( SceneController& sceneController, BufferIndex bufferIndex )
{
mSceneController->GetRenderMessageDispatcher().RemoveRenderer( *mRenderer );
mRenderer = NULL;
- mSceneController = NULL;
}
+ mSceneController = NULL;
}
RenderDataProvider* Renderer::NewRenderDataProvider()
const CollectedUniformMap& Renderer::GetUniformMap( BufferIndex bufferIndex ) const
{
return mCollectedUniformMap[bufferIndex];
-};
+}
void Renderer::GetReadyAndComplete( bool& ready, bool& complete ) const
{
void SetDepthFunction( DepthFunction::Type depthFunction );
/**
- * Called when an actor with this renderer is added to the stage
- */
- void OnStageConnect();
-
- /*
- * Called when an actor with this renderer is removed from the stage
- */
- void OnStageDisconnect();
-
- /**
* Prepare the object for rendering.
* This is called by the UpdateManager when an object is due to be rendered in the current frame.
* @param[in] updateBufferIndex The current update buffer index.
Opacity GetOpacity( BufferIndex updateBufferIndex, const Node& node ) const;
/**
- * Query whether the renderer is currently in use by an actor on the stage
- */
- bool IsReferenced() const
- {
- return mReferenceCount > 0;
- }
-
- /**
* Called by the TextureSet to notify to the renderer that it has changed
*/
void TextureSetChanged();
size_t mIndexedDrawFirstElement; ///< first element index to be drawn using indexed draw
size_t mIndexedDrawElementsCount; ///< number of elements to be drawn using indexed draw
unsigned int mBlendBitmask; ///< The bitmask of blending options
- unsigned int mReferenceCount; ///< Number of nodes currently using this renderer
unsigned int mRegenerateUniformMap; ///< 2 if the map should be regenerated, 1 if it should be copied.
unsigned short mResendFlag; ///< Indicate whether data should be resent to the renderer
new (slot) LocalType( &renderer, &Renderer::SetDepthFunction, depthFunction );
}
-inline void OnStageConnectMessage( EventThreadServices& eventThreadServices, const Renderer& renderer )
-{
- typedef Message< Renderer > LocalType;
-
- // Reserve some memory inside the message queue
- unsigned int* slot = eventThreadServices.ReserveMessageSlot( sizeof( LocalType ) );
-
- // Construct message in the message queue memory; note that delete should not be called on the return value
- new (slot) LocalType( &renderer, &Renderer::OnStageConnect );
-}
-
-inline void OnStageDisconnectMessage( EventThreadServices& eventThreadServices, const Renderer& renderer )
-{
- typedef Message< Renderer > LocalType;
-
- // Reserve some memory inside the message queue
- unsigned int* slot = eventThreadServices.ReserveMessageSlot( sizeof( LocalType ) );
-
- // Construct message in the message queue memory; note that delete should not be called on the return value
- new (slot) LocalType( &renderer, &Renderer::OnStageDisconnect );
-}
-
} // namespace SceneGraph
} // namespace Internal
} // namespace Dali