public IndexBuffer GetIndexBuffer(MeshData mesh, out int indexCount) { IndexBufferAndCount bufferAndCount = GetIndexBufferAndCount(mesh); indexCount = bufferAndCount.IndexCount; return(bufferAndCount.Buffer); }
public IndexBufferAndCount GetIndexBufferAndCount(MeshData mesh) { int indexCount; IndexBufferAndCount bufferAndCount; BufferKey key = new BufferKey(mesh); if (!_ibs.TryGetValue(key, out bufferAndCount)) { var indexBuffer = mesh.CreateIndexBuffer(_factory, out indexCount); bufferAndCount = new IndexBufferAndCount(indexBuffer, indexCount); if (!_ibs.TryAdd(key, bufferAndCount)) { indexBuffer.Dispose(); return(_ibs[key]); } } else { indexCount = bufferAndCount.IndexCount; } return(bufferAndCount); }