Browse Source

Shaders: use new AbstractShaderProgram subclass implementation macro.

I love the smell of burning code on a Friday night!
pull/610/head
Vladimír Vondruš 4 years ago
parent
commit
66d1afca3f
  1. 41
      src/Magnum/Shaders/DistanceFieldVectorGL.h
  2. 41
      src/Magnum/Shaders/FlatGL.h
  3. 74
      src/Magnum/Shaders/MeshVisualizerGL.h
  4. 41
      src/Magnum/Shaders/PhongGL.h
  5. 41
      src/Magnum/Shaders/VectorGL.h
  6. 41
      src/Magnum/Shaders/VertexColorGL.h

41
src/Magnum/Shaders/DistanceFieldVectorGL.h

@ -613,52 +613,13 @@ template<UnsignedInt dimensions> class MAGNUM_SHADERS_EXPORT DistanceFieldVector
* @}
*/
/* Overloads to remove WTF-factor from method chaining order */
#ifndef DOXYGEN_GENERATING_OUTPUT
DistanceFieldVectorGL<dimensions>& draw(GL::Mesh& mesh) {
return static_cast<DistanceFieldVectorGL<dimensions>&>(GL::AbstractShaderProgram::draw(mesh));
}
DistanceFieldVectorGL<dimensions>& draw(GL::Mesh&& mesh) {
return static_cast<DistanceFieldVectorGL<dimensions>&>(GL::AbstractShaderProgram::draw(mesh));
}
DistanceFieldVectorGL<dimensions>& draw(GL::MeshView& mesh) {
return static_cast<DistanceFieldVectorGL<dimensions>&>(GL::AbstractShaderProgram::draw(mesh));
}
DistanceFieldVectorGL<dimensions>& draw(GL::MeshView&& mesh) {
return static_cast<DistanceFieldVectorGL<dimensions>&>(GL::AbstractShaderProgram::draw(mesh));
}
DistanceFieldVectorGL<dimensions>& draw(GL::Mesh& mesh, const Containers::StridedArrayView1D<const UnsignedInt>& counts, const Containers::StridedArrayView1D<const UnsignedInt>& vertexOffsets, const Containers::StridedArrayView1D<const UnsignedInt>& indexOffsets) {
return static_cast<DistanceFieldVectorGL<dimensions>&>(GL::AbstractShaderProgram::draw(mesh, counts, vertexOffsets, indexOffsets));
}
#ifndef CORRADE_TARGET_32BIT
DistanceFieldVectorGL<dimensions>& draw(GL::Mesh& mesh, const Containers::StridedArrayView1D<const UnsignedInt>& counts, const Containers::StridedArrayView1D<const UnsignedInt>& vertexOffsets, const Containers::StridedArrayView1D<const UnsignedLong>& indexOffsets) {
return static_cast<DistanceFieldVectorGL<dimensions>&>(GL::AbstractShaderProgram::draw(mesh, counts, vertexOffsets, indexOffsets));
}
DistanceFieldVectorGL<dimensions>& draw(GL::Mesh& mesh, const Containers::StridedArrayView1D<const UnsignedInt>& counts, const Containers::StridedArrayView1D<const UnsignedInt>& vertexOffsets, std::nullptr_t) {
return static_cast<DistanceFieldVectorGL<dimensions>&>(GL::AbstractShaderProgram::draw(mesh, counts, vertexOffsets, nullptr));
}
#endif
DistanceFieldVectorGL<dimensions>& draw(Containers::ArrayView<const Containers::Reference<GL::MeshView>> meshes) {
return static_cast<DistanceFieldVectorGL<dimensions>&>(GL::AbstractShaderProgram::draw(meshes));
}
DistanceFieldVectorGL<dimensions>& draw(std::initializer_list<Containers::Reference<GL::MeshView>> meshes) {
return static_cast<DistanceFieldVectorGL<dimensions>&>(GL::AbstractShaderProgram::draw(meshes));
}
#endif
MAGNUM_GL_ABSTRACTSHADERPROGRAM_SUBCLASS_DRAW_IMPLEMENTATION(DistanceFieldVectorGL<dimensions>)
private:
/* Creates the GL shader program object but does nothing else.
Internal, used by compile(). */
explicit DistanceFieldVectorGL(NoInitT);
/* Prevent accidentally calling irrelevant functions */
#ifndef MAGNUM_TARGET_GLES
using GL::AbstractShaderProgram::drawTransformFeedback;
#endif
#if !defined(MAGNUM_TARGET_GLES2) && !defined(MAGNUM_TARGET_WEBGL)
using GL::AbstractShaderProgram::dispatchCompute;
#endif
Flags _flags;
#ifndef MAGNUM_TARGET_GLES2
UnsignedInt _materialCount{}, _drawCount{};

41
src/Magnum/Shaders/FlatGL.h

@ -1022,52 +1022,13 @@ template<UnsignedInt dimensions> class MAGNUM_SHADERS_EXPORT FlatGL: public GL::
* @}
*/
/* Overloads to remove WTF-factor from method chaining order */
#ifndef DOXYGEN_GENERATING_OUTPUT
FlatGL<dimensions>& draw(GL::Mesh& mesh) {
return static_cast<FlatGL<dimensions>&>(GL::AbstractShaderProgram::draw(mesh));
}
FlatGL<dimensions>& draw(GL::Mesh&& mesh) {
return static_cast<FlatGL<dimensions>&>(GL::AbstractShaderProgram::draw(mesh));
}
FlatGL<dimensions>& draw(GL::MeshView& mesh) {
return static_cast<FlatGL<dimensions>&>(GL::AbstractShaderProgram::draw(mesh));
}
FlatGL<dimensions>& draw(GL::MeshView&& mesh) {
return static_cast<FlatGL<dimensions>&>(GL::AbstractShaderProgram::draw(mesh));
}
FlatGL<dimensions>& draw(GL::Mesh& mesh, const Containers::StridedArrayView1D<const UnsignedInt>& counts, const Containers::StridedArrayView1D<const UnsignedInt>& vertexOffsets, const Containers::StridedArrayView1D<const UnsignedInt>& indexOffsets) {
return static_cast<FlatGL<dimensions>&>(GL::AbstractShaderProgram::draw(mesh, counts, vertexOffsets, indexOffsets));
}
#ifndef CORRADE_TARGET_32BIT
FlatGL<dimensions>& draw(GL::Mesh& mesh, const Containers::StridedArrayView1D<const UnsignedInt>& counts, const Containers::StridedArrayView1D<const UnsignedInt>& vertexOffsets, const Containers::StridedArrayView1D<const UnsignedLong>& indexOffsets) {
return static_cast<FlatGL<dimensions>&>(GL::AbstractShaderProgram::draw(mesh, counts, vertexOffsets, indexOffsets));
}
FlatGL<dimensions>& draw(GL::Mesh& mesh, const Containers::StridedArrayView1D<const UnsignedInt>& counts, const Containers::StridedArrayView1D<const UnsignedInt>& vertexOffsets, std::nullptr_t) {
return static_cast<FlatGL<dimensions>&>(GL::AbstractShaderProgram::draw(mesh, counts, vertexOffsets, nullptr));
}
#endif
FlatGL<dimensions>& draw(Containers::ArrayView<const Containers::Reference<GL::MeshView>> meshes) {
return static_cast<FlatGL<dimensions>&>(GL::AbstractShaderProgram::draw(meshes));
}
FlatGL<dimensions>& draw(std::initializer_list<Containers::Reference<GL::MeshView>> meshes) {
return static_cast<FlatGL<dimensions>&>(GL::AbstractShaderProgram::draw(meshes));
}
#endif
MAGNUM_GL_ABSTRACTSHADERPROGRAM_SUBCLASS_DRAW_IMPLEMENTATION(FlatGL<dimensions>)
private:
/* Creates the GL shader program object but does nothing else.
Internal, used by compile(). */
explicit FlatGL(NoInitT);
/* Prevent accidentally calling irrelevant functions */
#ifndef MAGNUM_TARGET_GLES
using GL::AbstractShaderProgram::drawTransformFeedback;
#endif
#if !defined(MAGNUM_TARGET_GLES2) && !defined(MAGNUM_TARGET_WEBGL)
using GL::AbstractShaderProgram::dispatchCompute;
#endif
Flags _flags;
#ifndef MAGNUM_TARGET_GLES2
UnsignedInt _materialCount{}, _drawCount{};

74
src/Magnum/Shaders/MeshVisualizerGL.h

@ -105,14 +105,6 @@ class MAGNUM_SHADERS_EXPORT MeshVisualizerGLBase: public GL::AbstractShaderProgr
MeshVisualizerGLBase& bindMaterialBuffer(GL::Buffer& buffer, GLintptr offset, GLsizeiptr size);
#endif
/* Prevent accidentally calling irrelevant functions */
#ifndef MAGNUM_TARGET_GLES
using GL::AbstractShaderProgram::drawTransformFeedback;
#endif
#if !defined(MAGNUM_TARGET_GLES2) && !defined(MAGNUM_TARGET_WEBGL)
using GL::AbstractShaderProgram::dispatchCompute;
#endif
FlagsBase _flags;
#ifndef MAGNUM_TARGET_GLES2
UnsignedInt _materialCount{}, _drawCount{};
@ -876,38 +868,7 @@ class MAGNUM_SHADERS_EXPORT MeshVisualizerGL2D: public Implementation::MeshVisua
* @}
*/
/* Overloads to remove WTF-factor from method chaining order */
#ifndef DOXYGEN_GENERATING_OUTPUT
MeshVisualizerGL2D& draw(GL::Mesh& mesh) {
return static_cast<MeshVisualizerGL2D&>(GL::AbstractShaderProgram::draw(mesh));
}
MeshVisualizerGL2D& draw(GL::Mesh&& mesh) {
return static_cast<MeshVisualizerGL2D&>(GL::AbstractShaderProgram::draw(mesh));
}
MeshVisualizerGL2D& draw(GL::MeshView& mesh) {
return static_cast<MeshVisualizerGL2D&>(GL::AbstractShaderProgram::draw(mesh));
}
MeshVisualizerGL2D& draw(GL::MeshView&& mesh) {
return static_cast<MeshVisualizerGL2D&>(GL::AbstractShaderProgram::draw(mesh));
}
MeshVisualizerGL2D& draw(GL::Mesh& mesh, const Containers::StridedArrayView1D<const UnsignedInt>& counts, const Containers::StridedArrayView1D<const UnsignedInt>& vertexOffsets, const Containers::StridedArrayView1D<const UnsignedInt>& indexOffsets) {
return static_cast<MeshVisualizerGL2D&>(GL::AbstractShaderProgram::draw(mesh, counts, vertexOffsets, indexOffsets));
}
#ifndef CORRADE_TARGET_32BIT
MeshVisualizerGL2D& draw(GL::Mesh& mesh, const Containers::StridedArrayView1D<const UnsignedInt>& counts, const Containers::StridedArrayView1D<const UnsignedInt>& vertexOffsets, const Containers::StridedArrayView1D<const UnsignedLong>& indexOffsets) {
return static_cast<MeshVisualizerGL2D&>(GL::AbstractShaderProgram::draw(mesh, counts, vertexOffsets, indexOffsets));
}
MeshVisualizerGL2D& draw(GL::Mesh& mesh, const Containers::StridedArrayView1D<const UnsignedInt>& counts, const Containers::StridedArrayView1D<const UnsignedInt>& vertexOffsets, std::nullptr_t) {
return static_cast<MeshVisualizerGL2D&>(GL::AbstractShaderProgram::draw(mesh, counts, vertexOffsets, nullptr));
}
#endif
MeshVisualizerGL2D& draw(Containers::ArrayView<const Containers::Reference<GL::MeshView>> meshes) {
return static_cast<MeshVisualizerGL2D&>(GL::AbstractShaderProgram::draw(meshes));
}
MeshVisualizerGL2D& draw(std::initializer_list<Containers::Reference<GL::MeshView>> meshes) {
return static_cast<MeshVisualizerGL2D&>(GL::AbstractShaderProgram::draw(meshes));
}
#endif
MAGNUM_GL_ABSTRACTSHADERPROGRAM_SUBCLASS_DRAW_IMPLEMENTATION(MeshVisualizerGL2D)
private:
/* Creates the GL shader program object but does nothing else.
@ -2407,38 +2368,7 @@ class MAGNUM_SHADERS_EXPORT MeshVisualizerGL3D: public Implementation::MeshVisua
* @}
*/
/* Overloads to remove WTF-factor from method chaining order */
#ifndef DOXYGEN_GENERATING_OUTPUT
MeshVisualizerGL3D& draw(GL::Mesh& mesh) {
return static_cast<MeshVisualizerGL3D&>(GL::AbstractShaderProgram::draw(mesh));
}
MeshVisualizerGL3D& draw(GL::Mesh&& mesh) {
return static_cast<MeshVisualizerGL3D&>(GL::AbstractShaderProgram::draw(mesh));
}
MeshVisualizerGL3D& draw(GL::MeshView& mesh) {
return static_cast<MeshVisualizerGL3D&>(GL::AbstractShaderProgram::draw(mesh));
}
MeshVisualizerGL3D& draw(GL::MeshView&& mesh) {
return static_cast<MeshVisualizerGL3D&>(GL::AbstractShaderProgram::draw(mesh));
}
MeshVisualizerGL3D& draw(GL::Mesh& mesh, const Containers::StridedArrayView1D<const UnsignedInt>& counts, const Containers::StridedArrayView1D<const UnsignedInt>& vertexOffsets, const Containers::StridedArrayView1D<const UnsignedInt>& indexOffsets) {
return static_cast<MeshVisualizerGL3D&>(GL::AbstractShaderProgram::draw(mesh, counts, vertexOffsets, indexOffsets));
}
#ifndef CORRADE_TARGET_32BIT
MeshVisualizerGL3D& draw(GL::Mesh& mesh, const Containers::StridedArrayView1D<const UnsignedInt>& counts, const Containers::StridedArrayView1D<const UnsignedInt>& vertexOffsets, const Containers::StridedArrayView1D<const UnsignedLong>& indexOffsets) {
return static_cast<MeshVisualizerGL3D&>(GL::AbstractShaderProgram::draw(mesh, counts, vertexOffsets, indexOffsets));
}
MeshVisualizerGL3D& draw(GL::Mesh& mesh, const Containers::StridedArrayView1D<const UnsignedInt>& counts, const Containers::StridedArrayView1D<const UnsignedInt>& vertexOffsets, std::nullptr_t) {
return static_cast<MeshVisualizerGL3D&>(GL::AbstractShaderProgram::draw(mesh, counts, vertexOffsets, nullptr));
}
#endif
MeshVisualizerGL3D& draw(Containers::ArrayView<const Containers::Reference<GL::MeshView>> meshes) {
return static_cast<MeshVisualizerGL3D&>(GL::AbstractShaderProgram::draw(meshes));
}
MeshVisualizerGL3D& draw(std::initializer_list<Containers::Reference<GL::MeshView>> meshes) {
return static_cast<MeshVisualizerGL3D&>(GL::AbstractShaderProgram::draw(meshes));
}
#endif
MAGNUM_GL_ABSTRACTSHADERPROGRAM_SUBCLASS_DRAW_IMPLEMENTATION(MeshVisualizerGL3D)
private:
/* Creates the GL shader program object but does nothing else.

41
src/Magnum/Shaders/PhongGL.h

@ -1755,52 +1755,13 @@ class MAGNUM_SHADERS_EXPORT PhongGL: public GL::AbstractShaderProgram {
* @}
*/
/* Overloads to remove WTF-factor from method chaining order */
#ifndef DOXYGEN_GENERATING_OUTPUT
PhongGL& draw(GL::Mesh& mesh) {
return static_cast<PhongGL&>(GL::AbstractShaderProgram::draw(mesh));
}
PhongGL& draw(GL::Mesh&& mesh) {
return static_cast<PhongGL&>(GL::AbstractShaderProgram::draw(mesh));
}
PhongGL& draw(GL::MeshView& mesh) {
return static_cast<PhongGL&>(GL::AbstractShaderProgram::draw(mesh));
}
PhongGL& draw(GL::MeshView&& mesh) {
return static_cast<PhongGL&>(GL::AbstractShaderProgram::draw(mesh));
}
PhongGL& draw(GL::Mesh& mesh, const Containers::StridedArrayView1D<const UnsignedInt>& counts, const Containers::StridedArrayView1D<const UnsignedInt>& vertexOffsets, const Containers::StridedArrayView1D<const UnsignedInt>& indexOffsets) {
return static_cast<PhongGL&>(GL::AbstractShaderProgram::draw(mesh, counts, vertexOffsets, indexOffsets));
}
#ifndef CORRADE_TARGET_32BIT
PhongGL& draw(GL::Mesh& mesh, const Containers::StridedArrayView1D<const UnsignedInt>& counts, const Containers::StridedArrayView1D<const UnsignedInt>& vertexOffsets, const Containers::StridedArrayView1D<const UnsignedLong>& indexOffsets) {
return static_cast<PhongGL&>(GL::AbstractShaderProgram::draw(mesh, counts, vertexOffsets, indexOffsets));
}
PhongGL& draw(GL::Mesh& mesh, const Containers::StridedArrayView1D<const UnsignedInt>& counts, const Containers::StridedArrayView1D<const UnsignedInt>& vertexOffsets, std::nullptr_t) {
return static_cast<PhongGL&>(GL::AbstractShaderProgram::draw(mesh, counts, vertexOffsets, nullptr));
}
#endif
PhongGL& draw(Containers::ArrayView<const Containers::Reference<GL::MeshView>> meshes) {
return static_cast<PhongGL&>(GL::AbstractShaderProgram::draw(meshes));
}
PhongGL& draw(std::initializer_list<Containers::Reference<GL::MeshView>> meshes) {
return static_cast<PhongGL&>(GL::AbstractShaderProgram::draw(meshes));
}
#endif
MAGNUM_GL_ABSTRACTSHADERPROGRAM_SUBCLASS_DRAW_IMPLEMENTATION(PhongGL)
private:
/* Creates the GL shader program object but does nothing else.
Internal, used by compile(). */
explicit PhongGL(NoInitT) {}
/* Prevent accidentally calling irrelevant functions */
#ifndef MAGNUM_TARGET_GLES
using GL::AbstractShaderProgram::drawTransformFeedback;
#endif
#if !defined(MAGNUM_TARGET_GLES2) && !defined(MAGNUM_TARGET_WEBGL)
using GL::AbstractShaderProgram::dispatchCompute;
#endif
Flags _flags;
UnsignedInt _lightCount{};
#ifndef MAGNUM_TARGET_GLES2

41
src/Magnum/Shaders/VectorGL.h

@ -565,52 +565,13 @@ template<UnsignedInt dimensions> class MAGNUM_SHADERS_EXPORT VectorGL: public GL
* @}
*/
/* Overloads to remove WTF-factor from method chaining order */
#ifndef DOXYGEN_GENERATING_OUTPUT
VectorGL<dimensions>& draw(GL::Mesh& mesh) {
return static_cast<VectorGL<dimensions>&>(GL::AbstractShaderProgram::draw(mesh));
}
VectorGL<dimensions>& draw(GL::Mesh&& mesh) {
return static_cast<VectorGL<dimensions>&>(GL::AbstractShaderProgram::draw(mesh));
}
VectorGL<dimensions>& draw(GL::MeshView& mesh) {
return static_cast<VectorGL<dimensions>&>(GL::AbstractShaderProgram::draw(mesh));
}
VectorGL<dimensions>& draw(GL::MeshView&& mesh) {
return static_cast<VectorGL<dimensions>&>(GL::AbstractShaderProgram::draw(mesh));
}
VectorGL<dimensions>& draw(GL::Mesh& mesh, const Containers::StridedArrayView1D<const UnsignedInt>& counts, const Containers::StridedArrayView1D<const UnsignedInt>& vertexOffsets, const Containers::StridedArrayView1D<const UnsignedInt>& indexOffsets) {
return static_cast<VectorGL<dimensions>&>(GL::AbstractShaderProgram::draw(mesh, counts, vertexOffsets, indexOffsets));
}
#ifndef CORRADE_TARGET_32BIT
VectorGL<dimensions>& draw(GL::Mesh& mesh, const Containers::StridedArrayView1D<const UnsignedInt>& counts, const Containers::StridedArrayView1D<const UnsignedInt>& vertexOffsets, const Containers::StridedArrayView1D<const UnsignedLong>& indexOffsets) {
return static_cast<VectorGL<dimensions>&>(GL::AbstractShaderProgram::draw(mesh, counts, vertexOffsets, indexOffsets));
}
VectorGL<dimensions>& draw(GL::Mesh& mesh, const Containers::StridedArrayView1D<const UnsignedInt>& counts, const Containers::StridedArrayView1D<const UnsignedInt>& vertexOffsets, std::nullptr_t) {
return static_cast<VectorGL<dimensions>&>(GL::AbstractShaderProgram::draw(mesh, counts, vertexOffsets, nullptr));
}
#endif
VectorGL<dimensions>& draw(Containers::ArrayView<const Containers::Reference<GL::MeshView>> meshes) {
return static_cast<VectorGL<dimensions>&>(GL::AbstractShaderProgram::draw(meshes));
}
VectorGL<dimensions>& draw(std::initializer_list<Containers::Reference<GL::MeshView>> meshes) {
return static_cast<VectorGL<dimensions>&>(GL::AbstractShaderProgram::draw(meshes));
}
#endif
MAGNUM_GL_ABSTRACTSHADERPROGRAM_SUBCLASS_DRAW_IMPLEMENTATION(VectorGL<dimensions>)
private:
/* Creates the GL shader program object but does nothing else.
Internal, used by compile(). */
explicit VectorGL(NoInitT);
/* Prevent accidentally calling irrelevant functions */
#ifndef MAGNUM_TARGET_GLES
using GL::AbstractShaderProgram::drawTransformFeedback;
#endif
#if !defined(MAGNUM_TARGET_GLES2) && !defined(MAGNUM_TARGET_WEBGL)
using GL::AbstractShaderProgram::dispatchCompute;
#endif
Flags _flags;
#ifndef MAGNUM_TARGET_GLES2
UnsignedInt _materialCount{}, _drawCount{};

41
src/Magnum/Shaders/VertexColorGL.h

@ -417,52 +417,13 @@ template<UnsignedInt dimensions> class MAGNUM_SHADERS_EXPORT VertexColorGL: publ
*/
#endif
/* Overloads to remove WTF-factor from method chaining order */
#ifndef DOXYGEN_GENERATING_OUTPUT
VertexColorGL<dimensions>& draw(GL::Mesh& mesh) {
return static_cast<VertexColorGL<dimensions>&>(GL::AbstractShaderProgram::draw(mesh));
}
VertexColorGL<dimensions>& draw(GL::Mesh&& mesh) {
return static_cast<VertexColorGL<dimensions>&>(GL::AbstractShaderProgram::draw(mesh));
}
VertexColorGL<dimensions>& draw(GL::MeshView& mesh) {
return static_cast<VertexColorGL<dimensions>&>(GL::AbstractShaderProgram::draw(mesh));
}
VertexColorGL<dimensions>& draw(GL::MeshView&& mesh) {
return static_cast<VertexColorGL<dimensions>&>(GL::AbstractShaderProgram::draw(mesh));
}
VertexColorGL<dimensions>& draw(GL::Mesh& mesh, const Containers::StridedArrayView1D<const UnsignedInt>& counts, const Containers::StridedArrayView1D<const UnsignedInt>& vertexOffsets, const Containers::StridedArrayView1D<const UnsignedInt>& indexOffsets) {
return static_cast<VertexColorGL<dimensions>&>(GL::AbstractShaderProgram::draw(mesh, counts, vertexOffsets, indexOffsets));
}
#ifndef CORRADE_TARGET_32BIT
VertexColorGL<dimensions>& draw(GL::Mesh& mesh, const Containers::StridedArrayView1D<const UnsignedInt>& counts, const Containers::StridedArrayView1D<const UnsignedInt>& vertexOffsets, const Containers::StridedArrayView1D<const UnsignedLong>& indexOffsets) {
return static_cast<VertexColorGL<dimensions>&>(GL::AbstractShaderProgram::draw(mesh, counts, vertexOffsets, indexOffsets));
}
VertexColorGL<dimensions>& draw(GL::Mesh& mesh, const Containers::StridedArrayView1D<const UnsignedInt>& counts, const Containers::StridedArrayView1D<const UnsignedInt>& vertexOffsets, std::nullptr_t) {
return static_cast<VertexColorGL<dimensions>&>(GL::AbstractShaderProgram::draw(mesh, counts, vertexOffsets, nullptr));
}
#endif
VertexColorGL<dimensions>& draw(Containers::ArrayView<const Containers::Reference<GL::MeshView>> meshes) {
return static_cast<VertexColorGL<dimensions>&>(GL::AbstractShaderProgram::draw(meshes));
}
VertexColorGL<dimensions>& draw(std::initializer_list<Containers::Reference<GL::MeshView>> meshes) {
return static_cast<VertexColorGL<dimensions>&>(GL::AbstractShaderProgram::draw(meshes));
}
#endif
MAGNUM_GL_ABSTRACTSHADERPROGRAM_SUBCLASS_DRAW_IMPLEMENTATION(VertexColorGL<dimensions>)
private:
/* Creates the GL shader program object but does nothing else.
Internal, used by compile(). */
explicit VertexColorGL(NoInitT);
/* Prevent accidentally calling irrelevant functions */
#ifndef MAGNUM_TARGET_GLES
using GL::AbstractShaderProgram::drawTransformFeedback;
#endif
#if !defined(MAGNUM_TARGET_GLES2) && !defined(MAGNUM_TARGET_WEBGL)
using GL::AbstractShaderProgram::dispatchCompute;
#endif
Flags _flags;
#ifndef MAGNUM_TARGET_GLES2
UnsignedInt _drawCount{};

Loading…
Cancel
Save