From 563f5222b52f8ac0483c1c858c80aaf28087fca3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vladim=C3=ADr=20Vondru=C5=A1?= Date: Mon, 16 Sep 2019 12:42:56 +0200 Subject: [PATCH] python: better way to expose shader attributes. Using the newly added GL::Attribute -> GL::DynamicAttribute constructor. Much less redundant, much less error-prone. --- src/python/magnum/shaders.cpp | 35 +++++++---------------------------- 1 file changed, 7 insertions(+), 28 deletions(-) diff --git a/src/python/magnum/shaders.cpp b/src/python/magnum/shaders.cpp index 55484cb..71aa9a0 100644 --- a/src/python/magnum/shaders.cpp +++ b/src/python/magnum/shaders.cpp @@ -40,14 +40,8 @@ namespace { template void vertexColor(PyNonDestructibleClass, GL::AbstractShaderProgram>& c) { /* Attributes */ - c.attr("COLOR3") = GL::DynamicAttribute{ - GL::DynamicAttribute::Kind::Generic, 3, - GL::DynamicAttribute::Components::Three, - GL::DynamicAttribute::DataType::Float}; - c.attr("COLOR4") = GL::DynamicAttribute{ - GL::DynamicAttribute::Kind::Generic, 3, - GL::DynamicAttribute::Components::Four, - GL::DynamicAttribute::DataType::Float}; + c.attr("COLOR3") = GL::DynamicAttribute{typename Shaders::VertexColor::Color3{}}; + c.attr("COLOR4") = GL::DynamicAttribute{typename Shaders::VertexColor::Color4{}}; /* Methods */ c @@ -76,14 +70,8 @@ void shaders(py::module& m) { "VertexColor2D", "2D vertex color shader"}; PyNonDestructibleClass vertexColor3D{m, "VertexColor3D", "3D vertex color shader"}; - vertexColor2D.attr("POSITION") = GL::DynamicAttribute{ - GL::DynamicAttribute::Kind::Generic, 0, - GL::DynamicAttribute::Components::Two, - GL::DynamicAttribute::DataType::Float}; - vertexColor3D.attr("POSITION") = GL::DynamicAttribute{ - GL::DynamicAttribute::Kind::Generic, 0, - GL::DynamicAttribute::Components::Three, - GL::DynamicAttribute::DataType::Float}; + vertexColor2D.attr("POSITION") = GL::DynamicAttribute{Shaders::VertexColor2D::Position{}}; + vertexColor3D.attr("POSITION") = GL::DynamicAttribute{Shaders::VertexColor3D::Position{}}; vertexColor(vertexColor2D); vertexColor(vertexColor3D); } @@ -92,18 +80,9 @@ void shaders(py::module& m) { { PyNonDestructibleClass phong{m, "Phong", "Phong shader"}; - phong.attr("POSITION") = GL::DynamicAttribute{ - GL::DynamicAttribute::Kind::Generic, 0, - GL::DynamicAttribute::Components::Three, - GL::DynamicAttribute::DataType::Float}; - phong.attr("TEXTURE_COORDINATES") = GL::DynamicAttribute{ - GL::DynamicAttribute::Kind::Generic, 1, - GL::DynamicAttribute::Components::Two, - GL::DynamicAttribute::DataType::Float}; - phong.attr("NORMAL") = GL::DynamicAttribute{ - GL::DynamicAttribute::Kind::Generic, 2, - GL::DynamicAttribute::Components::Three, - GL::DynamicAttribute::DataType::Float}; + phong.attr("POSITION") = GL::DynamicAttribute{Shaders::Phong::Position{}}; + phong.attr("NORMAL") = GL::DynamicAttribute{Shaders::Phong::Normal{}}; + phong.attr("TEXTURE_COORDINATES") = GL::DynamicAttribute{Shaders::Phong::TextureCoordinates{}}; py::enum_ flags{phong, "Flags", "Flags"};