RefPointer<DataBuffer> VertexArrayBuffer::GetOrCreateBuffer(BindingInfo const & bindingInfo, bool isDynamic) { TBuffersMap * buffers = NULL; if (isDynamic) buffers = &m_dynamicBuffers; else buffers = &m_staticBuffers; TBuffersMap::iterator it = buffers->find(bindingInfo); if (it == buffers->end()) { MasterPointer<DataBuffer> & buffer = (*buffers)[bindingInfo]; buffer.Reset(new DataBuffer(bindingInfo.GetElementSize(), m_dataBufferSize)); return buffer.GetRefPointer(); } return it->second.GetRefPointer(); }
ref_ptr<DataBuffer> VertexArrayBuffer::GetOrCreateBuffer(BindingInfo const & bindingInfo, bool isDynamic) { TBuffersMap * buffers = nullptr; if (isDynamic) buffers = &m_dynamicBuffers; else buffers = &m_staticBuffers; TBuffersMap::iterator it = buffers->find(bindingInfo); if (it == buffers->end()) { drape_ptr<DataBuffer> dataBuffer = make_unique_dp<DataBuffer>(bindingInfo.GetElementSize(), m_dataBufferSize); ref_ptr<DataBuffer> result = make_ref(dataBuffer); (*buffers).insert(make_pair(bindingInfo, move(dataBuffer))); return result; } return make_ref(it->second); }