Browse Source

MeshTools: simplify compressIndices() internals.

This code got written in the Stone Age days, it seems. Also, the array
can be NoInit'd, no need to waste time zero-initializing it first.
pull/617/head
Vladimír Vondruš 3 years ago
parent
commit
c5f96637ce
  1. 10
      src/Magnum/MeshTools/CompressIndices.cpp

10
src/Magnum/MeshTools/CompressIndices.cpp

@ -25,7 +25,6 @@
#include "CompressIndices.h" #include "CompressIndices.h"
#include <cstring>
#include <Corrade/Containers/Array.h> #include <Corrade/Containers/Array.h>
#include <Corrade/Containers/Pair.h> #include <Corrade/Containers/Pair.h>
#include <Corrade/Utility/Algorithms.h> #include <Corrade/Utility/Algorithms.h>
@ -46,11 +45,10 @@ namespace {
template<class T, class U> inline Containers::Array<char> compress(const Containers::StridedArrayView1D<const U>& indices, Long offset) { template<class T, class U> inline Containers::Array<char> compress(const Containers::StridedArrayView1D<const U>& indices, Long offset) {
/* Can't use Math::castInto() here because we're subtracting an offset in /* Can't use Math::castInto() here because we're subtracting an offset in
addition */ addition */
Containers::Array<char> buffer(indices.size()*sizeof(T)); Containers::Array<char> buffer{NoInit, indices.size()*sizeof(T)};
for(std::size_t i = 0; i != indices.size(); ++i) { const Containers::ArrayView<T> view = Containers::arrayCast<T>(buffer);
T index = static_cast<T>(indices[i] - offset); for(std::size_t i = 0; i != indices.size(); ++i)
std::memcpy(buffer.begin()+i*sizeof(T), &index, sizeof(T)); view[i] = indices[i] - offset;
}
return buffer; return buffer;
} }

Loading…
Cancel
Save