From 4ff655740e6fab52783be9ef984683e7d1031395 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vladim=C3=ADr=20Vondru=C5=A1?= Date: Tue, 6 Sep 2022 20:45:01 +0200 Subject: [PATCH] GL: take an Iterable in AbstractShaderProgram::attachShaders(). Consistently with checkLink(), this avoids having to explicitly include both Iterable and Reference in shader code. Alsod allowing people to have direct arrays of shaders, runtime-sized lists of shaders etc. A compat include is provided on a deprecated build to avoid breaking existing code. --- src/Magnum/GL/AbstractShaderProgram.cpp | 2 +- src/Magnum/GL/AbstractShaderProgram.h | 4 +++- src/Magnum/GL/Test/MeshGLTest.cpp | 1 + src/Magnum/GL/Test/RendererGLTest.cpp | 2 +- src/Magnum/GL/Test/SampleQueryGLTest.cpp | 2 +- src/Magnum/GL/Test/TransformFeedbackGLTest.cpp | 2 +- src/Magnum/MeshTools/Test/FullScreenTriangleGLTest.cpp | 2 +- src/Magnum/Shaders/DistanceFieldVectorGL.cpp | 1 - src/Magnum/Shaders/FlatGL.cpp | 1 - src/Magnum/Shaders/MeshVisualizerGL.cpp | 1 - src/Magnum/Shaders/PhongGL.cpp | 1 - src/Magnum/Shaders/VectorGL.cpp | 1 - src/Magnum/Shaders/VertexColorGL.cpp | 1 - src/Magnum/TextureTools/DistanceField.cpp | 2 +- 14 files changed, 10 insertions(+), 13 deletions(-) diff --git a/src/Magnum/GL/AbstractShaderProgram.cpp b/src/Magnum/GL/AbstractShaderProgram.cpp index dcc1b4915..d14161ebd 100644 --- a/src/Magnum/GL/AbstractShaderProgram.cpp +++ b/src/Magnum/GL/AbstractShaderProgram.cpp @@ -536,7 +536,7 @@ void AbstractShaderProgram::attachShader(Shader& shader) { glAttachShader(_id, shader.id()); } -void AbstractShaderProgram::attachShaders(std::initializer_list> shaders) { +void AbstractShaderProgram::attachShaders(Containers::Iterable shaders) { for(Shader& s: shaders) attachShader(s); } diff --git a/src/Magnum/GL/AbstractShaderProgram.h b/src/Magnum/GL/AbstractShaderProgram.h index c01eb6e6f..b0a3bd9d8 100644 --- a/src/Magnum/GL/AbstractShaderProgram.h +++ b/src/Magnum/GL/AbstractShaderProgram.h @@ -44,6 +44,8 @@ #ifdef MAGNUM_BUILD_DEPRECATED #include +/* For attachShaders(), which used to take a std::initializer_list */ +#include /* For label() / setLabel(), which used to be a std::string */ #include #endif @@ -1414,7 +1416,7 @@ class MAGNUM_GL_EXPORT AbstractShaderProgram: public AbstractObject { * than one shader at once. Other than that there is no other * (performance) difference when using this function. */ - void attachShaders(std::initializer_list> shaders); + void attachShaders(Containers::Iterable shaders); /** * @brief Bind an attribute to given location diff --git a/src/Magnum/GL/Test/MeshGLTest.cpp b/src/Magnum/GL/Test/MeshGLTest.cpp index a56257f88..01c17f3ea 100644 --- a/src/Magnum/GL/Test/MeshGLTest.cpp +++ b/src/Magnum/GL/Test/MeshGLTest.cpp @@ -25,6 +25,7 @@ */ #include +#include #include #include #include diff --git a/src/Magnum/GL/Test/RendererGLTest.cpp b/src/Magnum/GL/Test/RendererGLTest.cpp index 5b93a64c5..e9818be2c 100644 --- a/src/Magnum/GL/Test/RendererGLTest.cpp +++ b/src/Magnum/GL/Test/RendererGLTest.cpp @@ -23,9 +23,9 @@ DEALINGS IN THE SOFTWARE. */ +#include #include #include -#include #include #include diff --git a/src/Magnum/GL/Test/SampleQueryGLTest.cpp b/src/Magnum/GL/Test/SampleQueryGLTest.cpp index 8df0ac97f..1481db0c4 100644 --- a/src/Magnum/GL/Test/SampleQueryGLTest.cpp +++ b/src/Magnum/GL/Test/SampleQueryGLTest.cpp @@ -23,7 +23,7 @@ DEALINGS IN THE SOFTWARE. */ -#include +#include #include #include diff --git a/src/Magnum/GL/Test/TransformFeedbackGLTest.cpp b/src/Magnum/GL/Test/TransformFeedbackGLTest.cpp index ad6268e87..08eba636a 100644 --- a/src/Magnum/GL/Test/TransformFeedbackGLTest.cpp +++ b/src/Magnum/GL/Test/TransformFeedbackGLTest.cpp @@ -24,7 +24,7 @@ */ #include -#include +#include #include "Magnum/Image.h" #include "Magnum/GL/AbstractShaderProgram.h" diff --git a/src/Magnum/MeshTools/Test/FullScreenTriangleGLTest.cpp b/src/Magnum/MeshTools/Test/FullScreenTriangleGLTest.cpp index ebfab2401..9fa791b77 100644 --- a/src/Magnum/MeshTools/Test/FullScreenTriangleGLTest.cpp +++ b/src/Magnum/MeshTools/Test/FullScreenTriangleGLTest.cpp @@ -24,7 +24,7 @@ */ #include -#include +#include #include #include diff --git a/src/Magnum/Shaders/DistanceFieldVectorGL.cpp b/src/Magnum/Shaders/DistanceFieldVectorGL.cpp index 834c14b7b..9b852be30 100644 --- a/src/Magnum/Shaders/DistanceFieldVectorGL.cpp +++ b/src/Magnum/Shaders/DistanceFieldVectorGL.cpp @@ -28,7 +28,6 @@ #include #include -#include #include #include "Magnum/GL/Context.h" diff --git a/src/Magnum/Shaders/FlatGL.cpp b/src/Magnum/Shaders/FlatGL.cpp index 03a99e54b..2bc1cb68e 100644 --- a/src/Magnum/Shaders/FlatGL.cpp +++ b/src/Magnum/Shaders/FlatGL.cpp @@ -28,7 +28,6 @@ #include #include -#include #include #include "Magnum/GL/Context.h" diff --git a/src/Magnum/Shaders/MeshVisualizerGL.cpp b/src/Magnum/Shaders/MeshVisualizerGL.cpp index 7ec8b1671..7a093c2ee 100644 --- a/src/Magnum/Shaders/MeshVisualizerGL.cpp +++ b/src/Magnum/Shaders/MeshVisualizerGL.cpp @@ -28,7 +28,6 @@ #include #include -#include #include #include diff --git a/src/Magnum/Shaders/PhongGL.cpp b/src/Magnum/Shaders/PhongGL.cpp index d0fd391d9..6d1aaa13b 100644 --- a/src/Magnum/Shaders/PhongGL.cpp +++ b/src/Magnum/Shaders/PhongGL.cpp @@ -31,7 +31,6 @@ #endif #include #include -#include #include #include #include diff --git a/src/Magnum/Shaders/VectorGL.cpp b/src/Magnum/Shaders/VectorGL.cpp index 272d0c5e8..f06d5cba4 100644 --- a/src/Magnum/Shaders/VectorGL.cpp +++ b/src/Magnum/Shaders/VectorGL.cpp @@ -28,7 +28,6 @@ #include #include -#include #include #include "Magnum/GL/Context.h" diff --git a/src/Magnum/Shaders/VertexColorGL.cpp b/src/Magnum/Shaders/VertexColorGL.cpp index 848ba907f..77907b903 100644 --- a/src/Magnum/Shaders/VertexColorGL.cpp +++ b/src/Magnum/Shaders/VertexColorGL.cpp @@ -28,7 +28,6 @@ #include #include -#include #include #include "Magnum/GL/Context.h" diff --git a/src/Magnum/TextureTools/DistanceField.cpp b/src/Magnum/TextureTools/DistanceField.cpp index c600dc2af..841ead75a 100644 --- a/src/Magnum/TextureTools/DistanceField.cpp +++ b/src/Magnum/TextureTools/DistanceField.cpp @@ -25,7 +25,7 @@ #include "DistanceField.h" -#include +#include #include #include