diff --git a/src/Magnum/Trade/MeshData.h b/src/Magnum/Trade/MeshData.h index bf8257690..072c50fa4 100644 --- a/src/Magnum/Trade/MeshData.h +++ b/src/Magnum/Trade/MeshData.h @@ -395,6 +395,9 @@ class MAGNUM_TRADE_EXPORT MeshAttributeData { */ explicit MeshAttributeData(MeshAttribute name, VertexFormat format, UnsignedShort arraySize, const Containers::StridedArrayView2D& data) noexcept; + /** @overload */ + explicit MeshAttributeData(MeshAttribute name, VertexFormat format, UnsignedShort arraySize, std::nullptr_t) noexcept: MeshAttributeData{name, format, arraySize, nullptr, nullptr} {} + /** * @brief Constructor * @param name Attribute name diff --git a/src/Magnum/Trade/Test/MeshDataTest.cpp b/src/Magnum/Trade/Test/MeshDataTest.cpp index 07a89b6e0..b5531e859 100644 --- a/src/Magnum/Trade/Test/MeshDataTest.cpp +++ b/src/Magnum/Trade/Test/MeshDataTest.cpp @@ -72,6 +72,7 @@ struct MeshDataTest: TestSuite::Tester { void constructArrayAttribute2DWrongSize(); void constructArrayAttribute2DNonContiguous(); void constructArrayAttributeTypeErased(); + void constructArrayAttributeNullptr(); void constructArrayAttributeOffsetOnly(); void constructArrayAttributeNotAllowed(); @@ -231,6 +232,7 @@ MeshDataTest::MeshDataTest() { &MeshDataTest::constructArrayAttribute2DWrongSize, &MeshDataTest::constructArrayAttribute2DNonContiguous, &MeshDataTest::constructArrayAttributeTypeErased, + &MeshDataTest::constructArrayAttributeNullptr, &MeshDataTest::constructArrayAttributeOffsetOnly, &MeshDataTest::constructArrayAttributeNotAllowed}); @@ -880,6 +882,15 @@ void MeshDataTest::constructArrayAttributeTypeErased() { CORRADE_COMPARE(data.data().stride(), sizeof(Vector2)*4); } +void MeshDataTest::constructArrayAttributeNullptr() { + MeshAttributeData positions{meshAttributeCustom(35), VertexFormat::Vector2, 4, nullptr}; + CORRADE_VERIFY(!positions.isOffsetOnly()); + CORRADE_COMPARE(positions.arraySize(), 4); + CORRADE_COMPARE(positions.name(), meshAttributeCustom(35)); + CORRADE_COMPARE(positions.format(), VertexFormat::Vector2); + CORRADE_VERIFY(!positions.data().data()); +} + void MeshDataTest::constructArrayAttributeOffsetOnly() { MeshAttributeData data{meshAttributeCustom(35), VertexFormat::Vector2, sizeof(Vector2), 3, sizeof(Vector2), 4}; CORRADE_VERIFY(data.isOffsetOnly());