diff --git a/src/Magnum/Shaders/Generic.h b/src/Magnum/Shaders/Generic.h index 3b401e660..f9160f9d4 100644 --- a/src/Magnum/Shaders/Generic.h +++ b/src/Magnum/Shaders/Generic.h @@ -66,6 +66,10 @@ template struct Generic { #endif }; + /* Index 5 used by MeshVisualizer::VertexIndex. Update + MeshVisualizerTest::vertexIndexNoConflict() when adding new attributes + here. */ + /** * @brief Vertex position * diff --git a/src/Magnum/Shaders/MeshVisualizer.h b/src/Magnum/Shaders/MeshVisualizer.h index 3961a4c47..18a92a4b7 100644 --- a/src/Magnum/Shaders/MeshVisualizer.h +++ b/src/Magnum/Shaders/MeshVisualizer.h @@ -125,7 +125,7 @@ class MAGNUM_SHADERS_EXPORT MeshVisualizer: public GL::AbstractShaderProgram { * @cb{.glsl} gl_VertexID @ce shader builtin, so the attribute is not * needed. */ - typedef GL::Attribute<3, Float> VertexIndex; + typedef GL::Attribute<5, Float> VertexIndex; enum: UnsignedInt { /** diff --git a/src/Magnum/Shaders/MeshVisualizer.vert b/src/Magnum/Shaders/MeshVisualizer.vert index 7eac5adcf..c1f8810a9 100644 --- a/src/Magnum/Shaders/MeshVisualizer.vert +++ b/src/Magnum/Shaders/MeshVisualizer.vert @@ -45,7 +45,7 @@ in highp vec4 position; #if defined(WIREFRAME_RENDERING) && defined(NO_GEOMETRY_SHADER) #if (!defined(GL_ES) && __VERSION__ < 140) || (defined(GL_ES) && __VERSION__ < 300) #ifdef EXPLICIT_ATTRIB_LOCATION -layout(location = 3) +layout(location = 5) #endif in lowp float vertexIndex; #define gl_VertexID int(vertexIndex) diff --git a/src/Magnum/Shaders/Test/MeshVisualizerTest.cpp b/src/Magnum/Shaders/Test/MeshVisualizerTest.cpp index a68ebba4f..6ca3b1683 100644 --- a/src/Magnum/Shaders/Test/MeshVisualizerTest.cpp +++ b/src/Magnum/Shaders/Test/MeshVisualizerTest.cpp @@ -37,6 +37,8 @@ struct MeshVisualizerTest: TestSuite::Tester { void constructNoCreate(); void constructCopy(); + void vertexIndexNoConflict(); + void debugFlag(); void debugFlags(); }; @@ -45,6 +47,8 @@ MeshVisualizerTest::MeshVisualizerTest() { addTests({&MeshVisualizerTest::constructNoCreate, &MeshVisualizerTest::constructCopy, + &MeshVisualizerTest::vertexIndexNoConflict, + &MeshVisualizerTest::debugFlag, &MeshVisualizerTest::debugFlags}); } @@ -63,6 +67,15 @@ void MeshVisualizerTest::constructCopy() { CORRADE_VERIFY(!(std::is_assignable{})); } +void MeshVisualizerTest::vertexIndexNoConflict() { + CORRADE_VERIFY(MeshVisualizer::VertexIndex::Location != Generic3D::Position::Location); + CORRADE_VERIFY(MeshVisualizer::VertexIndex::Location != Generic3D::Normal::Location); + CORRADE_VERIFY(MeshVisualizer::VertexIndex::Location != Generic3D::TextureCoordinates::Location); + CORRADE_VERIFY(MeshVisualizer::VertexIndex::Location != Generic3D::Color3::Location); + CORRADE_VERIFY(MeshVisualizer::VertexIndex::Location != Generic3D::Color4::Location); + CORRADE_VERIFY(MeshVisualizer::VertexIndex::Location != Generic3D::Tangent::Location); +} + void MeshVisualizerTest::debugFlag() { std::ostringstream out;