Browse Source

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.
pull/589/head
Vladimír Vondruš 4 years ago
parent
commit
4ff655740e
  1. 2
      src/Magnum/GL/AbstractShaderProgram.cpp
  2. 4
      src/Magnum/GL/AbstractShaderProgram.h
  3. 1
      src/Magnum/GL/Test/MeshGLTest.cpp
  4. 2
      src/Magnum/GL/Test/RendererGLTest.cpp
  5. 2
      src/Magnum/GL/Test/SampleQueryGLTest.cpp
  6. 2
      src/Magnum/GL/Test/TransformFeedbackGLTest.cpp
  7. 2
      src/Magnum/MeshTools/Test/FullScreenTriangleGLTest.cpp
  8. 1
      src/Magnum/Shaders/DistanceFieldVectorGL.cpp
  9. 1
      src/Magnum/Shaders/FlatGL.cpp
  10. 1
      src/Magnum/Shaders/MeshVisualizerGL.cpp
  11. 1
      src/Magnum/Shaders/PhongGL.cpp
  12. 1
      src/Magnum/Shaders/VectorGL.cpp
  13. 1
      src/Magnum/Shaders/VertexColorGL.cpp
  14. 2
      src/Magnum/TextureTools/DistanceField.cpp

2
src/Magnum/GL/AbstractShaderProgram.cpp

@ -536,7 +536,7 @@ void AbstractShaderProgram::attachShader(Shader& shader) {
glAttachShader(_id, shader.id());
}
void AbstractShaderProgram::attachShaders(std::initializer_list<Containers::Reference<Shader>> shaders) {
void AbstractShaderProgram::attachShaders(Containers::Iterable<Shader> shaders) {
for(Shader& s: shaders) attachShader(s);
}

4
src/Magnum/GL/AbstractShaderProgram.h

@ -44,6 +44,8 @@
#ifdef MAGNUM_BUILD_DEPRECATED
#include <Corrade/Utility/Macros.h>
/* For attachShaders(), which used to take a std::initializer_list<Reference> */
#include <Corrade/Containers/Iterable.h>
/* For label() / setLabel(), which used to be a std::string */
#include <Corrade/Containers/StringStl.h>
#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<Containers::Reference<Shader>> shaders);
void attachShaders(Containers::Iterable<Shader> shaders);
/**
* @brief Bind an attribute to given location

1
src/Magnum/GL/Test/MeshGLTest.cpp

@ -25,6 +25,7 @@
*/
#include <sstream>
#include <Corrade/Containers/Iterable.h>
#include <Corrade/Containers/StridedArrayView.h>
#include <Corrade/TestSuite/Compare/Numeric.h>
#include <Corrade/Utility/DebugStl.h>

2
src/Magnum/GL/Test/RendererGLTest.cpp

@ -23,9 +23,9 @@
DEALINGS IN THE SOFTWARE.
*/
#include <Corrade/Containers/Iterable.h>
#include <Corrade/Containers/StridedArrayView.h>
#include <Corrade/Containers/String.h>
#include <Corrade/Containers/Reference.h>
#include <Corrade/PluginManager/Manager.h>
#include <Corrade/Utility/Path.h>

2
src/Magnum/GL/Test/SampleQueryGLTest.cpp

@ -23,7 +23,7 @@
DEALINGS IN THE SOFTWARE.
*/
#include <Corrade/Containers/Reference.h>
#include <Corrade/Containers/Iterable.h>
#include <Corrade/Utility/Assert.h>
#include <Corrade/Utility/Resource.h>

2
src/Magnum/GL/Test/TransformFeedbackGLTest.cpp

@ -24,7 +24,7 @@
*/
#include <tuple>
#include <Corrade/Containers/Reference.h>
#include <Corrade/Containers/Iterable.h>
#include "Magnum/Image.h"
#include "Magnum/GL/AbstractShaderProgram.h"

2
src/Magnum/MeshTools/Test/FullScreenTriangleGLTest.cpp

@ -24,7 +24,7 @@
*/
#include <Corrade/Containers/Array.h>
#include <Corrade/Containers/Reference.h>
#include <Corrade/Containers/Iterable.h>
#include <Corrade/TestSuite/Compare/Container.h>
#include <Corrade/Utility/Resource.h>

1
src/Magnum/Shaders/DistanceFieldVectorGL.cpp

@ -28,7 +28,6 @@
#include <Corrade/Containers/EnumSet.hpp>
#include <Corrade/Containers/Iterable.h>
#include <Corrade/Containers/Reference.h>
#include <Corrade/Utility/Resource.h>
#include "Magnum/GL/Context.h"

1
src/Magnum/Shaders/FlatGL.cpp

@ -28,7 +28,6 @@
#include <Corrade/Containers/EnumSet.hpp>
#include <Corrade/Containers/Iterable.h>
#include <Corrade/Containers/Reference.h>
#include <Corrade/Utility/Resource.h>
#include "Magnum/GL/Context.h"

1
src/Magnum/Shaders/MeshVisualizerGL.cpp

@ -28,7 +28,6 @@
#include <Corrade/Containers/EnumSet.hpp>
#include <Corrade/Containers/Iterable.h>
#include <Corrade/Containers/Reference.h>
#include <Corrade/Utility/FormatStl.h>
#include <Corrade/Utility/Resource.h>

1
src/Magnum/Shaders/PhongGL.cpp

@ -31,7 +31,6 @@
#endif
#include <Corrade/Containers/EnumSet.hpp>
#include <Corrade/Containers/Iterable.h>
#include <Corrade/Containers/Reference.h>
#include <Corrade/Containers/StringView.h>
#include <Corrade/Containers/StringStl.h>
#include <Corrade/Utility/FormatStl.h>

1
src/Magnum/Shaders/VectorGL.cpp

@ -28,7 +28,6 @@
#include <Corrade/Containers/EnumSet.hpp>
#include <Corrade/Containers/Iterable.h>
#include <Corrade/Containers/Reference.h>
#include <Corrade/Utility/Resource.h>
#include "Magnum/GL/Context.h"

1
src/Magnum/Shaders/VertexColorGL.cpp

@ -28,7 +28,6 @@
#include <Corrade/Containers/EnumSet.hpp>
#include <Corrade/Containers/Iterable.h>
#include <Corrade/Containers/Reference.h>
#include <Corrade/Utility/Resource.h>
#include "Magnum/GL/Context.h"

2
src/Magnum/TextureTools/DistanceField.cpp

@ -25,7 +25,7 @@
#include "DistanceField.h"
#include <Corrade/Containers/Reference.h>
#include <Corrade/Containers/Iterable.h>
#include <Corrade/Utility/FormatStl.h>
#include <Corrade/Utility/Resource.h>

Loading…
Cancel
Save