message: Implement zero-copy index adapter
  In cases where the index type is the same size as unsigned int, we can
  just cast the pointers and use the existing implementation as is.
diff: @@ -128,8 +128,11 @@ inline unsigned short quantizeHalf(float v);
  namespace meshopt
  {
  +template <typename T, bool ZeroCopy = sizeof(T) == sizeof(unsigned int)>
  +struct IndexAdapter;
  +
  template <typename T>
  -struct IndexAdapter
  +struct IndexAdapter<T, false>
  {
  T* result;
  unsigned int* data;
  @@ -158,6 +161,16 @@ struct IndexAdapter
  }
  };
  +template <typename T>
  +struct IndexAdapter<T, true>
  +{
  + unsigned int* data;
  +
  + IndexAdapter(T* result, const T* input, size_t): data(reinterpret_cast<unsigned int*>(result ? result : const_cast<T*>(input)))
  + {
  + }
  +};
  +
  template <typename T>
  inline size_t generateVertexRemap(unsigned int* destination, const T* indices, size_t index_count, const void* vertices, size_t vertex_count, size_t vertex_size)
  {
  