diff --git a/doc/snippets/Shaders-gl.cpp b/doc/snippets/Shaders-gl.cpp index 7b6482d54..a3159135b 100644 --- a/doc/snippets/Shaders-gl.cpp +++ b/doc/snippets/Shaders-gl.cpp @@ -88,33 +88,24 @@ using namespace Magnum::Math::Literals; avoid -Wmisssing-prototypes */ void mainShadersGL(); void mainShadersGL() { -/* internal compiler error: in gimplify_init_constructor, at gimplify.c:4271 - on GCC 4.8 in the [60] array */ -#if !defined(CORRADE_TARGET_GCC) || defined(CORRADE_TARGET_CLANG) || __GNUC__ >= 5 { /* [shaders-setup] */ -struct Vertex { +struct { Vector3 position; Vector3 normal; Vector2 textureCoordinates; +} vertices[]{ + DOXYGEN_ELLIPSIS({}) }; -Vertex data[60]{ - // ... -}; - -GL::Buffer vertices; -vertices.setData(data, GL::BufferUsage::StaticDraw); GL::Mesh mesh; -mesh.addVertexBuffer(vertices, 0, - Shaders::PhongGL::Position{}, - Shaders::PhongGL::Normal{}, - Shaders::PhongGL::TextureCoordinates{}) - //... - ; +mesh.addVertexBuffer(GL::Buffer{vertices}, 0, + Shaders::PhongGL::Position{}, + Shaders::PhongGL::Normal{}, + Shaders::PhongGL::TextureCoordinates{}) + .setCount(Containers::arraySize(vertices)); /* [shaders-setup] */ } -#endif { GL::Mesh mesh; @@ -268,12 +259,14 @@ struct { 0x3bd267_rgbf}, }; -GL::Mesh sphereInstanced{DOXYGEN_ELLIPSIS()}; -sphereInstanced.addVertexBufferInstanced(GL::Buffer{instanceData}, 1, 0, - Shaders::PhongGL::TransformationMatrix{}, - Shaders::PhongGL::NormalMatrix{}, - Shaders::PhongGL::Color3{}); -sphereInstanced.setInstanceCount(3); +GL::Mesh sphereInstanced; +sphereInstanced + DOXYGEN_ELLIPSIS() + .addVertexBufferInstanced(GL::Buffer{instanceData}, 1, 0, + Shaders::PhongGL::TransformationMatrix{}, + Shaders::PhongGL::NormalMatrix{}, + Shaders::PhongGL::Color3{}) + .setInstanceCount(3); Shaders::PhongGL shader{Shaders::PhongGL::Configuration{} .setFlags(Shaders::PhongGL::Flag::InstancedTransformation| @@ -449,28 +442,20 @@ Shaders::MeshVisualizerGL3D meshVisualizer{std::move(meshVisualizerState)}; /* [shaders-async] */ } -/* internal compiler error: in gimplify_init_constructor, at gimplify.c:4271 - on GCC 4.8 in the [60] array */ -#if !defined(CORRADE_TARGET_GCC) || defined(CORRADE_TARGET_CLANG) || __GNUC__ >= 5 { /* [DistanceFieldVectorGL-usage1] */ -struct Vertex { +struct { Vector2 position; Vector2 textureCoordinates; +} vertices[]{ + DOXYGEN_ELLIPSIS({}) }; -Vertex data[60]{ - // ... -}; - -GL::Buffer vertices; -vertices.setData(data, GL::BufferUsage::StaticDraw); GL::Mesh mesh; -mesh.addVertexBuffer(vertices, 0, - Shaders::DistanceFieldVectorGL2D::Position{}, - Shaders::DistanceFieldVectorGL2D::TextureCoordinates{}) - // ... - ; +mesh.addVertexBuffer(GL::Buffer{vertices}, 0, + Shaders::DistanceFieldVectorGL2D::Position{}, + Shaders::DistanceFieldVectorGL2D::TextureCoordinates{}) + .setCount(Containers::arraySize(vertices)); /* [DistanceFieldVectorGL-usage1] */ } @@ -489,7 +474,6 @@ shader.setColor(0x2f83cc_rgbf) .draw(mesh); /* [DistanceFieldVectorGL-usage2] */ } -#endif #ifndef MAGNUM_TARGET_GLES2 { @@ -526,25 +510,18 @@ shader } #endif -/* internal compiler error: in gimplify_init_constructor, at gimplify.c:4271 - on GCC 4.8 in the [60] array */ -#if !defined(CORRADE_TARGET_GCC) || defined(CORRADE_TARGET_CLANG) || __GNUC__ >= 5 { /* [FlatGL-usage-colored1] */ -struct Vertex { +struct { Vector3 position; +} vertices[]{ + DOXYGEN_ELLIPSIS({}) }; -Vertex data[60]{ - //... -}; - -GL::Buffer vertices; -vertices.setData(data, GL::BufferUsage::StaticDraw); GL::Mesh mesh; -mesh.addVertexBuffer(vertices, 0, Shaders::FlatGL3D::Position{}) - // ... - ; +mesh.addVertexBuffer(GL::Buffer{vertices}, 0, + Shaders::FlatGL3D::Position{}) + .setCount(Containers::arraySize(vertices)); /* [FlatGL-usage-colored1] */ /* [FlatGL-usage-colored2] */ @@ -561,23 +538,18 @@ shader.setColor(0x2f83cc_rgbf) { /* [FlatGL-usage-textured1] */ -struct Vertex { +struct { Vector3 position; Vector2 textureCoordinates; -}; -Vertex data[60]{ - // ... +} vertices[]{ + DOXYGEN_ELLIPSIS({}) }; -GL::Buffer vertices; -vertices.setData(data, GL::BufferUsage::StaticDraw); - GL::Mesh mesh; -mesh.addVertexBuffer(vertices, 0, - Shaders::FlatGL3D::Position{}, - Shaders::FlatGL3D::TextureCoordinates{}) - // ... - ; +mesh.addVertexBuffer(GL::Buffer{vertices}, 0, + Shaders::FlatGL3D::Position{}, + Shaders::FlatGL3D::TextureCoordinates{}) + .setCount(Containers::arraySize(vertices)); /* [FlatGL-usage-textured1] */ /* [FlatGL-usage-textured2] */ @@ -591,7 +563,6 @@ shader.setTransformationProjectionMatrix(projectionMatrix*transformationMatrix) .draw(mesh); /* [FlatGL-usage-textured2] */ } -#endif #ifndef MAGNUM_TARGET_GLES2 { @@ -609,7 +580,7 @@ framebuffer.attachRenderbuffer(GL::Framebuffer::ColorAttachment{0}, color) Shaders::FlatGL3D shader{Shaders::FlatGL3D::Configuration{} .setFlags(Shaders::FlatGL3D::Flag::ObjectId)}; -// ... +DOXYGEN_ELLIPSIS() framebuffer.mapForDraw({ {Shaders::FlatGL3D::ColorOutput, GL::Framebuffer::ColorAttachment{0}}, @@ -640,13 +611,13 @@ struct { {Matrix4::translation({1.0f, 2.0f, 0.0f}), 0xff3333_rgbf}, {Matrix4::translation({2.0f, 1.0f, 0.0f}), 0x33ff33_rgbf}, {Matrix4::translation({3.0f, 0.0f, 1.0f}), 0x3333ff_rgbf}, - // ... + DOXYGEN_ELLIPSIS() }; -mesh.setInstanceCount(Containers::arraySize(instanceData)) - .addVertexBufferInstanced(GL::Buffer{instanceData}, 1, 0, +mesh.addVertexBufferInstanced(GL::Buffer{instanceData}, 1, 0, Shaders::FlatGL3D::TransformationMatrix{}, - Shaders::FlatGL3D::Color3{}); + Shaders::FlatGL3D::Color3{}) + .setInstanceCount(Containers::arraySize(instanceData)); /* [FlatGL-usage-instancing] */ } @@ -775,36 +746,31 @@ shader { GL::Mesh mesh; /* [MeshVisualizerGL2D-usage-instancing] */ -Matrix3 instancedTransformations[] { +Matrix3 instancedTransformations[]{ Matrix3::translation({1.0f, 2.0f}), Matrix3::translation({2.0f, 1.0f}), Matrix3::translation({3.0f, 0.0f}), - // ... + DOXYGEN_ELLIPSIS() }; -mesh.setInstanceCount(Containers::arraySize(instancedTransformations)) - .addVertexBufferInstanced(GL::Buffer{instancedTransformations}, 1, 0, - Shaders::MeshVisualizerGL2D::TransformationMatrix{}); +mesh.addVertexBufferInstanced(GL::Buffer{instancedTransformations}, 1, 0, + Shaders::MeshVisualizerGL2D::TransformationMatrix{}) + .setInstanceCount(Containers::arraySize(instancedTransformations)); /* [MeshVisualizerGL2D-usage-instancing] */ } -/* internal compiler error: in gimplify_init_constructor, at gimplify.c:4271 - on GCC 4.8 in the [60] array */ -#if !defined(CORRADE_TARGET_GCC) || defined(CORRADE_TARGET_CLANG) || __GNUC__ >= 5 { /* [MeshVisualizerGL3D-usage-geom1] */ -struct Vertex { +struct { Vector3 position; +} vertices[]{ + DOXYGEN_ELLIPSIS({}) }; -Vertex data[60]{ - // ... -}; - -GL::Buffer vertices; -vertices.setData(data, GL::BufferUsage::StaticDraw); GL::Mesh mesh; -mesh.addVertexBuffer(vertices, 0, Shaders::MeshVisualizerGL3D::Position{}); +mesh.addVertexBuffer(GL::Buffer{vertices}, 0, + Shaders::MeshVisualizerGL3D::Position{}) + .setCount(Containers::arraySize(vertices)); /* [MeshVisualizerGL3D-usage-geom1] */ /* [MeshVisualizerGL3D-usage-geom2] */ @@ -823,7 +789,7 @@ shader.setColor(0x2f83cc_rgbf) /* [MeshVisualizerGL3D-usage-geom2] */ /* [MeshVisualizerGL3D-usage-no-geom-old] */ -Containers::Array vertexIndex{Containers::arraySize(data)}; +Containers::Array vertexIndex{Containers::arraySize(vertices)}; std::iota(vertexIndex.begin(), vertexIndex.end(), 0.0f); GL::Buffer vertexIndices; @@ -832,31 +798,24 @@ vertexIndices.setData(vertexIndex, GL::BufferUsage::StaticDraw); mesh.addVertexBuffer(vertexIndices, 0, Shaders::MeshVisualizerGL3D::VertexIndex{}); /* [MeshVisualizerGL3D-usage-no-geom-old] */ } -#endif #if !defined(MAGNUM_TARGET_GLES2) && !defined(MAGNUM_TARGET_WEBGL) -/* internal compiler error: in gimplify_init_constructor, at gimplify.c:4271 - on GCC 4.8 in the [60] array */ -#if !defined(CORRADE_TARGET_GCC) || defined(CORRADE_TARGET_CLANG) || __GNUC__ >= 5 { /* [MeshVisualizerGL3D-usage-tbn1] */ -struct Vertex { +struct { Vector3 position; Vector4 tangent; Vector3 normal; -}; -Vertex data[60]{ - // ... +} vertices[]{ + DOXYGEN_ELLIPSIS({}) }; -GL::Buffer vertices; -vertices.setData(data); - GL::Mesh mesh; -mesh.addVertexBuffer(vertices, 0, - Shaders::MeshVisualizerGL3D::Position{}, - Shaders::MeshVisualizerGL3D::Tangent4{}, - Shaders::MeshVisualizerGL3D::Normal{}); +mesh.addVertexBuffer(GL::Buffer{vertices}, 0, + Shaders::MeshVisualizerGL3D::Position{}, + Shaders::MeshVisualizerGL3D::Tangent4{}, + Shaders::MeshVisualizerGL3D::Normal{}) + .setCount(Containers::arraySize(vertices)); /* [MeshVisualizerGL3D-usage-tbn1] */ /* [MeshVisualizerGL3D-usage-tbn2] */ @@ -875,12 +834,11 @@ shader.setViewportSize(Vector2{GL::defaultFramebuffer.viewport().size()}) /* [MeshVisualizerGL3D-usage-tbn2] */ } #endif -#endif { /* [MeshVisualizerGL3D-usage-no-geom1] */ -Containers::StridedArrayView1D indices; -Containers::StridedArrayView1D indexedPositions; +Containers::StridedArrayView1D indices = DOXYGEN_ELLIPSIS({}); +Containers::StridedArrayView1D indexedPositions = DOXYGEN_ELLIPSIS({}); /* De-indexing the position array */ GL::Buffer vertices{MeshTools::duplicate(indices, indexedPositions)}; @@ -982,41 +940,37 @@ GL::Mesh mesh; struct { Matrix4 transformation; Matrix3x3 normal; -} instanceData[] { +} instanceData[]{ {Matrix4::translation({1.0f, 2.0f, 0.0f}), {}}, {Matrix4::translation({2.0f, 1.0f, 0.0f}), {}}, {Matrix4::translation({3.0f, 0.0f, 1.0f}), {}}, - // ... + DOXYGEN_ELLIPSIS() }; for(auto& instance: instanceData) instance.normal = instance.transformation.normalMatrix(); -mesh.setInstanceCount(Containers::arraySize(instanceData)) - .addVertexBufferInstanced(GL::Buffer{instanceData}, 1, 0, +mesh.addVertexBufferInstanced(GL::Buffer{instanceData}, 1, 0, Shaders::MeshVisualizerGL3D::TransformationMatrix{}, - Shaders::MeshVisualizerGL3D::NormalMatrix{}); + Shaders::MeshVisualizerGL3D::NormalMatrix{}) + .setInstanceCount(Containers::arraySize(instanceData)); /* [MeshVisualizerGL3D-usage-instancing] */ } #endif -#if !defined(CORRADE_TARGET_GCC) || defined(CORRADE_TARGET_CLANG) || __GNUC__ >= 5 { /* [PhongGL-usage-colored1] */ -struct Vertex { +struct { Vector3 position; Vector3 normal; +} vertices[]{ + DOXYGEN_ELLIPSIS({}) }; -Vertex data[60]{ - // ... -}; - -GL::Buffer vertices; -vertices.setData(data, GL::BufferUsage::StaticDraw); GL::Mesh mesh; -mesh.addVertexBuffer(vertices, 0, - Shaders::PhongGL::Position{}, - Shaders::PhongGL::Normal{}); +mesh.addVertexBuffer(GL::Buffer{vertices}, 0, + Shaders::PhongGL::Position{}, + Shaders::PhongGL::Normal{}) + .setCount(Containers::arraySize(vertices)); /* [PhongGL-usage-colored1] */ /* [PhongGL-usage-colored2] */ @@ -1036,23 +990,20 @@ shader.setDiffuseColor(0x2f83cc_rgbf) { /* [PhongGL-usage-texture1] */ -struct Vertex { +struct { Vector3 position; Vector3 normal; Vector2 textureCoordinates; +} vertices[]{ + DOXYGEN_ELLIPSIS({}) }; -Vertex data[60]{ - // ... -}; - -GL::Buffer vertices; -vertices.setData(data, GL::BufferUsage::StaticDraw); GL::Mesh mesh; -mesh.addVertexBuffer(vertices, 0, - Shaders::PhongGL::Position{}, - Shaders::PhongGL::Normal{}, - Shaders::PhongGL::TextureCoordinates{}); +mesh.addVertexBuffer(GL::Buffer{vertices}, 0, + Shaders::PhongGL::Position{}, + Shaders::PhongGL::Normal{}, + Shaders::PhongGL::TextureCoordinates{}) + .setCount(Containers::arraySize(vertices)); /* [PhongGL-usage-texture1] */ /* [PhongGL-usage-texture2] */ @@ -1069,7 +1020,6 @@ shader.bindTextures(nullptr, &diffuseTexture, &specularTexture, nullptr) .draw(mesh); /* [PhongGL-usage-texture2] */ } -#endif { /* [PhongGL-usage-lights] */ @@ -1130,7 +1080,7 @@ struct { {Matrix4::translation({1.0f, 2.0f, 0.0f})*Matrix4::rotationX(90.0_degf), {}}, {Matrix4::translation({2.0f, 1.0f, 0.0f})*Matrix4::rotationY(90.0_degf), {}}, {Matrix4::translation({3.0f, 0.0f, 1.0f})*Matrix4::rotationZ(90.0_degf), {}}, - // ... + DOXYGEN_ELLIPSIS() }; for(auto& instance: instanceData) instance.normal = instance.transformation.normalMatrix(); @@ -1188,21 +1138,18 @@ shader #if !defined(CORRADE_TARGET_GCC) || defined(CORRADE_TARGET_CLANG) || __GNUC__ >= 5 { /* [VectorGL-usage1] */ -struct Vertex { +struct { Vector2 position; Vector2 textureCoordinates; +} vertices[]{ + DOXYGEN_ELLIPSIS({}) }; -Vertex data[60]{ - // ... -}; - -GL::Buffer vertices; -vertices.setData(data, GL::BufferUsage::StaticDraw); GL::Mesh mesh; -mesh.addVertexBuffer(vertices, 0, - Shaders::VectorGL2D::Position{}, - Shaders::VectorGL2D::TextureCoordinates{}); +mesh.addVertexBuffer(GL::Buffer{vertices}, 0, + Shaders::VectorGL2D::Position{}, + Shaders::VectorGL2D::TextureCoordinates{}) + .setCount(Containers::arraySize(vertices)); /* [VectorGL-usage1] */ /* [VectorGL-usage2] */ @@ -1253,21 +1200,18 @@ shader #if !defined(CORRADE_TARGET_GCC) || defined(CORRADE_TARGET_CLANG) || __GNUC__ >= 5 { /* [VertexColorGL-usage1] */ -struct Vertex { +struct { Vector3 position; Color3 color; +} vertices[]{ + DOXYGEN_ELLIPSIS({}) }; -Vertex data[60]{ - // ... -}; - -GL::Buffer vertices; -vertices.setData(data, GL::BufferUsage::StaticDraw); GL::Mesh mesh; -mesh.addVertexBuffer(vertices, 0, - Shaders::VertexColorGL3D::Position{}, - Shaders::VertexColorGL3D::Color3{}); +mesh.addVertexBuffer(GL::Buffer{vertices}, 0, + Shaders::VertexColorGL3D::Position{}, + Shaders::VertexColorGL3D::Color3{}) + .setCount(Containers::arraySize(vertices)); /* [VertexColorGL-usage1] */ /* [VertexColorGL-usage2] */