X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=dali%2Finternal%2Frender%2Frenderers%2Frender-geometry.cpp;h=83be141580cef27d0b5786cc7084d36c39d8fd5f;hb=526085088ce0ee6ee14ceb57a5f9191c65d8a2e6;hp=b407b6f9fac49a5ac8adcb4e9fef84c039259f9c;hpb=41da2a3a30b5f805876d50fae170e07592c33e86;p=platform%2Fcore%2Fuifw%2Fdali-core.git diff --git a/dali/internal/render/renderers/render-geometry.cpp b/dali/internal/render/renderers/render-geometry.cpp index b407b6f..83be141 100644 --- a/dali/internal/render/renderers/render-geometry.cpp +++ b/dali/internal/render/renderers/render-geometry.cpp @@ -93,6 +93,7 @@ void Geometry::SetIndexBuffer(Uint32ContainerType& indices) void Geometry::RemoveVertexBuffer(const Render::VertexBuffer* vertexBuffer) { const auto&& end = mVertexBuffers.End(); + // @todo if this buffer is the only instance buffer, reduce instance count to 1. for(auto&& iter = mVertexBuffers.Begin(); iter != end; ++iter) { if(*iter == vertexBuffer) @@ -159,6 +160,11 @@ bool Geometry::BindVertexAttributes(Graphics::CommandBuffer& commandBuffer) for(uint32_t i = 0; i < vertexBufferCount; ++i) { + if(mVertexBuffers[i]->GetDivisor() > 0) + { + mInstanceCount = mVertexBuffers[i]->GetElementCount(); + } + const GpuBuffer* gpuBuffer = mVertexBuffers[i]->GetGpuBuffer(); if(gpuBuffer) { @@ -219,7 +225,7 @@ bool Geometry::Draw( commandBuffer.BindIndexBuffer(*ibo, 0, mIndexType); } - commandBuffer.DrawIndexed(numIndices, 1, firstIndexOffset, 0, 0); + commandBuffer.DrawIndexed(numIndices, mInstanceCount, firstIndexOffset, 0, 0); } else { @@ -232,7 +238,7 @@ bool Geometry::Draw( numVertices = static_cast(mVertexBuffers[0]->GetElementCount()); } - commandBuffer.Draw(numVertices, 1, 0, 0); + commandBuffer.Draw(numVertices, mInstanceCount, 0, 0); } return true; }