+RenderDataProvider* RendererAttachment::NewRenderDataProvider()
+{
+ RenderDataProvider* dataProvider = new RenderDataProvider();
+
+ dataProvider->mGeometryDataProvider = mGeometry;
+ dataProvider->mMaterialDataProvider = mMaterial;
+ dataProvider->mUniformMapDataProvider = this;
+ dataProvider->mShader = mMaterial->GetShader();
+ dataProvider->mIndexBuffer = mGeometry->GetIndexBuffer();
+
+ Vector<PropertyBuffer*>& vertexBuffers = mGeometry->GetVertexBuffers();
+ dataProvider->mVertexBuffers.Reserve( vertexBuffers.Count() );
+
+ for( Vector<PropertyBuffer*>::Iterator iter = vertexBuffers.Begin() ;
+ iter != vertexBuffers.End();
+ ++iter )
+ {
+ dataProvider->mVertexBuffers.PushBack(*iter); // Convert from derived type to base type
+ }
+
+ Vector<Sampler*>& samplers = mMaterial->GetSamplers();
+ dataProvider->mSamplers.Reserve( samplers.Count() );
+ for( Vector<Sampler*>::Iterator iter = samplers.Begin() ;
+ iter != samplers.End();
+ ++iter )
+ {
+ dataProvider->mSamplers.PushBack(*iter); // Convert from derived type to base type
+ }
+ return dataProvider;
+}