Browse Source

Shaders: avoid MeshVisualizer::VertexIndex reusing a generic color slot.

Can't really future-proof that, so just adding a lot of comments
everywhere.
findsdl-include-root
Vladimír Vondruš 7 years ago
parent
commit
9315175a72
  1. 4
      src/Magnum/Shaders/Generic.h
  2. 2
      src/Magnum/Shaders/MeshVisualizer.h
  3. 2
      src/Magnum/Shaders/MeshVisualizer.vert
  4. 13
      src/Magnum/Shaders/Test/MeshVisualizerTest.cpp

4
src/Magnum/Shaders/Generic.h

@ -66,6 +66,10 @@ template<UnsignedInt dimensions> struct Generic {
#endif
};
/* Index 5 used by MeshVisualizer::VertexIndex. Update
MeshVisualizerTest::vertexIndexNoConflict() when adding new attributes
here. */
/**
* @brief Vertex position
*

2
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 {
/**

2
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)

13
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<MeshVisualizer, const MeshVisualizer&>{}));
}
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;

Loading…
Cancel
Save