From 0401c4ded82070692c892cf074efe13d70c50000 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vladim=C3=ADr=20Vondru=C5=A1?= Date: Thu, 2 Feb 2023 22:20:15 +0100 Subject: [PATCH] Trade,Primitives: use a correct type-erased view for MeshAttributeData. This got probably implemented long before the change in c74b4c6b90ae0e62230c492948b82c59d4e8cbaa. Or actually maybe not at all. In any case, it'd cause an ambiguity with the 2D char view constructor when the "updimensioning" StridedArrayView constructor gets introduced. --- src/Magnum/Primitives/Implementation/Spheroid.cpp | 12 ++++-------- src/Magnum/Trade/Test/MeshDataTest.cpp | 4 ++-- 2 files changed, 6 insertions(+), 10 deletions(-) diff --git a/src/Magnum/Primitives/Implementation/Spheroid.cpp b/src/Magnum/Primitives/Implementation/Spheroid.cpp index 25acca688..0be690d6a 100644 --- a/src/Magnum/Primitives/Implementation/Spheroid.cpp +++ b/src/Magnum/Primitives/Implementation/Spheroid.cpp @@ -247,29 +247,25 @@ Trade::MeshData Spheroid::finalize() { Containers::Array attributes{_attributeCount}; attributes[attributeOffset++] = Trade::MeshAttributeData{ Trade::MeshAttribute::Position, VertexFormat::Vector3, - /* GCC 4.8 can't handle the stridedArrayView() convenience thing */ - Containers::StridedArrayView1D{_vertexData, + Containers::StridedArrayView1D{_vertexData, _vertexData.data(), _vertexData.size()/_stride, std::ptrdiff_t(_stride)}}; attributes[attributeOffset++] = Trade::MeshAttributeData{ Trade::MeshAttribute::Normal, VertexFormat::Vector3, - /* GCC 4.8 can't handle the stridedArrayView() convenience thing */ - Containers::StridedArrayView1D{_vertexData, + Containers::StridedArrayView1D{_vertexData, _vertexData.data() + sizeof(Vector3), _vertexData.size()/_stride, std::ptrdiff_t(_stride)}}; if(_flags & Flag::Tangents) attributes[attributeOffset++] = Trade::MeshAttributeData{ Trade::MeshAttribute::Tangent, VertexFormat::Vector4, - /* GCC 4.8 can't handle the stridedArrayView() convenience thing */ - Containers::StridedArrayView1D{_vertexData, + Containers::StridedArrayView1D{_vertexData, _vertexData.data() + _tangentOffset, _vertexData.size()/_stride, std::ptrdiff_t(_stride)}}; if(_flags & Flag::TextureCoordinates) attributes[attributeOffset++] = Trade::MeshAttributeData{ Trade::MeshAttribute::TextureCoordinates, VertexFormat::Vector2, - /* GCC 4.8 can't handle the stridedArrayView() convenience thing */ - Containers::StridedArrayView1D{_vertexData, + Containers::StridedArrayView1D{_vertexData, _vertexData.data() + _textureCoordinateOffset, _vertexData.size()/_stride, std::ptrdiff_t(_stride)}}; diff --git a/src/Magnum/Trade/Test/MeshDataTest.cpp b/src/Magnum/Trade/Test/MeshDataTest.cpp index 341597176..fd4141b6a 100644 --- a/src/Magnum/Trade/Test/MeshDataTest.cpp +++ b/src/Magnum/Trade/Test/MeshDataTest.cpp @@ -889,7 +889,7 @@ void MeshDataTest::constructAttribute2DNonContiguous() { void MeshDataTest::constructAttributeTypeErased() { const Vector3 positionData[3]{}; - MeshAttributeData positions{MeshAttribute::Position, VertexFormat::Vector3, Containers::arrayCast(Containers::stridedArrayView(positionData))}; + MeshAttributeData positions{MeshAttribute::Position, VertexFormat::Vector3, Containers::StridedArrayView1D{positionData}}; CORRADE_VERIFY(!positions.isOffsetOnly()); CORRADE_COMPARE(positions.arraySize(), 0); CORRADE_COMPARE(positions.name(), MeshAttribute::Position); @@ -1131,7 +1131,7 @@ void MeshDataTest::constructArrayAttribute2DNonContiguous() { void MeshDataTest::constructArrayAttributeTypeErased() { Vector2 vertexData[3*4]; Containers::StridedArrayView1D attribute{vertexData, 3, 4*sizeof(Vector2)}; - MeshAttributeData data{meshAttributeCustom(35), VertexFormat::Vector2, Containers::arrayCast(attribute), 4}; + MeshAttributeData data{meshAttributeCustom(35), VertexFormat::Vector2, Containers::StridedArrayView1D{attribute}, 4}; CORRADE_VERIFY(!data.isOffsetOnly()); CORRADE_COMPARE(data.name(), meshAttributeCustom(35)); CORRADE_COMPARE(data.format(), VertexFormat::Vector2);