From 7785698d356f6940feb96eec375fb01fb48ab13d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vladim=C3=ADr=20Vondru=C5=A1?= Date: Tue, 24 Apr 2018 20:01:07 +0200 Subject: [PATCH] Split the OpenGL layer out, pt 21: adapted DebugTools. --- src/Magnum/DebugTools/BufferData.cpp | 2 +- src/Magnum/DebugTools/BufferData.h | 16 ++-- src/Magnum/DebugTools/CompareImage.h | 1 + src/Magnum/DebugTools/ForceRenderer.cpp | 30 +++--- src/Magnum/DebugTools/ForceRenderer.h | 7 +- .../Implementation/AbstractBoxRenderer.cpp | 2 +- .../Implementation/AbstractShapeRenderer.cpp | 46 ++++----- .../Implementation/AbstractShapeRenderer.h | 7 +- .../Implementation/AxisAlignedBoxRenderer.cpp | 2 +- .../Implementation/AxisAlignedBoxRenderer.h | 2 +- .../DebugTools/Implementation/BoxRenderer.cpp | 2 +- .../DebugTools/Implementation/BoxRenderer.h | 2 +- .../Implementation/CapsuleRenderer.cpp | 30 +++--- .../Implementation/CapsuleRenderer.h | 6 +- .../Implementation/CylinderRenderer.cpp | 2 +- .../Implementation/LineSegmentRenderer.cpp | 4 +- .../Implementation/LineSegmentRenderer.h | 2 +- .../Implementation/PointRenderer.cpp | 2 +- .../DebugTools/Implementation/PointRenderer.h | 2 +- .../Implementation/SphereRenderer.cpp | 4 +- .../Implementation/SphereRenderer.h | 2 +- src/Magnum/DebugTools/ObjectRenderer.cpp | 30 +++--- src/Magnum/DebugTools/ObjectRenderer.h | 9 +- src/Magnum/DebugTools/ResourceManager.cpp | 10 +- src/Magnum/DebugTools/ResourceManager.h | 11 ++- src/Magnum/DebugTools/ShapeRenderer.cpp | 14 +-- .../DebugTools/Test/BufferDataGLTest.cpp | 16 ++-- .../DebugTools/Test/CapsuleRendererTest.cpp | 2 +- .../DebugTools/Test/CompareImageTest.cpp | 2 +- .../DebugTools/Test/CylinderRendererTest.cpp | 2 +- .../DebugTools/Test/ForceRendererTest.cpp | 2 +- .../Test/LineSegmentRendererTest.cpp | 2 +- .../DebugTools/Test/TextureImageGLTest.cpp | 96 +++++++++---------- src/Magnum/DebugTools/TextureImage.cpp | 60 ++++++------ src/Magnum/DebugTools/TextureImage.h | 17 ++-- 35 files changed, 226 insertions(+), 220 deletions(-) diff --git a/src/Magnum/DebugTools/BufferData.cpp b/src/Magnum/DebugTools/BufferData.cpp index 9f782b95a..77a4f5221 100644 --- a/src/Magnum/DebugTools/BufferData.cpp +++ b/src/Magnum/DebugTools/BufferData.cpp @@ -28,7 +28,7 @@ #ifndef MAGNUM_TARGET_WEBGL namespace Magnum { namespace DebugTools { namespace Implementation { -void bufferSubData(Buffer& buffer, GLintptr offset, GLsizeiptr size, void* output) { +void bufferSubData(GL::Buffer& buffer, GLintptr offset, GLsizeiptr size, void* output) { Containers::ArrayView data = buffer.mapRead(offset, size); std::copy(data.begin(), data.end(), reinterpret_cast(output)); buffer.unmap(); diff --git a/src/Magnum/DebugTools/BufferData.h b/src/Magnum/DebugTools/BufferData.h index 2fba36678..e4b402a17 100644 --- a/src/Magnum/DebugTools/BufferData.h +++ b/src/Magnum/DebugTools/BufferData.h @@ -33,26 +33,26 @@ #include -#include "Magnum/Buffer.h" +#include "Magnum/GL/Buffer.h" #include "Magnum/DebugTools/visibility.h" #ifndef MAGNUM_TARGET_WEBGL namespace Magnum { namespace DebugTools { namespace Implementation { - MAGNUM_DEBUGTOOLS_EXPORT void bufferSubData(Buffer& buffer, GLintptr offset, GLsizeiptr size, void* output); + MAGNUM_DEBUGTOOLS_EXPORT void bufferSubData(GL::Buffer& buffer, GLintptr offset, GLsizeiptr size, void* output); } /** @brief Buffer subdata -Emulates @ref Buffer::subData() call on platforms that don't support it (such -as OpenGL ES) by using @ref Buffer::map(). +Emulates @ref GL::Buffer::subData() call on platforms that don't support it +(such as OpenGL ES) by using @ref GL::Buffer::map(). @requires_gles30 Extension @extension{EXT,map_buffer_range} in OpenGL ES 2.0. @requires_gles Buffer mapping is not available in WebGL. */ -template Containers::Array inline bufferSubData(Buffer& buffer, GLintptr offset, GLsizeiptr size) { +template Containers::Array inline bufferSubData(GL::Buffer& buffer, GLintptr offset, GLsizeiptr size) { Containers::Array data{std::size_t(size)}; if(size) Implementation::bufferSubData(buffer, offset, size*sizeof(T), data); return data; @@ -61,13 +61,13 @@ template Containers::Array inline bufferSubData(Buffer& buffer, GLin /** @brief Buffer data -Emulates @ref Buffer::data() call on platforms that don't support it (such as -OpenGL ES) by using @ref Buffer::map(). +Emulates @ref GL::Buffer::data() call on platforms that don't support it (such +as OpenGL ES) by using @ref GL::Buffer::map(). @requires_gles30 Extension @extension{EXT,map_buffer_range} in OpenGL ES 2.0. @requires_gles Buffer mapping is not available in WebGL. */ -template Containers::Array inline bufferData(Buffer& buffer) { +template Containers::Array inline bufferData(GL::Buffer& buffer) { const Int bufferSize = buffer.size(); CORRADE_ASSERT(bufferSize%sizeof(T) == 0, "Buffer::data(): the buffer size is" << bufferSize << "bytes, which can't be expressed as array of types with size" << sizeof(T), nullptr); return bufferSubData(buffer, 0, bufferSize/sizeof(T)); diff --git a/src/Magnum/DebugTools/CompareImage.h b/src/Magnum/DebugTools/CompareImage.h index 18f2c9bc2..3254bcdc4 100644 --- a/src/Magnum/DebugTools/CompareImage.h +++ b/src/Magnum/DebugTools/CompareImage.h @@ -33,6 +33,7 @@ #include #include "Magnum/Magnum.h" +#include "Magnum/GL/GL.h" #include "Magnum/Math/Vector2.h" #include "Magnum/DebugTools/visibility.h" diff --git a/src/Magnum/DebugTools/ForceRenderer.cpp b/src/Magnum/DebugTools/ForceRenderer.cpp index 34318995a..fd2c2472a 100644 --- a/src/Magnum/DebugTools/ForceRenderer.cpp +++ b/src/Magnum/DebugTools/ForceRenderer.cpp @@ -25,13 +25,13 @@ #include "ForceRenderer.h" -#include "Magnum/Buffer.h" -#include "Magnum/Mesh.h" +#include "Magnum/GL/Buffer.h" +#include "Magnum/GL/Mesh.h" #include "Magnum/DebugTools/ResourceManager.h" #include "Magnum/SceneGraph/Camera.h" #include "Magnum/Shaders/Flat.h" -#include "Implementation/ForceRendererTransformation.h" +#include "Magnum/DebugTools/Implementation/ForceRendererTransformation.h" namespace Magnum { namespace DebugTools { @@ -58,31 +58,31 @@ constexpr std::array indices{{ template ForceRenderer::ForceRenderer(SceneGraph::AbstractObject& object, const VectorTypeFor& forcePosition, const VectorTypeFor& force, ResourceKey options, SceneGraph::DrawableGroup* drawables): SceneGraph::Drawable(object, drawables), _forcePosition(forcePosition), _force(force), _options(ResourceManager::instance().get(options)) { /* Shader */ - _shader = ResourceManager::instance().get>(shaderKey()); - if(!_shader) ResourceManager::instance().set(_shader.key(), new Shaders::Flat); + _shader = ResourceManager::instance().get>(shaderKey()); + if(!_shader) ResourceManager::instance().set(_shader.key(), new Shaders::Flat); /* Mesh and vertex buffer */ - _mesh = ResourceManager::instance().get("force"); - _vertexBuffer = ResourceManager::instance().get("force-vertices"); - _indexBuffer = ResourceManager::instance().get("force-indices"); + _mesh = ResourceManager::instance().get("force"); + _vertexBuffer = ResourceManager::instance().get("force-vertices"); + _indexBuffer = ResourceManager::instance().get("force-indices"); if(_mesh) return; /* Create the mesh */ - Buffer* vertexBuffer = new Buffer{Buffer::TargetHint::Array}; - Buffer* indexBuffer = new Buffer{Buffer::TargetHint::ElementArray}; + GL::Buffer* vertexBuffer = new GL::Buffer{GL::Buffer::TargetHint::Array}; + GL::Buffer* indexBuffer = new GL::Buffer{GL::Buffer::TargetHint::ElementArray}; - _vertexBuffer->setData(positions, BufferUsage::StaticDraw); + _vertexBuffer->setData(positions, GL::BufferUsage::StaticDraw); ResourceManager::instance().set(_vertexBuffer.key(), vertexBuffer, ResourceDataState::Final, ResourcePolicy::Manual); - _indexBuffer->setData(indices, BufferUsage::StaticDraw); + _indexBuffer->setData(indices, GL::BufferUsage::StaticDraw); ResourceManager::instance().set(_indexBuffer.key(), indexBuffer, ResourceDataState::Final, ResourcePolicy::Manual); - Mesh* mesh = new Mesh; - mesh->setPrimitive(MeshPrimitive::Lines) + GL::Mesh* mesh = new GL::Mesh; + mesh->setPrimitive(GL::MeshPrimitive::Lines) .setCount(indices.size()) .addVertexBuffer(*vertexBuffer, 0, typename Shaders::Flat::Position(Shaders::Flat::Position::Components::Two)) - .setIndexBuffer(*indexBuffer, 0, Mesh::IndexType::UnsignedByte, 0, positions.size()); + .setIndexBuffer(*indexBuffer, 0, GL::MeshIndexType::UnsignedByte, 0, positions.size()); ResourceManager::instance().set(_mesh.key(), mesh, ResourceDataState::Final, ResourcePolicy::Manual); } diff --git a/src/Magnum/DebugTools/ForceRenderer.h b/src/Magnum/DebugTools/ForceRenderer.h index 463420219..92018ce99 100644 --- a/src/Magnum/DebugTools/ForceRenderer.h +++ b/src/Magnum/DebugTools/ForceRenderer.h @@ -30,6 +30,7 @@ */ #include "Magnum/Resource.h" +#include "Magnum/GL/GL.h" #include "Magnum/Math/Color.h" #include "Magnum/SceneGraph/Drawable.h" #include "Magnum/Shaders/Shaders.h" @@ -135,9 +136,9 @@ template class MAGNUM_DEBUGTOOLS_EXPORT ForceRenderer: p const VectorTypeFor& _force; Resource _options; - Resource> _shader; - Resource _mesh; - Resource _vertexBuffer, _indexBuffer; + Resource> _shader; + Resource _mesh; + Resource _vertexBuffer, _indexBuffer; }; /** @brief Two-dimensional force renderer */ diff --git a/src/Magnum/DebugTools/Implementation/AbstractBoxRenderer.cpp b/src/Magnum/DebugTools/Implementation/AbstractBoxRenderer.cpp index 4c3dc61ac..cfcc5a77a 100644 --- a/src/Magnum/DebugTools/Implementation/AbstractBoxRenderer.cpp +++ b/src/Magnum/DebugTools/Implementation/AbstractBoxRenderer.cpp @@ -25,7 +25,7 @@ #include "AbstractBoxRenderer.h" -#include "Magnum/Mesh.h" +#include "Magnum/GL/Mesh.h" #include "Magnum/Primitives/Cube.h" #include "Magnum/Primitives/Square.h" #include "Magnum/Trade/MeshData2D.h" diff --git a/src/Magnum/DebugTools/Implementation/AbstractShapeRenderer.cpp b/src/Magnum/DebugTools/Implementation/AbstractShapeRenderer.cpp index 7e855a748..573036b6c 100644 --- a/src/Magnum/DebugTools/Implementation/AbstractShapeRenderer.cpp +++ b/src/Magnum/DebugTools/Implementation/AbstractShapeRenderer.cpp @@ -27,10 +27,10 @@ #include -#include "Magnum/AbstractShaderProgram.h" -#include "Magnum/Buffer.h" -#include "Magnum/Mesh.h" #include "Magnum/DebugTools/ResourceManager.h" +#include "Magnum/GL/AbstractShaderProgram.h" +#include "Magnum/GL/Buffer.h" +#include "Magnum/GL/Mesh.h" #include "Magnum/MeshTools/CompressIndices.h" #include "Magnum/Shaders/Flat.h" #include "Magnum/Trade/MeshData2D.h" @@ -44,16 +44,16 @@ template ResourceKey shaderKey(); template<> inline ResourceKey shaderKey<2>() { return ResourceKey("FlatShader2D"); } template<> inline ResourceKey shaderKey<3>() { return ResourceKey("FlatShader3D"); } -template void create(typename MeshData::Type&, Resource&, Resource&, Resource&); +template void create(typename MeshData::Type&, Resource&, Resource&, Resource&); -template<> void create<2>(Trade::MeshData2D& data, Resource& meshResource, Resource& vertexBufferResource, Resource& indexBufferResource) { +template<> void create<2>(Trade::MeshData2D& data, Resource& meshResource, Resource& vertexBufferResource, Resource& indexBufferResource) { /* Vertex buffer */ - Buffer* buffer = new Buffer{Buffer::TargetHint::Array}; - buffer->setData(data.positions(0), BufferUsage::StaticDraw); + GL::Buffer* buffer = new GL::Buffer{GL::Buffer::TargetHint::Array}; + buffer->setData(data.positions(0), GL::BufferUsage::StaticDraw); ResourceManager::instance().set(vertexBufferResource.key(), buffer, ResourceDataState::Final, ResourcePolicy::Manual); /* Mesh configuration */ - Mesh* mesh = new Mesh; + GL::Mesh* mesh = new GL::Mesh; mesh->setPrimitive(data.primitive()) .addVertexBuffer(*buffer, 0, Shaders::Flat2D::Position()); ResourceManager::instance().set(meshResource.key(), mesh, ResourceDataState::Final, ResourcePolicy::Manual); @@ -63,12 +63,12 @@ template<> void create<2>(Trade::MeshData2D& data, Resource& meshResource, CORRADE_INTERNAL_ASSERT(indexBufferResource.key() != ResourceKey()); Containers::Array indexData; - Mesh::IndexType indexType; + MeshIndexType indexType; UnsignedInt indexStart, indexEnd; std::tie(indexData, indexType, indexStart, indexEnd) = MeshTools::compressIndices(data.indices()); - Buffer* indexBuffer = new Buffer{Buffer::TargetHint::ElementArray}; - indexBuffer->setData(indexData, BufferUsage::StaticDraw); + GL::Buffer* indexBuffer = new GL::Buffer{GL::Buffer::TargetHint::ElementArray}; + indexBuffer->setData(indexData, GL::BufferUsage::StaticDraw); mesh->setCount(data.indices().size()) .setIndexBuffer(*indexBuffer, 0, indexType, indexStart, indexEnd); @@ -78,14 +78,14 @@ template<> void create<2>(Trade::MeshData2D& data, Resource& meshResource, } else mesh->setCount(data.positions(0).size()); } -template<> void create<3>(Trade::MeshData3D& data, Resource& meshResource, Resource& vertexBufferResource, Resource& indexBufferResource) { +template<> void create<3>(Trade::MeshData3D& data, Resource& meshResource, Resource& vertexBufferResource, Resource& indexBufferResource) { /* Vertex buffer */ - Buffer* vertexBuffer = new Buffer{Buffer::TargetHint::Array}; - vertexBuffer->setData(data.positions(0), BufferUsage::StaticDraw); + GL::Buffer* vertexBuffer = new GL::Buffer{GL::Buffer::TargetHint::Array}; + vertexBuffer->setData(data.positions(0), GL::BufferUsage::StaticDraw); ResourceManager::instance().set(vertexBufferResource.key(), vertexBuffer, ResourceDataState::Final, ResourcePolicy::Manual); /* Mesh configuration */ - Mesh* mesh = new Mesh; + GL::Mesh* mesh = new GL::Mesh; mesh->setPrimitive(data.primitive()) .addVertexBuffer(*vertexBuffer, 0, Shaders::Flat3D::Position()); ResourceManager::instance().set(meshResource.key(), mesh, ResourceDataState::Final, ResourcePolicy::Manual); @@ -95,12 +95,12 @@ template<> void create<3>(Trade::MeshData3D& data, Resource& meshResource, CORRADE_INTERNAL_ASSERT(indexBufferResource.key() != ResourceKey()); Containers::Array indexData; - Mesh::IndexType indexType; + MeshIndexType indexType; UnsignedInt indexStart, indexEnd; std::tie(indexData, indexType, indexStart, indexEnd) = MeshTools::compressIndices(data.indices()); - Buffer* indexBuffer = new Buffer{Buffer::TargetHint::ElementArray}; - indexBuffer->setData(indexData, BufferUsage::StaticDraw); + GL::Buffer* indexBuffer = new GL::Buffer{GL::Buffer::TargetHint::ElementArray}; + indexBuffer->setData(indexData, GL::BufferUsage::StaticDraw); mesh->setCount(data.indices().size()) .setIndexBuffer(*indexBuffer, 0, indexType, indexStart, indexEnd); @@ -113,12 +113,12 @@ template<> void create<3>(Trade::MeshData3D& data, Resource& meshResource, } template AbstractShapeRenderer::AbstractShapeRenderer(ResourceKey meshKey, ResourceKey vertexBufferKey, ResourceKey indexBufferKey) { - wireframeShader = ResourceManager::instance().get>(shaderKey()); - wireframeMesh = ResourceManager::instance().get(meshKey); - vertexBuffer = ResourceManager::instance().get(vertexBufferKey); - indexBuffer = ResourceManager::instance().get(indexBufferKey); + wireframeShader = ResourceManager::instance().get>(shaderKey()); + wireframeMesh = ResourceManager::instance().get(meshKey); + vertexBuffer = ResourceManager::instance().get(vertexBufferKey); + indexBuffer = ResourceManager::instance().get(indexBufferKey); - if(!wireframeShader) ResourceManager::instance().set(shaderKey(), + if(!wireframeShader) ResourceManager::instance().set(shaderKey(), new Shaders::Flat, ResourceDataState::Final, ResourcePolicy::Resident); } diff --git a/src/Magnum/DebugTools/Implementation/AbstractShapeRenderer.h b/src/Magnum/DebugTools/Implementation/AbstractShapeRenderer.h index 2ef56cf48..67a88b051 100644 --- a/src/Magnum/DebugTools/Implementation/AbstractShapeRenderer.h +++ b/src/Magnum/DebugTools/Implementation/AbstractShapeRenderer.h @@ -28,6 +28,7 @@ #include "Magnum/DimensionTraits.h" #include "Magnum/Resource.h" #include "Magnum/DebugTools/DebugTools.h" +#include "Magnum/GL/GL.h" #include "Magnum/SceneGraph/SceneGraph.h" #include "Magnum/Shaders/Shaders.h" #include "Magnum/Trade/Trade.h" @@ -56,11 +57,11 @@ template class AbstractShapeRenderer { /* Call only if the mesh resource isn't already present */ void createResources(typename MeshData::Type data); - Resource> wireframeShader; - Resource wireframeMesh; + Resource> wireframeShader; + Resource wireframeMesh; private: - Resource indexBuffer, vertexBuffer; + Resource indexBuffer, vertexBuffer; }; }}} diff --git a/src/Magnum/DebugTools/Implementation/AxisAlignedBoxRenderer.cpp b/src/Magnum/DebugTools/Implementation/AxisAlignedBoxRenderer.cpp index f3a81fd36..db6a2f15d 100644 --- a/src/Magnum/DebugTools/Implementation/AxisAlignedBoxRenderer.cpp +++ b/src/Magnum/DebugTools/Implementation/AxisAlignedBoxRenderer.cpp @@ -25,7 +25,7 @@ #include "AxisAlignedBoxRenderer.h" -#include "Magnum/Mesh.h" +#include "Magnum/GL/Mesh.h" #include "Magnum/DebugTools/ShapeRenderer.h" #include "Magnum/Shapes/AxisAlignedBox.h" #include "Magnum/Shaders/Flat.h" diff --git a/src/Magnum/DebugTools/Implementation/AxisAlignedBoxRenderer.h b/src/Magnum/DebugTools/Implementation/AxisAlignedBoxRenderer.h index a0bbad9be..67ae1a0ea 100644 --- a/src/Magnum/DebugTools/Implementation/AxisAlignedBoxRenderer.h +++ b/src/Magnum/DebugTools/Implementation/AxisAlignedBoxRenderer.h @@ -27,7 +27,7 @@ #include "Magnum/Shapes/Shapes.h" -#include "AbstractBoxRenderer.h" +#include "Magnum/DebugTools/Implementation/AbstractBoxRenderer.h" namespace Magnum { namespace DebugTools { namespace Implementation { diff --git a/src/Magnum/DebugTools/Implementation/BoxRenderer.cpp b/src/Magnum/DebugTools/Implementation/BoxRenderer.cpp index 93004535d..bcb6a0f83 100644 --- a/src/Magnum/DebugTools/Implementation/BoxRenderer.cpp +++ b/src/Magnum/DebugTools/Implementation/BoxRenderer.cpp @@ -25,7 +25,7 @@ #include "BoxRenderer.h" -#include "Magnum/Mesh.h" +#include "Magnum/GL/Mesh.h" #include "Magnum/DebugTools/ShapeRenderer.h" #include "Magnum/Shapes/Box.h" #include "Magnum/Shaders/Flat.h" diff --git a/src/Magnum/DebugTools/Implementation/BoxRenderer.h b/src/Magnum/DebugTools/Implementation/BoxRenderer.h index 0f4f11a67..1368c1b14 100644 --- a/src/Magnum/DebugTools/Implementation/BoxRenderer.h +++ b/src/Magnum/DebugTools/Implementation/BoxRenderer.h @@ -27,7 +27,7 @@ #include "Magnum/Shapes/Shapes.h" -#include "AbstractBoxRenderer.h" +#include "Magnum/DebugTools/Implementation/AbstractBoxRenderer.h" namespace Magnum { namespace DebugTools { namespace Implementation { diff --git a/src/Magnum/DebugTools/Implementation/CapsuleRenderer.cpp b/src/Magnum/DebugTools/Implementation/CapsuleRenderer.cpp index 925734dd4..9937df5d1 100644 --- a/src/Magnum/DebugTools/Implementation/CapsuleRenderer.cpp +++ b/src/Magnum/DebugTools/Implementation/CapsuleRenderer.cpp @@ -25,17 +25,17 @@ #include "CapsuleRenderer.h" -#include "Magnum/Mesh.h" -#include "Magnum/MeshView.h" #include "Magnum/DebugTools/ResourceManager.h" #include "Magnum/DebugTools/ShapeRenderer.h" +#include "Magnum/GL/Mesh.h" +#include "Magnum/GL/MeshView.h" #include "Magnum/Primitives/Capsule.h" #include "Magnum/Shapes/Capsule.h" #include "Magnum/Shaders/Flat.h" #include "Magnum/Trade/MeshData2D.h" #include "Magnum/Trade/MeshData3D.h" -#include "CapsuleRendererTransformation.h" +#include "Magnum/DebugTools/Implementation/CapsuleRendererTransformation.h" namespace Magnum { namespace DebugTools { namespace Implementation { @@ -44,24 +44,24 @@ AbstractCapsuleRenderer<2>::AbstractCapsuleRenderer(): AbstractShapeRenderer<2>( if(!wireframeMesh) createResources(Primitives::capsule2DWireframe(rings, 1, 1.0f)); /* Bottom hemisphere */ - if(!(bottom = ResourceManager::instance().get("capsule2d-bottom"))) { - auto view = new MeshView(*wireframeMesh); + if(!(bottom = ResourceManager::instance().get("capsule2d-bottom"))) { + auto view = new GL::MeshView(*wireframeMesh); view->setCount(rings*4) .setIndexRange(0, 0, rings*2+1); ResourceManager::instance().set(bottom.key(), view, ResourceDataState::Final, ResourcePolicy::Manual); } /* Cylinder */ - if(!(cylinder = ResourceManager::instance().get("capsule2d-cylinder"))) { - auto view = new MeshView(*wireframeMesh); + if(!(cylinder = ResourceManager::instance().get("capsule2d-cylinder"))) { + auto view = new GL::MeshView(*wireframeMesh); view->setCount(4) .setIndexRange(rings*4, rings*2+1, rings*2+3); ResourceManager::instance().set(cylinder.key(), view, ResourceDataState::Final, ResourcePolicy::Manual); } /* Top hemisphere */ - if(!(top = ResourceManager::instance().get("capsule2d-top"))) { - auto view = new MeshView(*wireframeMesh); + if(!(top = ResourceManager::instance().get("capsule2d-top"))) { + auto view = new GL::MeshView(*wireframeMesh); view->setCount(rings*4) .setIndexRange(rings*4+4, rings*2+3, rings*4+4); ResourceManager::instance().set(top.key(), view, ResourceDataState::Final, ResourcePolicy::Manual); @@ -74,24 +74,24 @@ AbstractCapsuleRenderer<3>::AbstractCapsuleRenderer(): AbstractShapeRenderer<3>( if(!wireframeMesh) createResources(Primitives::capsule3DWireframe(rings, 1, segments, 1.0f)); /* Bottom hemisphere */ - if(!(bottom = ResourceManager::instance().get("capsule3d-bottom"))) { - auto view = new MeshView(*wireframeMesh); + if(!(bottom = ResourceManager::instance().get("capsule3d-bottom"))) { + auto view = new GL::MeshView(*wireframeMesh); view->setCount(rings*8) .setIndexRange(0, 0, rings*4+1); ResourceManager::instance().set(bottom.key(), view, ResourceDataState::Final, ResourcePolicy::Manual); } /* Cylinder */ - if(!(cylinder = ResourceManager::instance().get("capsule3d-cylinder"))) { - auto view = new MeshView(*wireframeMesh); + if(!(cylinder = ResourceManager::instance().get("capsule3d-cylinder"))) { + auto view = new GL::MeshView(*wireframeMesh); view->setCount(segments*4+8) .setIndexRange(rings*8, rings*4+1, rings*4+segments*2+5); ResourceManager::instance().set(cylinder.key(), view, ResourceDataState::Final, ResourcePolicy::Manual); } /* Top */ - if(!(top = ResourceManager::instance().get("capsule3d-top"))) { - auto view = new MeshView(*wireframeMesh); + if(!(top = ResourceManager::instance().get("capsule3d-top"))) { + auto view = new GL::MeshView(*wireframeMesh); view->setCount(rings*8) .setIndexRange(rings*8+segments*4+8, rings*4+segments*2+5, rings*8+segments*2+6); ResourceManager::instance().set(top.key(), view, ResourceDataState::Final, ResourcePolicy::Manual); diff --git a/src/Magnum/DebugTools/Implementation/CapsuleRenderer.h b/src/Magnum/DebugTools/Implementation/CapsuleRenderer.h index 19c8e2f98..c0f8330b8 100644 --- a/src/Magnum/DebugTools/Implementation/CapsuleRenderer.h +++ b/src/Magnum/DebugTools/Implementation/CapsuleRenderer.h @@ -27,7 +27,7 @@ #include "Magnum/Shapes/Shapes.h" -#include "AbstractShapeRenderer.h" +#include "Magnum/DebugTools/Implementation/AbstractShapeRenderer.h" namespace Magnum { namespace DebugTools { namespace Implementation { @@ -39,7 +39,7 @@ template<> class AbstractCapsuleRenderer<2>: public AbstractShapeRenderer<2> { ~AbstractCapsuleRenderer(); protected: - Resource bottom, cylinder, top; + Resource bottom, cylinder, top; }; template<> class AbstractCapsuleRenderer<3>: public AbstractShapeRenderer<3> { @@ -48,7 +48,7 @@ template<> class AbstractCapsuleRenderer<3>: public AbstractShapeRenderer<3> { ~AbstractCapsuleRenderer(); protected: - Resource bottom, cylinder, top; + Resource bottom, cylinder, top; }; template class CapsuleRenderer: public AbstractCapsuleRenderer { diff --git a/src/Magnum/DebugTools/Implementation/CylinderRenderer.cpp b/src/Magnum/DebugTools/Implementation/CylinderRenderer.cpp index 4ec520b22..53f231270 100644 --- a/src/Magnum/DebugTools/Implementation/CylinderRenderer.cpp +++ b/src/Magnum/DebugTools/Implementation/CylinderRenderer.cpp @@ -25,8 +25,8 @@ #include "CylinderRenderer.h" -#include "Magnum/Mesh.h" #include "Magnum/DebugTools/ShapeRenderer.h" +#include "Magnum/GL/Mesh.h" #include "Magnum/Shapes/Cylinder.h" #include "Magnum/Primitives/Cylinder.h" #include "Magnum/Primitives/Square.h" diff --git a/src/Magnum/DebugTools/Implementation/LineSegmentRenderer.cpp b/src/Magnum/DebugTools/Implementation/LineSegmentRenderer.cpp index 9a51b3320..a42b9a453 100644 --- a/src/Magnum/DebugTools/Implementation/LineSegmentRenderer.cpp +++ b/src/Magnum/DebugTools/Implementation/LineSegmentRenderer.cpp @@ -25,15 +25,15 @@ #include "LineSegmentRenderer.h" -#include "Magnum/Mesh.h" #include "Magnum/DebugTools/ShapeRenderer.h" +#include "Magnum/GL/Mesh.h" #include "Magnum/Shapes/LineSegment.h" #include "Magnum/Primitives/Line.h" #include "Magnum/Shaders/Flat.h" #include "Magnum/Trade/MeshData2D.h" #include "Magnum/Trade/MeshData3D.h" -#include "LineSegmentRendererTransformation.h" +#include "Magnum/DebugTools/Implementation/LineSegmentRendererTransformation.h" namespace Magnum { namespace DebugTools { namespace Implementation { diff --git a/src/Magnum/DebugTools/Implementation/LineSegmentRenderer.h b/src/Magnum/DebugTools/Implementation/LineSegmentRenderer.h index 9a5094c15..0dbbd8582 100644 --- a/src/Magnum/DebugTools/Implementation/LineSegmentRenderer.h +++ b/src/Magnum/DebugTools/Implementation/LineSegmentRenderer.h @@ -27,7 +27,7 @@ #include "Magnum/Shapes/Shapes.h" -#include "AbstractShapeRenderer.h" +#include "Magnum/DebugTools/Implementation/AbstractShapeRenderer.h" namespace Magnum { namespace DebugTools { namespace Implementation { diff --git a/src/Magnum/DebugTools/Implementation/PointRenderer.cpp b/src/Magnum/DebugTools/Implementation/PointRenderer.cpp index 7851bb7e7..76b20fb75 100644 --- a/src/Magnum/DebugTools/Implementation/PointRenderer.cpp +++ b/src/Magnum/DebugTools/Implementation/PointRenderer.cpp @@ -25,8 +25,8 @@ #include "PointRenderer.h" -#include "Magnum/Mesh.h" #include "Magnum/DebugTools/ShapeRenderer.h" +#include "Magnum/GL/Mesh.h" #include "Magnum/Shapes/Point.h" #include "Magnum/Primitives/Crosshair.h" #include "Magnum/Shaders/Flat.h" diff --git a/src/Magnum/DebugTools/Implementation/PointRenderer.h b/src/Magnum/DebugTools/Implementation/PointRenderer.h index c560ec425..8ef0d32cb 100644 --- a/src/Magnum/DebugTools/Implementation/PointRenderer.h +++ b/src/Magnum/DebugTools/Implementation/PointRenderer.h @@ -27,7 +27,7 @@ #include "Magnum/Shapes/Shapes.h" -#include "AbstractShapeRenderer.h" +#include "Magnum/DebugTools/Implementation/AbstractShapeRenderer.h" namespace Magnum { namespace DebugTools { namespace Implementation { diff --git a/src/Magnum/DebugTools/Implementation/SphereRenderer.cpp b/src/Magnum/DebugTools/Implementation/SphereRenderer.cpp index cd7b11ba4..ec4783094 100644 --- a/src/Magnum/DebugTools/Implementation/SphereRenderer.cpp +++ b/src/Magnum/DebugTools/Implementation/SphereRenderer.cpp @@ -25,12 +25,12 @@ #include "SphereRenderer.h" -#include "Magnum/Mesh.h" #include "Magnum/DebugTools/ShapeRenderer.h" -#include "Magnum/Shapes/Sphere.h" +#include "Magnum/GL/Mesh.h" #include "Magnum/Primitives/Circle.h" #include "Magnum/Primitives/UVSphere.h" #include "Magnum/Shaders/Flat.h" +#include "Magnum/Shapes/Sphere.h" #include "Magnum/Trade/MeshData2D.h" #include "Magnum/Trade/MeshData3D.h" diff --git a/src/Magnum/DebugTools/Implementation/SphereRenderer.h b/src/Magnum/DebugTools/Implementation/SphereRenderer.h index 21bed491e..5e8b52dfd 100644 --- a/src/Magnum/DebugTools/Implementation/SphereRenderer.h +++ b/src/Magnum/DebugTools/Implementation/SphereRenderer.h @@ -27,7 +27,7 @@ #include "Magnum/Shapes/Shapes.h" -#include "AbstractShapeRenderer.h" +#include "Magnum/DebugTools/Implementation/AbstractShapeRenderer.h" namespace Magnum { namespace DebugTools { namespace Implementation { diff --git a/src/Magnum/DebugTools/ObjectRenderer.cpp b/src/Magnum/DebugTools/ObjectRenderer.cpp index 15a199a4f..9d9a4abf4 100644 --- a/src/Magnum/DebugTools/ObjectRenderer.cpp +++ b/src/Magnum/DebugTools/ObjectRenderer.cpp @@ -25,9 +25,9 @@ #include "ObjectRenderer.h" -#include "Magnum/Buffer.h" -#include "Magnum/Mesh.h" #include "Magnum/DebugTools/ResourceManager.h" +#include "Magnum/GL/Buffer.h" +#include "Magnum/GL/Mesh.h" #include "Magnum/MeshTools/CompressIndices.h" #include "Magnum/MeshTools/Interleave.h" #include "Magnum/Primitives/Axis.h" @@ -63,35 +63,35 @@ template<> struct Renderer<3> { /* Doxygen gets confused when using {} to initialize parent object */ template ObjectRenderer::ObjectRenderer(SceneGraph::AbstractObject& object, ResourceKey options, SceneGraph::DrawableGroup* drawables): SceneGraph::Drawable(object, drawables), _options{ResourceManager::instance().get(options)} { /* Shader */ - _shader = ResourceManager::instance().get>(Renderer::shader()); - if(!_shader) ResourceManager::instance().set(_shader.key(), new Shaders::VertexColor); + _shader = ResourceManager::instance().get>(Renderer::shader()); + if(!_shader) ResourceManager::instance().set(_shader.key(), new Shaders::VertexColor); /* Mesh and vertex buffer */ - _mesh = ResourceManager::instance().get(Renderer::mesh()); - _vertexBuffer = ResourceManager::instance().get(Renderer::vertexBuffer()); - _indexBuffer = ResourceManager::instance().get(Renderer::indexBuffer()); + _mesh = ResourceManager::instance().get(Renderer::mesh()); + _vertexBuffer = ResourceManager::instance().get(Renderer::vertexBuffer()); + _indexBuffer = ResourceManager::instance().get(Renderer::indexBuffer()); if(_mesh) return; /* Create the mesh */ - Buffer* vertexBuffer = new Buffer{Buffer::TargetHint::Array}; - Buffer* indexBuffer = new Buffer{Buffer::TargetHint::ElementArray}; - Mesh* mesh = new Mesh; + GL::Buffer* vertexBuffer = new GL::Buffer{GL::Buffer::TargetHint::Array}; + GL::Buffer* indexBuffer = new GL::Buffer{GL::Buffer::TargetHint::ElementArray}; + GL::Mesh* mesh = new GL::Mesh; auto data = Renderer::meshData(); - vertexBuffer->setData(MeshTools::interleave(data.positions(0), data.colors(0)), BufferUsage::StaticDraw); + vertexBuffer->setData(MeshTools::interleave(data.positions(0), data.colors(0)), GL::BufferUsage::StaticDraw); ResourceManager::instance().set(_vertexBuffer.key(), vertexBuffer, ResourceDataState::Final, ResourcePolicy::Manual); - indexBuffer->setData(MeshTools::compressIndicesAs(data.indices()), BufferUsage::StaticDraw); + indexBuffer->setData(MeshTools::compressIndicesAs(data.indices()), GL::BufferUsage::StaticDraw); ResourceManager::instance().set(_indexBuffer.key(), indexBuffer, ResourceDataState::Final, ResourcePolicy::Manual); - mesh->setPrimitive(MeshPrimitive::Lines) + mesh->setPrimitive(GL::MeshPrimitive::Lines) .setCount(data.indices().size()) .addVertexBuffer(*vertexBuffer, 0, typename Shaders::VertexColor::Position(), typename Shaders::VertexColor::Color{Shaders::VertexColor::Color::Components::Four}) - .setIndexBuffer(*indexBuffer, 0, Mesh::IndexType::UnsignedByte, 0, data.positions(0).size()); - ResourceManager::instance().set(_mesh.key(), mesh, ResourceDataState::Final, ResourcePolicy::Manual); + .setIndexBuffer(*indexBuffer, 0, GL::MeshIndexType::UnsignedByte, 0, data.positions(0).size()); + ResourceManager::instance().set(_mesh.key(), mesh, ResourceDataState::Final, ResourcePolicy::Manual); } /* To avoid deleting pointers to incomplete type on destruction of Resource members */ diff --git a/src/Magnum/DebugTools/ObjectRenderer.h b/src/Magnum/DebugTools/ObjectRenderer.h index 42666184a..275b88eb7 100644 --- a/src/Magnum/DebugTools/ObjectRenderer.h +++ b/src/Magnum/DebugTools/ObjectRenderer.h @@ -30,9 +30,10 @@ */ #include "Magnum/Resource.h" +#include "Magnum/DebugTools/visibility.h" +#include "Magnum/GL/GL.h" #include "Magnum/SceneGraph/Drawable.h" #include "Magnum/Shaders/Shaders.h" -#include "Magnum/DebugTools/visibility.h" namespace Magnum { namespace DebugTools { @@ -104,9 +105,9 @@ template class MAGNUM_DEBUGTOOLS_EXPORT ObjectRenderer: void draw(const MatrixTypeFor& transformationMatrix, SceneGraph::Camera& camera) override; Resource _options; - Resource> _shader; - Resource _mesh; - Resource _vertexBuffer, _indexBuffer; + Resource> _shader; + Resource _mesh; + Resource _vertexBuffer, _indexBuffer; }; /** @brief Two-dimensional object renderer */ diff --git a/src/Magnum/DebugTools/ResourceManager.cpp b/src/Magnum/DebugTools/ResourceManager.cpp index 375752b9d..14decf032 100644 --- a/src/Magnum/DebugTools/ResourceManager.cpp +++ b/src/Magnum/DebugTools/ResourceManager.cpp @@ -25,19 +25,19 @@ #include "ResourceManager.h" -#include "Magnum/AbstractShaderProgram.h" -#include "Magnum/Buffer.h" -#include "Magnum/Mesh.h" -#include "Magnum/MeshView.h" #include "Magnum/ResourceManager.hpp" #include "Magnum/DebugTools/ForceRenderer.h" #include "Magnum/DebugTools/ObjectRenderer.h" #include "Magnum/DebugTools/ShapeRenderer.h" +#include "Magnum/GL/AbstractShaderProgram.h" +#include "Magnum/GL/Buffer.h" +#include "Magnum/GL/Mesh.h" +#include "Magnum/GL/MeshView.h" namespace Magnum { namespace Implementation { - template struct MAGNUM_DEBUGTOOLS_EXPORT ResourceManagerLocalInstanceImplementation; + template struct MAGNUM_DEBUGTOOLS_EXPORT ResourceManagerLocalInstanceImplementation; } namespace DebugTools { diff --git a/src/Magnum/DebugTools/ResourceManager.h b/src/Magnum/DebugTools/ResourceManager.h index 075622221..69333dbf8 100644 --- a/src/Magnum/DebugTools/ResourceManager.h +++ b/src/Magnum/DebugTools/ResourceManager.h @@ -34,18 +34,19 @@ #include "Magnum/Magnum.h" #include "Magnum/DebugTools/DebugTools.h" #include "Magnum/DebugTools/visibility.h" +#include "Magnum/GL/GL.h" #include "Magnum/SceneGraph/SceneGraph.h" #include "Magnum/Shapes/Shapes.h" /** @todo fix this better */ #ifdef CORRADE_MSVC2017_COMPATIBILITY -#include "Magnum/AbstractShaderProgram.h" -#include "Magnum/Buffer.h" -#include "Magnum/Mesh.h" -#include "Magnum/MeshView.h" #include "Magnum/DebugTools/ForceRenderer.h" #include "Magnum/DebugTools/ObjectRenderer.h" #include "Magnum/DebugTools/ShapeRenderer.h" +#include "Magnum/GL/AbstractShaderProgram.h" +#include "Magnum/GL/Buffer.h" +#include "Magnum/GL/Mesh.h" +#include "Magnum/GL/MeshView.h" #endif namespace Magnum { @@ -58,7 +59,7 @@ namespace DebugTools { Stores various data used by debug renderers. See @ref debug-tools for more information. */ -class MAGNUM_DEBUGTOOLS_EXPORT ResourceManager: public Magnum::ResourceManager { +class MAGNUM_DEBUGTOOLS_EXPORT ResourceManager: public Magnum::ResourceManager { public: explicit ResourceManager(); ~ResourceManager(); diff --git a/src/Magnum/DebugTools/ShapeRenderer.cpp b/src/Magnum/DebugTools/ShapeRenderer.cpp index 7343706aa..15b9892ba 100644 --- a/src/Magnum/DebugTools/ShapeRenderer.cpp +++ b/src/Magnum/DebugTools/ShapeRenderer.cpp @@ -30,13 +30,13 @@ #include "Magnum/Shapes/Shape.h" #include "Magnum/SceneGraph/Camera.h" -#include "Implementation/AxisAlignedBoxRenderer.h" -#include "Implementation/BoxRenderer.h" -#include "Implementation/CapsuleRenderer.h" -#include "Implementation/CylinderRenderer.h" -#include "Implementation/LineSegmentRenderer.h" -#include "Implementation/PointRenderer.h" -#include "Implementation/SphereRenderer.h" +#include "Magnum/DebugTools/Implementation/AxisAlignedBoxRenderer.h" +#include "Magnum/DebugTools/Implementation/BoxRenderer.h" +#include "Magnum/DebugTools/Implementation/CapsuleRenderer.h" +#include "Magnum/DebugTools/Implementation/CylinderRenderer.h" +#include "Magnum/DebugTools/Implementation/LineSegmentRenderer.h" +#include "Magnum/DebugTools/Implementation/PointRenderer.h" +#include "Magnum/DebugTools/Implementation/SphereRenderer.h" namespace Magnum { namespace DebugTools { diff --git a/src/Magnum/DebugTools/Test/BufferDataGLTest.cpp b/src/Magnum/DebugTools/Test/BufferDataGLTest.cpp index a73c8bfb9..9219cd321 100644 --- a/src/Magnum/DebugTools/Test/BufferDataGLTest.cpp +++ b/src/Magnum/DebugTools/Test/BufferDataGLTest.cpp @@ -25,12 +25,12 @@ #include -#include "Magnum/OpenGLTester.h" #include "Magnum/DebugTools/BufferData.h" +#include "Magnum/GL/OpenGLTester.h" namespace Magnum { namespace DebugTools { namespace Test { -struct BufferDataGLTest: Magnum::OpenGLTester { +struct BufferDataGLTest: Magnum::GL::OpenGLTester { explicit BufferDataGLTest(); void data(); @@ -47,19 +47,19 @@ namespace { } void BufferDataGLTest::data() { - Buffer buffer; - buffer.setData(Data, BufferUsage::StaticDraw); + GL::Buffer buffer; + buffer.setData(Data, GL::BufferUsage::StaticDraw); const Containers::Array contents = bufferData(buffer); - MAGNUM_VERIFY_NO_ERROR(); + MAGNUM_VERIFY_NO_GL_ERROR(); CORRADE_COMPARE_AS(contents, Containers::arrayView(Data), TestSuite::Compare::Container); } void BufferDataGLTest::subData() { - Buffer buffer; - buffer.setData(Data, BufferUsage::StaticDraw); + GL::Buffer buffer; + buffer.setData(Data, GL::BufferUsage::StaticDraw); const Containers::Array contents = bufferSubData(buffer, 4, 3); - MAGNUM_VERIFY_NO_ERROR(); + MAGNUM_VERIFY_NO_GL_ERROR(); CORRADE_COMPARE_AS(contents, Containers::arrayView(Data).slice(1, 4), TestSuite::Compare::Container); } diff --git a/src/Magnum/DebugTools/Test/CapsuleRendererTest.cpp b/src/Magnum/DebugTools/Test/CapsuleRendererTest.cpp index f33c18ba1..0b11afecc 100644 --- a/src/Magnum/DebugTools/Test/CapsuleRendererTest.cpp +++ b/src/Magnum/DebugTools/Test/CapsuleRendererTest.cpp @@ -25,7 +25,7 @@ #include -#include "../Implementation/CapsuleRendererTransformation.h" +#include "Magnum/DebugTools/Implementation/CapsuleRendererTransformation.h" namespace Magnum { namespace DebugTools { namespace Test { diff --git a/src/Magnum/DebugTools/Test/CompareImageTest.cpp b/src/Magnum/DebugTools/Test/CompareImageTest.cpp index f916ee356..fafa604f7 100644 --- a/src/Magnum/DebugTools/Test/CompareImageTest.cpp +++ b/src/Magnum/DebugTools/Test/CompareImageTest.cpp @@ -29,8 +29,8 @@ #include #include "Magnum/ImageView.h" -#include "Magnum/PixelFormat.h" #include "Magnum/DebugTools/CompareImage.h" +#include "Magnum/GL/PixelFormat.h" #include "Magnum/Math/Functions.h" #include "Magnum/Math/Color.h" diff --git a/src/Magnum/DebugTools/Test/CylinderRendererTest.cpp b/src/Magnum/DebugTools/Test/CylinderRendererTest.cpp index c2045106e..18dee7f69 100644 --- a/src/Magnum/DebugTools/Test/CylinderRendererTest.cpp +++ b/src/Magnum/DebugTools/Test/CylinderRendererTest.cpp @@ -25,7 +25,7 @@ #include -#include "../Implementation/CylinderRendererTransformation.h" +#include "Magnum/DebugTools/Implementation/CylinderRendererTransformation.h" namespace Magnum { namespace DebugTools { namespace Test { diff --git a/src/Magnum/DebugTools/Test/ForceRendererTest.cpp b/src/Magnum/DebugTools/Test/ForceRendererTest.cpp index 846badd54..86607effb 100644 --- a/src/Magnum/DebugTools/Test/ForceRendererTest.cpp +++ b/src/Magnum/DebugTools/Test/ForceRendererTest.cpp @@ -26,7 +26,7 @@ #include #include -#include "../Implementation/ForceRendererTransformation.h" +#include "Magnum/DebugTools/Implementation/ForceRendererTransformation.h" namespace Magnum { namespace DebugTools { namespace Implementation { namespace Test { diff --git a/src/Magnum/DebugTools/Test/LineSegmentRendererTest.cpp b/src/Magnum/DebugTools/Test/LineSegmentRendererTest.cpp index 2322fc2cb..13d91c44f 100644 --- a/src/Magnum/DebugTools/Test/LineSegmentRendererTest.cpp +++ b/src/Magnum/DebugTools/Test/LineSegmentRendererTest.cpp @@ -29,7 +29,7 @@ #include "Magnum/Math/Matrix3.h" #include "Magnum/Math/Matrix4.h" -#include "../Implementation/LineSegmentRendererTransformation.h" +#include "Magnum/DebugTools/Implementation/LineSegmentRendererTransformation.h" namespace Magnum { namespace DebugTools { namespace Test { diff --git a/src/Magnum/DebugTools/Test/TextureImageGLTest.cpp b/src/Magnum/DebugTools/Test/TextureImageGLTest.cpp index 6b037b511..9df7075b5 100644 --- a/src/Magnum/DebugTools/Test/TextureImageGLTest.cpp +++ b/src/Magnum/DebugTools/Test/TextureImageGLTest.cpp @@ -25,23 +25,23 @@ #include -#include "Magnum/CubeMapTexture.h" #include "Magnum/Image.h" -#include "Magnum/OpenGLTester.h" -#include "Magnum/PixelFormat.h" -#include "Magnum/Texture.h" -#include "Magnum/TextureFormat.h" #include "Magnum/DebugTools/TextureImage.h" +#include "Magnum/GL/CubeMapTexture.h" +#include "Magnum/GL/OpenGLTester.h" +#include "Magnum/GL/PixelFormat.h" +#include "Magnum/GL/Texture.h" +#include "Magnum/GL/TextureFormat.h" #include "Magnum/Math/Range.h" #ifndef MAGNUM_TARGET_GLES2 #include "Magnum/DebugTools/BufferData.h" -#include "Magnum/BufferImage.h" +#include "Magnum/GL/BufferImage.h" #endif namespace Magnum { namespace DebugTools { namespace Test { -struct TextureImageGLTest: OpenGLTester { +struct TextureImageGLTest: GL::OpenGLTester { explicit TextureImageGLTest(); void subImage2D(); @@ -86,17 +86,17 @@ namespace { } void TextureImageGLTest::subImage2D() { - Texture2D texture; + GL::Texture2D texture; texture.setImage(0, #if !(defined(MAGNUM_TARGET_GLES2) && defined(MAGNUM_TARGET_WEBGL)) - TextureFormat::RGBA8, + GL::TextureFormat::RGBA8, #else - TextureFormat::RGBA, + GL::TextureFormat::RGBA, #endif - ImageView2D{PixelFormat::RGBA, PixelType::UnsignedByte, Vector2i{2}, Data2D}); + ImageView2D{GL::PixelFormat::RGBA, GL::PixelType::UnsignedByte, Vector2i{2}, Data2D}); - Image2D image = textureSubImage(texture, 0, {{}, Vector2i{2}}, {PixelFormat::RGBA, PixelType::UnsignedByte}); - MAGNUM_VERIFY_NO_ERROR(); + Image2D image = textureSubImage(texture, 0, {{}, Vector2i{2}}, {GL::PixelFormat::RGBA, GL::PixelType::UnsignedByte}); + MAGNUM_VERIFY_NO_GL_ERROR(); CORRADE_COMPARE(image.size(), Vector2i{2}); CORRADE_COMPARE_AS(Containers::arrayCast(image.data()), Containers::arrayView(Data2D), TestSuite::Compare::Container); @@ -104,12 +104,12 @@ void TextureImageGLTest::subImage2D() { #ifndef MAGNUM_TARGET_GLES2 void TextureImageGLTest::subImage2DBuffer() { - Texture2D texture; - texture.setImage(0, TextureFormat::RGBA8, ImageView2D{PixelFormat::RGBA, PixelType::UnsignedByte, Vector2i{2}, Data2D}); + GL::Texture2D texture; + texture.setImage(0, GL::TextureFormat::RGBA8, ImageView2D{GL::PixelFormat::RGBA, GL::PixelType::UnsignedByte, Vector2i{2}, Data2D}); - BufferImage2D image = textureSubImage(texture, 0, {{}, Vector2i{2}}, {PixelFormat::RGBA, PixelType::UnsignedByte}, BufferUsage::StaticRead); + GL::BufferImage2D image = textureSubImage(texture, 0, {{}, Vector2i{2}}, {GL::PixelFormat::RGBA, GL::PixelType::UnsignedByte}, GL::BufferUsage::StaticRead); Containers::Array data = bufferData(image.buffer()); - MAGNUM_VERIFY_NO_ERROR(); + MAGNUM_VERIFY_NO_GL_ERROR(); CORRADE_COMPARE(image.size(), Vector2i{2}); CORRADE_COMPARE_AS(data, Containers::arrayView(Data2D), TestSuite::Compare::Container); @@ -117,24 +117,24 @@ void TextureImageGLTest::subImage2DBuffer() { #endif void TextureImageGLTest::subImageCube() { - ImageView2D view{PixelFormat::RGBA, PixelType::UnsignedByte, Vector2i{2}, Data2D}; + ImageView2D view{GL::PixelFormat::RGBA, GL::PixelType::UnsignedByte, Vector2i{2}, Data2D}; #if !(defined(MAGNUM_TARGET_GLES2) && defined(MAGNUM_TARGET_WEBGL)) - constexpr TextureFormat format = TextureFormat::RGBA8; + constexpr GL::TextureFormat format = GL::TextureFormat::RGBA8; #else - constexpr TextureFormat format = TextureFormat::RGBA; + constexpr GL::TextureFormat format = GL::TextureFormat::RGBA; #endif - CubeMapTexture texture; - texture.setImage(CubeMapCoordinate::PositiveX, 0, format, view) - .setImage(CubeMapCoordinate::NegativeX, 0, format, view) - .setImage(CubeMapCoordinate::PositiveY, 0, format, view) - .setImage(CubeMapCoordinate::NegativeY, 0, format, view) - .setImage(CubeMapCoordinate::PositiveZ, 0, format, view) - .setImage(CubeMapCoordinate::NegativeZ, 0, format, view); + GL::CubeMapTexture texture; + texture.setImage(GL::CubeMapCoordinate::PositiveX, 0, format, view) + .setImage(GL::CubeMapCoordinate::NegativeX, 0, format, view) + .setImage(GL::CubeMapCoordinate::PositiveY, 0, format, view) + .setImage(GL::CubeMapCoordinate::NegativeY, 0, format, view) + .setImage(GL::CubeMapCoordinate::PositiveZ, 0, format, view) + .setImage(GL::CubeMapCoordinate::NegativeZ, 0, format, view); - Image2D image = textureSubImage(texture, CubeMapCoordinate::PositiveX, 0, {{}, Vector2i{2}}, {PixelFormat::RGBA, PixelType::UnsignedByte}); - MAGNUM_VERIFY_NO_ERROR(); + Image2D image = textureSubImage(texture, GL::CubeMapCoordinate::PositiveX, 0, {{}, Vector2i{2}}, {GL::PixelFormat::RGBA, GL::PixelType::UnsignedByte}); + MAGNUM_VERIFY_NO_GL_ERROR(); CORRADE_COMPARE(image.size(), Vector2i{2}); CORRADE_COMPARE_AS(Containers::arrayCast(image.data()), Containers::arrayView(Data2D), TestSuite::Compare::Container); @@ -142,19 +142,19 @@ void TextureImageGLTest::subImageCube() { #ifndef MAGNUM_TARGET_GLES2 void TextureImageGLTest::subImageCubeBuffer() { - ImageView2D view{PixelFormat::RGBA, PixelType::UnsignedByte, Vector2i{2}, Data2D}; + ImageView2D view{GL::PixelFormat::RGBA, GL::PixelType::UnsignedByte, Vector2i{2}, Data2D}; - CubeMapTexture texture; - texture.setImage(CubeMapCoordinate::PositiveX, 0, TextureFormat::RGBA8, view) - .setImage(CubeMapCoordinate::NegativeX, 0, TextureFormat::RGBA8, view) - .setImage(CubeMapCoordinate::PositiveY, 0, TextureFormat::RGBA8, view) - .setImage(CubeMapCoordinate::NegativeY, 0, TextureFormat::RGBA8, view) - .setImage(CubeMapCoordinate::PositiveZ, 0, TextureFormat::RGBA8, view) - .setImage(CubeMapCoordinate::NegativeZ, 0, TextureFormat::RGBA8, view); + GL::CubeMapTexture texture; + texture.setImage(GL::CubeMapCoordinate::PositiveX, 0, GL::TextureFormat::RGBA8, view) + .setImage(GL::CubeMapCoordinate::NegativeX, 0, GL::TextureFormat::RGBA8, view) + .setImage(GL::CubeMapCoordinate::PositiveY, 0, GL::TextureFormat::RGBA8, view) + .setImage(GL::CubeMapCoordinate::NegativeY, 0, GL::TextureFormat::RGBA8, view) + .setImage(GL::CubeMapCoordinate::PositiveZ, 0, GL::TextureFormat::RGBA8, view) + .setImage(GL::CubeMapCoordinate::NegativeZ, 0, GL::TextureFormat::RGBA8, view); - BufferImage2D image = textureSubImage(texture, CubeMapCoordinate::PositiveX, 0, {{}, Vector2i{2}}, {PixelFormat::RGBA, PixelType::UnsignedByte}, BufferUsage::StaticRead); + GL::BufferImage2D image = textureSubImage(texture, GL::CubeMapCoordinate::PositiveX, 0, {{}, Vector2i{2}}, {GL::PixelFormat::RGBA, GL::PixelType::UnsignedByte}, GL::BufferUsage::StaticRead); Containers::Array data = bufferData(image.buffer()); - MAGNUM_VERIFY_NO_ERROR(); + MAGNUM_VERIFY_NO_GL_ERROR(); CORRADE_COMPARE(image.size(), Vector2i{2}); CORRADE_COMPARE_AS(data, Containers::arrayView(Data2D), TestSuite::Compare::Container); @@ -170,11 +170,11 @@ namespace { } void TextureImageGLTest::subImage2DUInt() { - Texture2D texture; - texture.setImage(0, TextureFormat::R32UI, ImageView2D{PixelFormat::RedInteger, PixelType::UnsignedInt, Vector2i{2}, Data2DUInt}); + GL::Texture2D texture; + texture.setImage(0, GL::TextureFormat::R32UI, ImageView2D{GL::PixelFormat::RedInteger, GL::PixelType::UnsignedInt, Vector2i{2}, Data2DUInt}); - Image2D image = textureSubImage(texture, 0, {{}, Vector2i{2}}, {PixelFormat::RedInteger, PixelType::UnsignedInt}); - MAGNUM_VERIFY_NO_ERROR(); + Image2D image = textureSubImage(texture, 0, {{}, Vector2i{2}}, {GL::PixelFormat::RedInteger, GL::PixelType::UnsignedInt}); + MAGNUM_VERIFY_NO_GL_ERROR(); CORRADE_COMPARE(image.size(), Vector2i{2}); CORRADE_COMPARE_AS(Containers::arrayCast(image.data()), Containers::arrayView(Data2DUInt), @@ -189,12 +189,12 @@ namespace { } void TextureImageGLTest::subImage2DFloat() { - Texture2D texture; - texture.setStorage(1, TextureFormat::R32F, Vector2i{2}) - .setSubImage(0, {}, ImageView2D{PixelFormat::Red, PixelType::Float, Vector2i{2}, Data2DFloat}); + GL::Texture2D texture; + texture.setStorage(1, GL::TextureFormat::R32F, Vector2i{2}) + .setSubImage(0, {}, ImageView2D{GL::PixelFormat::Red, GL::PixelType::Float, Vector2i{2}, Data2DFloat}); - Image2D image = textureSubImage(texture, 0, {{}, Vector2i{2}}, {PixelFormat::Red, PixelType::Float}); - MAGNUM_VERIFY_NO_ERROR(); + Image2D image = textureSubImage(texture, 0, {{}, Vector2i{2}}, {GL::PixelFormat::Red, GL::PixelType::Float}); + MAGNUM_VERIFY_NO_GL_ERROR(); CORRADE_COMPARE(image.size(), Vector2i{2}); CORRADE_COMPARE_AS(Containers::arrayCast(image.data()), Containers::arrayView(Data2DFloat), diff --git a/src/Magnum/DebugTools/TextureImage.cpp b/src/Magnum/DebugTools/TextureImage.cpp index 176b662fe..8027b5e0e 100644 --- a/src/Magnum/DebugTools/TextureImage.cpp +++ b/src/Magnum/DebugTools/TextureImage.cpp @@ -25,24 +25,24 @@ #include "TextureImage.h" +#include "Magnum/Image.h" #ifndef MAGNUM_TARGET_GLES2 -#include "Magnum/BufferImage.h" +#include "Magnum/GL/BufferImage.h" #endif -#include "Magnum/Context.h" -#include "Magnum/Extensions.h" -#include "Magnum/Framebuffer.h" -#include "Magnum/Image.h" -#include "Magnum/Texture.h" +#include "Magnum/GL/Context.h" +#include "Magnum/GL/Extensions.h" +#include "Magnum/GL/Framebuffer.h" +#include "Magnum/GL/Texture.h" #if defined(MAGNUM_TARGET_GLES) && !defined(MAGNUM_TARGET_GLES2) #include -#include "Magnum/AbstractShaderProgram.h" -#include "Magnum/Mesh.h" -#include "Magnum/PixelFormat.h" -#include "Magnum/Shader.h" -#include "Magnum/TextureFormat.h" -#include "Magnum/Version.h" +#include "Magnum/GL/AbstractShaderProgram.h" +#include "Magnum/GL/Mesh.h" +#include "Magnum/GL/PixelFormat.h" +#include "Magnum/GL/Shader.h" +#include "Magnum/GL/TextureFormat.h" +#include "Magnum/GL/Version.h" #ifdef MAGNUM_BUILD_STATIC static void importDebugToolsResources() { @@ -95,9 +95,9 @@ FloatReinterpretShader::FloatReinterpretShader() { } #endif -void textureSubImage(Texture2D& texture, const Int level, const Range2Di& range, Image2D& image) { +void textureSubImage(GL::Texture2D& texture, const Int level, const Range2Di& range, Image2D& image) { #ifndef MAGNUM_TARGET_GLES - if(Context::current().isExtensionSupported()) { + if(Context::current().isExtensionSupported()) { texture.subImage(level, range, image); return; } @@ -163,55 +163,55 @@ void textureSubImage(Texture2D& texture, const Int level, const Range2Di& range, } #endif - Framebuffer fb{range}; - fb.attachTexture(Framebuffer::ColorAttachment{0}, texture, level) + GL::Framebuffer fb{range}; + fb.attachTexture(GL::Framebuffer::ColorAttachment{0}, texture, level) .read(range, image); } -Image2D textureSubImage(Texture2D& texture, const Int level, const Range2Di& range, Image2D&& image) { +Image2D textureSubImage(GL::Texture2D& texture, const Int level, const Range2Di& range, Image2D&& image) { textureSubImage(texture, level, range, image); return std::move(image); } #ifndef MAGNUM_TARGET_GLES2 -void textureSubImage(Texture2D& texture, const Int level, const Range2Di& range, BufferImage2D& image, const BufferUsage usage) { +void textureSubImage(GL::Texture2D& texture, const Int level, const Range2Di& range, GL::BufferImage2D& image, const GL::BufferUsage usage) { #ifndef MAGNUM_TARGET_GLES - if(Context::current().isExtensionSupported()) { + if(Context::current().isExtensionSupported()) { texture.subImage(level, range, image, usage); return; } #endif - Framebuffer fb{range}; - fb.attachTexture(Framebuffer::ColorAttachment{0}, texture, level) + GL::Framebuffer fb{range}; + fb.attachTexture(GL::Framebuffer::ColorAttachment{0}, texture, level) .read(range, image, usage); } -BufferImage2D textureSubImage(Texture2D& texture, const Int level, const Range2Di& range, BufferImage2D&& image, const BufferUsage usage) { +GL::BufferImage2D textureSubImage(GL::Texture2D& texture, const Int level, const Range2Di& range, GL::BufferImage2D&& image, const GL::BufferUsage usage) { textureSubImage(texture, level, range, image, usage); return std::move(image); } #endif -void textureSubImage(CubeMapTexture& texture, const CubeMapCoordinate coordinate, const Int level, const Range2Di& range, Image2D& image) { - Framebuffer fb{range}; - fb.attachCubeMapTexture(Framebuffer::ColorAttachment{0}, texture, coordinate, level) +void textureSubImage(GL::CubeMapTexture& texture, const GL::CubeMapCoordinate coordinate, const Int level, const Range2Di& range, Image2D& image) { + GL::Framebuffer fb{range}; + fb.attachCubeMapTexture(GL::Framebuffer::ColorAttachment{0}, texture, coordinate, level) .read(range, image); } -Image2D textureSubImage(CubeMapTexture& texture, const CubeMapCoordinate coordinate, const Int level, const Range2Di& range, Image2D&& image) { +Image2D textureSubImage(GL::CubeMapTexture& texture, const GL::CubeMapCoordinate coordinate, const Int level, const Range2Di& range, Image2D&& image) { textureSubImage(texture, coordinate, level, range, image); return std::move(image); } #ifndef MAGNUM_TARGET_GLES2 -void textureSubImage(CubeMapTexture& texture, const CubeMapCoordinate coordinate, const Int level, const Range2Di& range, BufferImage2D& image, const BufferUsage usage) { - Framebuffer fb{range}; - fb.attachCubeMapTexture(Framebuffer::ColorAttachment{0}, texture, coordinate, level) +void textureSubImage(GL::CubeMapTexture& texture, const GL::CubeMapCoordinate coordinate, const Int level, const Range2Di& range, GL::BufferImage2D& image, const GL::BufferUsage usage) { + GL::Framebuffer fb{range}; + fb.attachCubeMapTexture(GL::Framebuffer::ColorAttachment{0}, texture, coordinate, level) .read(range, image, usage); } -BufferImage2D textureSubImage(CubeMapTexture& texture, const CubeMapCoordinate coordinate, const Int level, const Range2Di& range, BufferImage2D&& image, const BufferUsage usage) { +GL::BufferImage2D textureSubImage(GL::CubeMapTexture& texture, const GL::CubeMapCoordinate coordinate, const Int level, const Range2Di& range, GL::BufferImage2D&& image, const GL::BufferUsage usage) { textureSubImage(texture, coordinate, level, range, image, usage); return std::move(image); } diff --git a/src/Magnum/DebugTools/TextureImage.h b/src/Magnum/DebugTools/TextureImage.h index d0a0989f0..a47f44dbc 100644 --- a/src/Magnum/DebugTools/TextureImage.h +++ b/src/Magnum/DebugTools/TextureImage.h @@ -31,6 +31,7 @@ #include "Magnum/Magnum.h" #include "Magnum/DebugTools/visibility.h" +#include "Magnum/GL/GL.h" namespace Magnum { namespace DebugTools { @@ -49,7 +50,7 @@ reinterpreted as @ref PixelType::UnsignedInt using additional shader and `floatBitsToUint()` GLSL function and then reinterpreted back to @ref PixelType::Float when read to client memory. */ -MAGNUM_DEBUGTOOLS_EXPORT void textureSubImage(Texture2D& texture, Int level, const Range2Di& range, Image2D& image); +MAGNUM_DEBUGTOOLS_EXPORT void textureSubImage(GL::Texture2D& texture, Int level, const Range2Di& range, Image2D& image); /** @brief Read range of given texture mip level to image @@ -60,7 +61,7 @@ Convenience alternative to the above, example usage: Image2D image = DebugTools::textureSubImage(texture, 0, rect, {PixelFormat::RGBA, PixelType::UnsignedByte}); @endcode */ -MAGNUM_DEBUGTOOLS_EXPORT Image2D textureSubImage(Texture2D& texture, Int level, const Range2Di& range, Image2D&& image); +MAGNUM_DEBUGTOOLS_EXPORT Image2D textureSubImage(GL::Texture2D& texture, Int level, const Range2Di& range, Image2D&& image); /** @brief Read range of given cube map texture coordinate mip level to image @@ -72,7 +73,7 @@ it (such as OpenGL ES) by creating a framebuffer object and using Note that only @ref Magnum::PixelFormat "PixelFormat" and @ref PixelType values that are marked as framebuffer readable are supported. */ -MAGNUM_DEBUGTOOLS_EXPORT void textureSubImage(CubeMapTexture& texture, CubeMapCoordinate coordinate, Int level, const Range2Di& range, Image2D& image); +MAGNUM_DEBUGTOOLS_EXPORT void textureSubImage(GL::CubeMapTexture& texture, GL::CubeMapCoordinate coordinate, Int level, const Range2Di& range, Image2D& image); /** @brief Read range of given cube map texture coordinate mip level to image @@ -83,7 +84,7 @@ Convenience alternative to the above, example usage: Image2D image = DebugTools::textureSubImage(texture, CubeMapCoordinate::PositiveX, 0, rect, {PixelFormat::RGBA, PixelType::UnsignedByte}); @endcode */ -MAGNUM_DEBUGTOOLS_EXPORT Image2D textureSubImage(CubeMapTexture& texture, CubeMapCoordinate coordinate, Int level, const Range2Di& range, Image2D&& image); +MAGNUM_DEBUGTOOLS_EXPORT Image2D textureSubImage(GL::CubeMapTexture& texture, GL::CubeMapCoordinate coordinate, Int level, const Range2Di& range, Image2D&& image); #ifndef MAGNUM_TARGET_GLES2 /** @@ -99,7 +100,7 @@ that are marked as framebuffer readable are supported. @requires_gles30 Pixel buffer objects are not available in OpenGL ES 2.0. @requires_webgl20 Pixel buffer objects are not available in WebGL 1.0. */ -MAGNUM_DEBUGTOOLS_EXPORT void textureSubImage(Texture2D& texture, Int level, const Range2Di& range, BufferImage2D& image, BufferUsage usage); +MAGNUM_DEBUGTOOLS_EXPORT void textureSubImage(GL::Texture2D& texture, Int level, const Range2Di& range, GL::BufferImage2D& image, GL::BufferUsage usage); /** @brief Read range of given texture mip level to buffer image @@ -110,7 +111,7 @@ Convenience alternative to the above, example usage: BufferImage2D image = DebugTools::textureSubImage(texture, 0, rect, {PixelFormat::RGBA, PixelType::UnsignedByte}, BufferUsage::StaticRead); @endcode */ -MAGNUM_DEBUGTOOLS_EXPORT BufferImage2D textureSubImage(Texture2D& texture, Int level, const Range2Di& range, BufferImage2D&& image, BufferUsage usage); +MAGNUM_DEBUGTOOLS_EXPORT GL::BufferImage2D textureSubImage(GL::Texture2D& texture, Int level, const Range2Di& range, GL::BufferImage2D&& image, GL::BufferUsage usage); /** @brief Read range of given cube map texture coordinate mip level to buffer image @@ -124,7 +125,7 @@ that are marked as framebuffer readable are supported. @requires_gles30 Pixel buffer objects are not available in OpenGL ES 2.0. @requires_webgl20 Pixel buffer objects are not available in WebGL 1.0. */ -MAGNUM_DEBUGTOOLS_EXPORT void textureSubImage(CubeMapTexture& texture, CubeMapCoordinate coordinate, Int level, const Range2Di& range, BufferImage2D& image, BufferUsage usage); +MAGNUM_DEBUGTOOLS_EXPORT void textureSubImage(GL::CubeMapTexture& texture, GL::CubeMapCoordinate coordinate, Int level, const Range2Di& range, GL::BufferImage2D& image, GL::BufferUsage usage); /** @brief Read range of given cube map texture coordinate mip level to buffer image @@ -135,7 +136,7 @@ Convenience alternative to the above, example usage: BufferImage2D image = DebugTools::textureSubImage(texture, CubeMapCoordinate::PositiveX, 0, rect, {PixelFormat::RGBA, PixelType::UnsignedByte}, BufferUsage::StaticRead); @endcode */ -MAGNUM_DEBUGTOOLS_EXPORT BufferImage2D textureSubImage(CubeMapTexture& texture, CubeMapCoordinate coordinate, Int level, const Range2Di& range, BufferImage2D&& image, BufferUsage usage); +MAGNUM_DEBUGTOOLS_EXPORT GL::BufferImage2D textureSubImage(GL::CubeMapTexture& texture, GL::CubeMapCoordinate coordinate, Int level, const Range2Di& range, GL::BufferImage2D&& image, GL::BufferUsage usage); #endif }}