diff --git a/src/AbstractFramebuffer.cpp b/src/AbstractFramebuffer.cpp index 56e95f9ba..f9bb9c33d 100644 --- a/src/AbstractFramebuffer.cpp +++ b/src/AbstractFramebuffer.cpp @@ -199,7 +199,7 @@ void AbstractFramebuffer::read(const Vector2i& offset, const Vector2i& size, Ima } #ifndef MAGNUM_TARGET_GLES2 -void AbstractFramebuffer::read(const Vector2i& offset, const Vector2i& size, BufferImage2D& image, Buffer::Usage usage) { +void AbstractFramebuffer::read(const Vector2i& offset, const Vector2i& size, BufferImage2D& image, BufferUsage usage) { #ifndef MAGNUM_TARGET_GLES2 bindInternal(FramebufferTarget::Read); #else diff --git a/src/AbstractFramebuffer.h b/src/AbstractFramebuffer.h index 4d8fd75d1..00781be99 100644 --- a/src/AbstractFramebuffer.h +++ b/src/AbstractFramebuffer.h @@ -31,7 +31,8 @@ #include #include "Math/Geometry/Rectangle.h" -#include "Buffer.h" +#include "Magnum.h" +#include "OpenGL.h" namespace Magnum { @@ -296,7 +297,7 @@ class MAGNUM_EXPORT AbstractFramebuffer { * information. * @requires_gles30 Pixel buffer objects are not available in OpenGL ES 2.0. */ - void read(const Vector2i& offset, const Vector2i& size, BufferImage2D& image, Buffer::Usage usage); + void read(const Vector2i& offset, const Vector2i& size, BufferImage2D& image, BufferUsage usage); #endif #ifdef DOXYGEN_GENERATING_OUTPUT diff --git a/src/AbstractTexture.cpp b/src/AbstractTexture.cpp index c43b6ce3d..a7dd1c781 100644 --- a/src/AbstractTexture.cpp +++ b/src/AbstractTexture.cpp @@ -24,7 +24,6 @@ #include "AbstractTexture.h" -#include "Buffer.h" #include "BufferImage.h" #include "ColorFormat.h" #include "Context.h" @@ -1000,7 +999,7 @@ template void MAGNUM_EXPORT AbstractTexture::image<1>(GLenum, GLint, Image<1>&); template void MAGNUM_EXPORT AbstractTexture::image<2>(GLenum, GLint, Image<2>&); template void MAGNUM_EXPORT AbstractTexture::image<3>(GLenum, GLint, Image<3>&); -template void AbstractTexture::image(GLenum target, GLint level, BufferImage& image, Buffer::Usage usage) { +template void AbstractTexture::image(GLenum target, GLint level, BufferImage& image, BufferUsage usage) { const Math::Vector size = DataHelper::imageSize(this, target, level); const std::size_t dataSize = size.product()*image.pixelSize(); if(image.size() != size) @@ -1010,9 +1009,9 @@ template void AbstractTexture::image(GLenum target, GLin (this->*getImageImplementation)(target, level, image.format(), image.type(), dataSize, nullptr); } -template void MAGNUM_EXPORT AbstractTexture::image<1>(GLenum, GLint, BufferImage<1>&, Buffer::Usage); -template void MAGNUM_EXPORT AbstractTexture::image<2>(GLenum, GLint, BufferImage<2>&, Buffer::Usage); -template void MAGNUM_EXPORT AbstractTexture::image<3>(GLenum, GLint, BufferImage<3>&, Buffer::Usage); +template void MAGNUM_EXPORT AbstractTexture::image<1>(GLenum, GLint, BufferImage<1>&, BufferUsage); +template void MAGNUM_EXPORT AbstractTexture::image<2>(GLenum, GLint, BufferImage<2>&, BufferUsage); +template void MAGNUM_EXPORT AbstractTexture::image<3>(GLenum, GLint, BufferImage<3>&, BufferUsage); #endif #endif diff --git a/src/AbstractTexture.h b/src/AbstractTexture.h index 815b6c811..c26bd4eee 100644 --- a/src/AbstractTexture.h +++ b/src/AbstractTexture.h @@ -29,9 +29,6 @@ */ #include "Array.h" -#ifndef MAGNUM_TARGET_GLES2 -#include "Buffer.h" -#endif #include "Color.h" #include "Sampler.h" @@ -320,7 +317,7 @@ class MAGNUM_EXPORT AbstractTexture { #ifndef MAGNUM_TARGET_GLES template void image(GLenum target, GLint level, Image& image); - template void image(GLenum target, GLint level, BufferImage& image, Buffer::Usage usage); + template void image(GLenum target, GLint level, BufferImage& image, BufferUsage usage); #endif GLenum _target; diff --git a/src/Buffer.cpp b/src/Buffer.cpp index e343bea04..c445d38dd 100644 --- a/src/Buffer.cpp +++ b/src/Buffer.cpp @@ -258,12 +258,12 @@ void Buffer::getSubDataImplementationDSA(const GLintptr offset, const GLsizeiptr } #endif -void Buffer::dataImplementationDefault(GLsizeiptr size, const GLvoid* data, Buffer::Usage usage) { +void Buffer::dataImplementationDefault(GLsizeiptr size, const GLvoid* data, BufferUsage usage) { glBufferData(GLenum(bindInternal(_targetHint)), size, data, GLenum(usage)); } #ifndef MAGNUM_TARGET_GLES -void Buffer::dataImplementationDSA(GLsizeiptr size, const GLvoid* data, Buffer::Usage usage) { +void Buffer::dataImplementationDSA(GLsizeiptr size, const GLvoid* data, BufferUsage usage) { glNamedBufferDataEXT(_id, size, data, GLenum(usage)); } #endif diff --git a/src/Buffer.h b/src/Buffer.h index d6ed27002..14a3447b8 100644 --- a/src/Buffer.h +++ b/src/Buffer.h @@ -25,7 +25,7 @@ */ /** @file /Buffer.h - * @brief Class Magnum::Buffer + * @brief Class @ref Magnum::Buffer, enum @ref Magnum::BufferUsage */ #include @@ -41,6 +41,85 @@ namespace Magnum { +/** + * @brief %Buffer usage + * + * @see @ref Buffer::setData(Containers::ArrayReference, BufferUsage) + */ +enum class BufferUsage: GLenum { + /** + * Set once by the application and used infrequently for drawing. + */ + StreamDraw = GL_STREAM_DRAW, + + #ifndef MAGNUM_TARGET_GLES2 + /** + * Set once as output from an OpenGL command and used infequently + * for drawing. + * @requires_gles30 Only @ref Magnum::Buffer::Usage "Usage::StreamDraw" + * is available in OpenGL ES 2.0. + */ + StreamRead = GL_STREAM_READ, + + /** + * Set once as output from an OpenGL command and used infrequently + * for drawing or copying to other buffers. + * @requires_gles30 Only @ref Magnum::Buffer::Usage "Usage::StreamDraw" + * is available in OpenGL ES 2.0. + */ + StreamCopy = GL_STREAM_COPY, + #endif + + /** + * Set once by the application and used frequently for drawing. + */ + StaticDraw = GL_STATIC_DRAW, + + #ifndef MAGNUM_TARGET_GLES2 + /** + * Set once as output from an OpenGL command and queried many + * times by the application. + * @requires_gles30 Only @ref Magnum::Buffer::Usage "Usage::StaticDraw" + * is available in OpenGL ES 2.0. + */ + StaticRead = GL_STATIC_READ, + + /** + * Set once as output from an OpenGL command and used frequently + * for drawing or copying to other buffers. + * @requires_gles30 Only @ref Magnum::Buffer::Usage "Usage::StaticDraw" + * is available in OpenGL ES 2.0. + */ + StaticCopy = GL_STATIC_COPY, + #endif + + /** + * Updated frequently by the application and used frequently + * for drawing or copying to other images. + */ + DynamicDraw = GL_DYNAMIC_DRAW + + #ifndef MAGNUM_TARGET_GLES2 + , + + /** + * Updated frequently as output from OpenGL command and queried + * many times from the application. + * @requires_gles30 Only @ref Magnum::Buffer::Usage "Usage::DynamicDraw" + * is available in OpenGL ES 2.0. + */ + DynamicRead = GL_DYNAMIC_READ, + + /** + * Updated frequently as output from OpenGL command and used + * frequently for drawing or copying to other images. + * @requires_gles30 Only @ref Magnum::Buffer::Usage "Usage::DynamicDraw" + * is available in OpenGL ES 2.0. + */ + DynamicCopy = GL_DYNAMIC_COPY + #endif +}; + /** @brief %Buffer @@ -227,84 +306,13 @@ class MAGNUM_EXPORT Buffer { #endif }; + #ifdef MAGNUM_BUILD_DEPRECATED /** - * @brief %Buffer usage - * - * @see setData(GLsizeiptr, const GLvoid*, Usage) + * @copybrief BufferUsage + * @deprecated Use @ref Magnum::BufferUsage "BufferUsage" instead. */ - enum class Usage: GLenum { - /** - * Set once by the application and used infrequently for drawing. - */ - StreamDraw = GL_STREAM_DRAW, - - #ifndef MAGNUM_TARGET_GLES2 - /** - * Set once as output from an OpenGL command and used infequently - * for drawing. - * @requires_gles30 Only @ref Magnum::Buffer::Usage "Usage::StreamDraw" - * is available in OpenGL ES 2.0. - */ - StreamRead = GL_STREAM_READ, - - /** - * Set once as output from an OpenGL command and used infrequently - * for drawing or copying to other buffers. - * @requires_gles30 Only @ref Magnum::Buffer::Usage "Usage::StreamDraw" - * is available in OpenGL ES 2.0. - */ - StreamCopy = GL_STREAM_COPY, - #endif - - /** - * Set once by the application and used frequently for drawing. - */ - StaticDraw = GL_STATIC_DRAW, - - #ifndef MAGNUM_TARGET_GLES2 - /** - * Set once as output from an OpenGL command and queried many - * times by the application. - * @requires_gles30 Only @ref Magnum::Buffer::Usage "Usage::StaticDraw" - * is available in OpenGL ES 2.0. - */ - StaticRead = GL_STATIC_READ, - - /** - * Set once as output from an OpenGL command and used frequently - * for drawing or copying to other buffers. - * @requires_gles30 Only @ref Magnum::Buffer::Usage "Usage::StaticDraw" - * is available in OpenGL ES 2.0. - */ - StaticCopy = GL_STATIC_COPY, - #endif - - /** - * Updated frequently by the application and used frequently - * for drawing or copying to other images. - */ - DynamicDraw = GL_DYNAMIC_DRAW - - #ifndef MAGNUM_TARGET_GLES2 - , - - /** - * Updated frequently as output from OpenGL command and queried - * many times from the application. - * @requires_gles30 Only @ref Magnum::Buffer::Usage "Usage::DynamicDraw" - * is available in OpenGL ES 2.0. - */ - DynamicRead = GL_DYNAMIC_READ, - - /** - * Updated frequently as output from OpenGL command and used - * frequently for drawing or copying to other images. - * @requires_gles30 Only @ref Magnum::Buffer::Usage "Usage::DynamicDraw" - * is available in OpenGL ES 2.0. - */ - DynamicCopy = GL_DYNAMIC_COPY - #endif - }; + typedef BufferUsage Usage; + #endif #ifndef MAGNUM_TARGET_GLES3 /** @@ -643,7 +651,7 @@ class MAGNUM_EXPORT Buffer { * @see setTargetHint(), @fn_gl{BindBuffer} and @fn_gl{BufferData} or * @fn_gl_extension{NamedBufferData,EXT,direct_state_access} */ - Buffer& setData(Containers::ArrayReference data, Usage usage) { + Buffer& setData(Containers::ArrayReference data, BufferUsage usage) { (this->*dataImplementation)(data.size(), data, usage); return *this; } @@ -667,13 +675,13 @@ class MAGNUM_EXPORT Buffer { * * @see setData(GLsizeiptr, const GLvoid*, Usage) */ - template Buffer& setData(const std::vector& data, Usage usage) { + template Buffer& setData(const std::vector& data, BufferUsage usage) { setData({data.data(), data.size()}, usage); return *this; } /** @overload */ - template Buffer& setData(const std::array& data, Usage usage) { + template Buffer& setData(const std::array& data, BufferUsage usage) { setData({data.data(), data.size()}, usage); return *this; } @@ -905,10 +913,10 @@ class MAGNUM_EXPORT Buffer { static GetSubDataImplementation getSubDataImplementation; #endif - typedef void(Buffer::*DataImplementation)(GLsizeiptr, const GLvoid*, Usage); - void MAGNUM_LOCAL dataImplementationDefault(GLsizeiptr size, const GLvoid* data, Usage usage); + typedef void(Buffer::*DataImplementation)(GLsizeiptr, const GLvoid*, BufferUsage); + void MAGNUM_LOCAL dataImplementationDefault(GLsizeiptr size, const GLvoid* data, BufferUsage usage); #ifndef MAGNUM_TARGET_GLES - void MAGNUM_LOCAL dataImplementationDSA(GLsizeiptr size, const GLvoid* data, Usage usage); + void MAGNUM_LOCAL dataImplementationDSA(GLsizeiptr size, const GLvoid* data, BufferUsage usage); #endif static DataImplementation dataImplementation; diff --git a/src/BufferImage.cpp b/src/BufferImage.cpp index 9099845d8..81d877d52 100644 --- a/src/BufferImage.cpp +++ b/src/BufferImage.cpp @@ -27,7 +27,7 @@ namespace Magnum { #ifndef MAGNUM_TARGET_GLES2 -template void BufferImage::setData(const typename DimensionTraits::VectorType& size, ColorFormat format, ColorType type, const void* data, Buffer::Usage usage) { +template void BufferImage::setData(const typename DimensionTraits::VectorType& size, ColorFormat format, ColorType type, const void* data, BufferUsage usage) { _format = format; _type = type; _size = size; diff --git a/src/BufferImage.h b/src/BufferImage.h index 67577ba7c..fbc472d64 100644 --- a/src/BufferImage.h +++ b/src/BufferImage.h @@ -81,7 +81,7 @@ template class MAGNUM_EXPORT BufferImage: public Abstrac * * @see Buffer::setData() */ - void setData(const typename DimensionTraits::VectorType& size, ColorFormat format, ColorType type, const void* data, Buffer::Usage usage); + void setData(const typename DimensionTraits::VectorType& size, ColorFormat format, ColorType type, const void* data, BufferUsage usage); private: Math::Vector _size; diff --git a/src/CubeMapTexture.h b/src/CubeMapTexture.h index b69237a1a..aff742119 100644 --- a/src/CubeMapTexture.h +++ b/src/CubeMapTexture.h @@ -155,7 +155,7 @@ class CubeMapTexture: public AbstractTexture { * information. * @requires_gl %Texture image queries are not available in OpenGL ES. */ - void image(Coordinate coordinate, Int level, BufferImage2D& image, Buffer::Usage usage) { + void image(Coordinate coordinate, Int level, BufferImage2D& image, BufferUsage usage) { AbstractTexture::image<2>(GLenum(coordinate), level, image, usage); } #endif diff --git a/src/DebugTools/ForceRenderer.cpp b/src/DebugTools/ForceRenderer.cpp index c1bbb53bd..e72c03551 100644 --- a/src/DebugTools/ForceRenderer.cpp +++ b/src/DebugTools/ForceRenderer.cpp @@ -79,10 +79,10 @@ template ForceRenderer::ForceRenderer(SceneG Buffer* vertexBuffer = new Buffer(Buffer::Target::Array); Buffer* indexBuffer = new Buffer(Buffer::Target::ElementArray); - vertexBuffer->setData(positions, Buffer::Usage::StaticDraw); + vertexBuffer->setData(positions, BufferUsage::StaticDraw); ResourceManager::instance().set(this->vertexBuffer.key(), vertexBuffer, ResourceDataState::Final, ResourcePolicy::Manual); - indexBuffer->setData(indices, Buffer::Usage::StaticDraw); + indexBuffer->setData(indices, BufferUsage::StaticDraw); ResourceManager::instance().set(this->indexBuffer.key(), indexBuffer, ResourceDataState::Final, ResourcePolicy::Manual); Mesh* mesh = new Mesh; diff --git a/src/DebugTools/Implementation/AbstractShapeRenderer.cpp b/src/DebugTools/Implementation/AbstractShapeRenderer.cpp index 856d9497b..d570806b0 100644 --- a/src/DebugTools/Implementation/AbstractShapeRenderer.cpp +++ b/src/DebugTools/Implementation/AbstractShapeRenderer.cpp @@ -46,7 +46,7 @@ template void create(typename MeshData::Type template<> void create<2>(Trade::MeshData2D& data, Resource& meshResource, Resource& vertexBufferResource, Resource& indexBufferResource) { /* Vertex buffer */ Buffer* buffer = new Buffer(Buffer::Target::Array); - buffer->setData(data.positions(0), Buffer::Usage::StaticDraw); + buffer->setData(data.positions(0), BufferUsage::StaticDraw); ResourceManager::instance().set(vertexBufferResource.key(), buffer, ResourceDataState::Final, ResourcePolicy::Manual); /* Mesh configuration */ @@ -60,7 +60,7 @@ template<> void create<2>(Trade::MeshData2D& data, Resource& meshResource, if(data.isIndexed()) { CORRADE_INTERNAL_ASSERT(indexBufferResource.key() != ResourceKey()); Buffer* indexBuffer = new Buffer(Buffer::Target::ElementArray); - MeshTools::compressIndices(*mesh, *indexBuffer, Buffer::Usage::StaticDraw, data.indices()); + MeshTools::compressIndices(*mesh, *indexBuffer, BufferUsage::StaticDraw, data.indices()); ResourceManager::instance().set(indexBufferResource.key(), indexBuffer, ResourceDataState::Final, ResourcePolicy::Manual); } } @@ -68,7 +68,7 @@ template<> void create<2>(Trade::MeshData2D& data, Resource& meshResource, template<> void create<3>(Trade::MeshData3D& data, Resource& meshResource, Resource& vertexBufferResource, Resource& indexBufferResource) { /* Vertex buffer */ Buffer* vertexBuffer = new Buffer(Buffer::Target::Array); - vertexBuffer->setData(data.positions(0), Buffer::Usage::StaticDraw); + vertexBuffer->setData(data.positions(0), BufferUsage::StaticDraw); ResourceManager::instance().set(vertexBufferResource.key(), vertexBuffer, ResourceDataState::Final, ResourcePolicy::Manual); /* Mesh configuration */ @@ -82,7 +82,7 @@ template<> void create<3>(Trade::MeshData3D& data, Resource& meshResource, if(data.isIndexed()) { CORRADE_INTERNAL_ASSERT(indexBufferResource.key() != ResourceKey()); Buffer* indexBuffer = new Buffer(Buffer::Target::ElementArray); - MeshTools::compressIndices(*mesh, *indexBuffer, Buffer::Usage::StaticDraw, data.indices()); + MeshTools::compressIndices(*mesh, *indexBuffer, BufferUsage::StaticDraw, data.indices()); ResourceManager::instance().set(indexBufferResource.key(), indexBuffer, ResourceDataState::Final, ResourcePolicy::Manual); } } diff --git a/src/DebugTools/ObjectRenderer.cpp b/src/DebugTools/ObjectRenderer.cpp index 721ad3145..84cb49177 100644 --- a/src/DebugTools/ObjectRenderer.cpp +++ b/src/DebugTools/ObjectRenderer.cpp @@ -158,10 +158,10 @@ template ObjectRenderer::ObjectRenderer(Scen Buffer* indexBuffer = new Buffer(Buffer::Target::ElementArray); Mesh* mesh = new Mesh; - MeshTools::interleave(*mesh, *vertexBuffer, Buffer::Usage::StaticDraw, Renderer::positions, Renderer::colors); + MeshTools::interleave(*mesh, *vertexBuffer, BufferUsage::StaticDraw, Renderer::positions, Renderer::colors); ResourceManager::instance().set(this->vertexBuffer.key(), vertexBuffer, ResourceDataState::Final, ResourcePolicy::Manual); - indexBuffer->setData(Renderer::indices, Buffer::Usage::StaticDraw); + indexBuffer->setData(Renderer::indices, BufferUsage::StaticDraw); ResourceManager::instance().set(this->indexBuffer.key(), indexBuffer, ResourceDataState::Final, ResourcePolicy::Manual); mesh->setPrimitive(Mesh::Primitive::Lines) diff --git a/src/DefaultFramebuffer.cpp b/src/DefaultFramebuffer.cpp index b0f9e7995..8468f784b 100644 --- a/src/DefaultFramebuffer.cpp +++ b/src/DefaultFramebuffer.cpp @@ -24,11 +24,12 @@ #include "DefaultFramebuffer.h" -#include "Context.h" +#include +#include "Context.h" +#include "Extensions.h" #include "Implementation/State.h" #include "Implementation/FramebufferState.h" -#include "Extensions.h" namespace Magnum { diff --git a/src/Magnum.h b/src/Magnum.h index 0fcece5ab..0b38b8e8f 100644 --- a/src/Magnum.h +++ b/src/Magnum.h @@ -475,6 +475,7 @@ template class Array1D; template class Array2D; template class Array3D; +enum class BufferUsage: GLenum; class Buffer; #ifndef MAGNUM_TARGET_GLES2 diff --git a/src/MeshTools/CompressIndices.cpp b/src/MeshTools/CompressIndices.cpp index c2b54c1a7..ed2886d36 100644 --- a/src/MeshTools/CompressIndices.cpp +++ b/src/MeshTools/CompressIndices.cpp @@ -26,8 +26,10 @@ #include #include +#include #include "Math/Functions.h" +#include "Buffer.h" namespace Magnum { namespace MeshTools { @@ -69,7 +71,7 @@ std::tuple> compressIndice return compressIndicesInternal(indices, *std::max_element(indices.begin(), indices.end())); } -void compressIndices(Mesh& mesh, Buffer& buffer, Buffer::Usage usage, const std::vector& indices) { +void compressIndices(Mesh& mesh, Buffer& buffer, BufferUsage usage, const std::vector& indices) { auto minmax = std::minmax_element(indices.begin(), indices.end()); /** @todo Performance hint when range can be represented by smaller value? */ diff --git a/src/MeshTools/CompressIndices.h b/src/MeshTools/CompressIndices.h index b233b5eb8..781b9d295 100644 --- a/src/MeshTools/CompressIndices.h +++ b/src/MeshTools/CompressIndices.h @@ -30,7 +30,6 @@ #include -#include "Buffer.h" #include "Mesh.h" #include "magnumMeshToolsVisibility.h" @@ -72,7 +71,7 @@ Mesh::setIndexCount() and Mesh::setIndexBuffer() on your own. @see MeshTools::interleave() */ -void MAGNUM_MESHTOOLS_EXPORT compressIndices(Mesh& mesh, Buffer& buffer, Buffer::Usage usage, const std::vector& indices); +void MAGNUM_MESHTOOLS_EXPORT compressIndices(Mesh& mesh, Buffer& buffer, BufferUsage usage, const std::vector& indices); }} diff --git a/src/MeshTools/FullScreenTriangle.cpp b/src/MeshTools/FullScreenTriangle.cpp index c2a810eba..da3518248 100644 --- a/src/MeshTools/FullScreenTriangle.cpp +++ b/src/MeshTools/FullScreenTriangle.cpp @@ -50,7 +50,7 @@ std::pair fullScreenTriangle() { Vector2(-1.0, -3.0), Vector2( 3.0, 1.0) }; - buffer->setData(triangle, Buffer::Usage::StaticDraw); + buffer->setData(triangle, BufferUsage::StaticDraw); /** @todo Is it possible to attach moveable buffer here to avoid heap allocation? OTOH this is more effective in most (modern) cases */ mesh.addVertexBuffer(*buffer, 0, AbstractShaderProgram::Attribute<0, Vector2>()); diff --git a/src/MeshTools/Interleave.h b/src/MeshTools/Interleave.h index 6d3034ad6..4e4dc804b 100644 --- a/src/MeshTools/Interleave.h +++ b/src/MeshTools/Interleave.h @@ -61,7 +61,7 @@ class Interleave { return std::make_tuple(_attributeCount, _stride, std::move(data)); } - template void operator()(Mesh& mesh, Buffer& buffer, Buffer::Usage usage, const T&... attributes) { + template void operator()(Mesh& mesh, Buffer& buffer, BufferUsage usage, const T&... attributes) { Containers::Array data; std::tie(std::ignore, std::ignore, data) = operator()(attributes...); @@ -70,7 +70,7 @@ class Interleave { } /* Specialization for only one attribute array */ - template typename std::enable_if::value, void>::type operator()(Mesh& mesh, Buffer& buffer, Buffer::Usage usage, const T& attribute) { + template typename std::enable_if::value, void>::type operator()(Mesh& mesh, Buffer& buffer, BufferUsage usage, const T& attribute) { mesh.setVertexCount(attribute.size()); buffer.setData(attribute, usage); } @@ -202,7 +202,7 @@ mesh->setVertexCount(attribute.size()); @see MeshTools::compressIndices() */ -template inline void interleave(Mesh& mesh, Buffer& buffer, Buffer::Usage usage, const T&... attributes) { +template inline void interleave(Mesh& mesh, Buffer& buffer, BufferUsage usage, const T&... attributes) { return Implementation::Interleave()(mesh, buffer, usage, attributes...); } diff --git a/src/MeshTools/Test/CompressIndicesTest.cpp b/src/MeshTools/Test/CompressIndicesTest.cpp index bee8535d5..47e4b03cd 100644 --- a/src/MeshTools/Test/CompressIndicesTest.cpp +++ b/src/MeshTools/Test/CompressIndicesTest.cpp @@ -22,6 +22,7 @@ DEALINGS IN THE SOFTWARE. */ +#include #include #include diff --git a/src/Test/BufferGLTest.cpp b/src/Test/BufferGLTest.cpp index 9ece79fad..9cb5cdf7a 100644 --- a/src/Test/BufferGLTest.cpp +++ b/src/Test/BufferGLTest.cpp @@ -86,19 +86,19 @@ void BufferGLTest::data() { /* Plain array */ constexpr Int data[] = {2, 7, 5, 13, 25}; - buffer.setData({data, 5}, Buffer::Usage::StaticDraw); + buffer.setData({data, 5}, BufferUsage::StaticDraw); MAGNUM_VERIFY_NO_ERROR(); CORRADE_COMPARE(buffer.size(), 5*4); /* STL vector */ std::vector data2{2, 7, 5, 13, 25}; - buffer.setData(data2, Buffer::Usage::StaticDraw); + buffer.setData(data2, BufferUsage::StaticDraw); MAGNUM_VERIFY_NO_ERROR(); CORRADE_COMPARE(buffer.size(), 5*4); /* STL array */ std::array data3{{2, 7, 5, 13, 25}}; - buffer.setData(data3, Buffer::Usage::StaticDraw); + buffer.setData(data3, BufferUsage::StaticDraw); MAGNUM_VERIFY_NO_ERROR(); CORRADE_COMPARE(buffer.size(), 5*4); @@ -152,7 +152,7 @@ void BufferGLTest::map() { Buffer buffer; constexpr char data[] = {2, 7, 5, 13, 25}; - buffer.setData(data, Buffer::Usage::StaticDraw); + buffer.setData(data, BufferUsage::StaticDraw); #ifndef MAGNUM_TARGET_GLES2 char* contents = reinterpret_cast(buffer.map(Buffer::MapAccess::ReadWrite)); @@ -213,7 +213,7 @@ void BufferGLTest::mapRange() { constexpr char data[] = {2, 7, 5, 13, 25}; Buffer buffer; - buffer.setData(data, Buffer::Usage::StaticDraw); + buffer.setData(data, BufferUsage::StaticDraw); char* contents = reinterpret_cast(buffer.map(1, 4, Buffer::MapFlag::Read|Buffer::MapFlag::Write)); MAGNUM_VERIFY_NO_ERROR(); @@ -244,7 +244,7 @@ void BufferGLTest::mapRangeExplicitFlush() { constexpr char data[] = {2, 7, 5, 13, 25}; Buffer buffer; - buffer.setData(data, Buffer::Usage::StaticDraw); + buffer.setData(data, BufferUsage::StaticDraw); /* Map, set byte, don't flush and unmap */ char* contents = reinterpret_cast(buffer.map(1, 4, Buffer::MapFlag::Write|Buffer::MapFlag::FlushExplicit)); @@ -277,10 +277,10 @@ void BufferGLTest::mapRangeExplicitFlush() { void BufferGLTest::copy() { Buffer buffer1; constexpr char data[] = {2, 7, 5, 13, 25}; - buffer1.setData(data, Buffer::Usage::StaticDraw); + buffer1.setData(data, BufferUsage::StaticDraw); Buffer buffer2; - buffer2.setData({nullptr, 5}, Buffer::Usage::StaticDraw); + buffer2.setData({nullptr, 5}, BufferUsage::StaticDraw); Buffer::copy(buffer1, buffer2, 1, 2, 3); MAGNUM_VERIFY_NO_ERROR(); @@ -303,7 +303,7 @@ void BufferGLTest::invalidate() { Buffer buffer; constexpr char data[] = {2, 7, 5, 13, 25}; - buffer.setData(data, Buffer::Usage::StaticDraw); + buffer.setData(data, BufferUsage::StaticDraw); /* Just test that no errors are emitted */ diff --git a/src/Text/Renderer.cpp b/src/Text/Renderer.cpp index fb25201d2..40c0bb36b 100644 --- a/src/Text/Renderer.cpp +++ b/src/Text/Renderer.cpp @@ -191,7 +191,7 @@ std::pair, Mesh::IndexType> renderIndicesIntern return {std::move(indices), indexType}; } -std::tuple renderInternal(AbstractFont& font, const GlyphCache& cache, Float size, const std::string& text, Buffer& vertexBuffer, Buffer& indexBuffer, Buffer::Usage usage, Alignment alignment) { +std::tuple renderInternal(AbstractFont& font, const GlyphCache& cache, Float size, const std::string& text, Buffer& vertexBuffer, Buffer& indexBuffer, BufferUsage usage, Alignment alignment) { /* Render vertices and upload them */ std::vector vertices; Rectangle rectangle; @@ -243,7 +243,7 @@ std::tuple, std::vector, std::vector, return std::make_tuple(std::move(positions), std::move(textureCoordinates), std::move(indices), rectangle); } -template std::tuple Renderer::render(AbstractFont& font, const GlyphCache& cache, Float size, const std::string& text, Buffer& vertexBuffer, Buffer& indexBuffer, Buffer::Usage usage, Alignment alignment) { +template std::tuple Renderer::render(AbstractFont& font, const GlyphCache& cache, Float size, const std::string& text, Buffer& vertexBuffer, Buffer& indexBuffer, BufferUsage usage, Alignment alignment) { /* Finalize mesh configuration and return the result */ auto r = renderInternal(font, cache, size, text, vertexBuffer, indexBuffer, usage, alignment); Mesh& mesh = std::get<0>(r); @@ -329,7 +329,7 @@ template Renderer::Renderer(AbstractFont& fo typename Shaders::AbstractVector::TextureCoordinates()); } -void AbstractRenderer::reserve(const uint32_t glyphCount, const Buffer::Usage vertexBufferUsage, const Buffer::Usage indexBufferUsage) { +void AbstractRenderer::reserve(const uint32_t glyphCount, const BufferUsage vertexBufferUsage, const BufferUsage indexBufferUsage) { _capacity = glyphCount; const UnsignedInt vertexCount = glyphCount*4; diff --git a/src/Text/Renderer.h b/src/Text/Renderer.h index a74740d85..8f794e489 100644 --- a/src/Text/Renderer.h +++ b/src/Text/Renderer.h @@ -95,7 +95,7 @@ class MAGNUM_TEXT_EXPORT AbstractRenderer { * Initially zero capacity is reserved. * @see @ref capacity() */ - void reserve(UnsignedInt glyphCount, Buffer::Usage vertexBufferUsage, Buffer::Usage indexBufferUsage); + void reserve(UnsignedInt glyphCount, BufferUsage vertexBufferUsage, BufferUsage indexBufferUsage); /** * @brief Render text @@ -250,7 +250,7 @@ template class MAGNUM_TEXT_EXPORT Renderer: public Abstr * Returns mesh prepared for use with @ref Shaders::AbstractVector * subclasses and rectangle spanning the rendered text. */ - static std::tuple render(AbstractFont& font, const GlyphCache& cache, Float size, const std::string& text, Buffer& vertexBuffer, Buffer& indexBuffer, Buffer::Usage usage, Alignment alignment = Alignment::LineLeft); + static std::tuple render(AbstractFont& font, const GlyphCache& cache, Float size, const std::string& text, Buffer& vertexBuffer, Buffer& indexBuffer, BufferUsage usage, Alignment alignment = Alignment::LineLeft); /** * @brief Constructor diff --git a/src/Text/Test/RendererGLTest.cpp b/src/Text/Test/RendererGLTest.cpp index 4e6115a7e..637b82122 100644 --- a/src/Text/Test/RendererGLTest.cpp +++ b/src/Text/Test/RendererGLTest.cpp @@ -169,7 +169,7 @@ void RendererGLTest::renderMesh() { Mesh mesh; Buffer vertexBuffer, indexBuffer; Rectangle bounds; - std::tie(mesh, bounds) = Text::Renderer3D::render(font, *static_cast(nullptr), 0.25f, "abc", vertexBuffer, indexBuffer, Buffer::Usage::StaticDraw, Alignment::TopCenter); + std::tie(mesh, bounds) = Text::Renderer3D::render(font, *static_cast(nullptr), 0.25f, "abc", vertexBuffer, indexBuffer, BufferUsage::StaticDraw, Alignment::TopCenter); MAGNUM_VERIFY_NO_ERROR(); /* Alignment offset */ @@ -216,7 +216,7 @@ void RendererGLTest::mutableText() { CORRADE_COMPARE(renderer.rectangle(), Rectangle()); /* Reserve some capacity */ - renderer.reserve(4, Buffer::Usage::StaticDraw, Buffer::Usage::StaticDraw); + renderer.reserve(4, BufferUsage::StaticDraw, BufferUsage::StaticDraw); MAGNUM_VERIFY_NO_ERROR(); CORRADE_COMPARE(renderer.capacity(), 4); /** @todo How to verify this on ES? */ diff --git a/src/Texture.h b/src/Texture.h index 517f050b9..b189c4d47 100644 --- a/src/Texture.h +++ b/src/Texture.h @@ -339,7 +339,7 @@ template class Texture: public AbstractTexture { * See image(Int, Image&) for more information. * @requires_gl %Texture image queries are not available in OpenGL ES. */ - void image(Int level, BufferImage& image, Buffer::Usage usage) { + void image(Int level, BufferImage& image, BufferUsage usage) { AbstractTexture::image(_target, level, image, usage); } #endif diff --git a/src/TextureTools/DistanceField.cpp b/src/TextureTools/DistanceField.cpp index 5165a3a51..5805ec200 100644 --- a/src/TextureTools/DistanceField.cpp +++ b/src/TextureTools/DistanceField.cpp @@ -25,8 +25,10 @@ #include "TextureTools/DistanceField.h" #include + #include "Math/Geometry/Rectangle.h" #include "AbstractShaderProgram.h" +#include "Buffer.h" #include "Extensions.h" #include "Framebuffer.h" #include "Mesh.h" @@ -189,7 +191,7 @@ void distanceField(Texture2D& input, Texture2D& output, const Rectanglei& rectan Vector2(-1.0, -3.0), Vector2( 3.0, 1.0) }; - buffer.setData(triangle, Buffer::Usage::StaticDraw); + buffer.setData(triangle, BufferUsage::StaticDraw); mesh.addVertexBuffer(buffer, 0, DistanceFieldShader::Position()); }