From 5a8d6544331f921e83c1ac5bb1ee0a72ee370483 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vladim=C3=ADr=20Vondru=C5=A1?= Date: Thu, 24 Oct 2013 17:17:44 +0200 Subject: [PATCH] Fix build without MAGNUM_BUILD_DEPRECATED. Updated Buffer test to check all data setting functions. --- src/Buffer.h | 8 ++++---- src/BufferImage.cpp | 2 +- src/MeshTools/CompressIndices.cpp | 2 +- src/MeshTools/Interleave.h | 2 +- src/Test/BufferGLTest.cpp | 32 ++++++++++++++++++++++++++++--- src/Text/TextRenderer.cpp | 6 +++--- 6 files changed, 39 insertions(+), 13 deletions(-) diff --git a/src/Buffer.h b/src/Buffer.h index 1f3c88189..38995580d 100644 --- a/src/Buffer.h +++ b/src/Buffer.h @@ -677,13 +677,13 @@ class MAGNUM_EXPORT Buffer { * @see setData(GLsizeiptr, const GLvoid*, Usage) */ template Buffer& setData(const std::vector& data, Usage usage) { - setData(data.size()*sizeof(T), data.data(), usage); + setData({data.data(), data.size()}, usage); return *this; } /** @overload */ template Buffer& setData(const std::array& data, Usage usage) { - setData(data.size()*sizeof(T), data.data(), usage); + setData({data.data(), data.size()}, usage); return *this; } @@ -724,13 +724,13 @@ class MAGNUM_EXPORT Buffer { * @see setSubData(GLintptr, GLsizeiptr, const GLvoid*) */ template Buffer& setSubData(GLintptr offset, const std::vector& data) { - setSubData(offset, data.size()*sizeof(T), data.data()); + setSubData(offset, {data.data(), data.size()}); return *this; } /** @overload */ template Buffer& setSubData(GLintptr offset, const std::array& data) { - setSubData(offset, data.size()*sizeof(T), data.data()); + setSubData(offset, {data.data(), data.size()}); return *this; } diff --git a/src/BufferImage.cpp b/src/BufferImage.cpp index 35edf27d9..9099845d8 100644 --- a/src/BufferImage.cpp +++ b/src/BufferImage.cpp @@ -31,7 +31,7 @@ template void BufferImage::setData(const typ _format = format; _type = type; _size = size; - _buffer.setData(pixelSize()*size.product(), data, usage); + _buffer.setData({data, pixelSize()*size.product()}, usage); } #ifndef DOXYGEN_GENERATING_OUTPUT diff --git a/src/MeshTools/CompressIndices.cpp b/src/MeshTools/CompressIndices.cpp index 3735abd2e..e81c890c9 100644 --- a/src/MeshTools/CompressIndices.cpp +++ b/src/MeshTools/CompressIndices.cpp @@ -81,7 +81,7 @@ void compressIndices(Mesh& mesh, Buffer& buffer, Buffer::Usage usage, const std: mesh.setIndexCount(indices.size()) .setIndexBuffer(buffer, 0, indexType, *minmax.first, *minmax.second); - buffer.setData(indexCount*Mesh::indexSize(indexType), data, usage); + buffer.setData({data, indexCount*Mesh::indexSize(indexType)}, usage); delete[] data; } diff --git a/src/MeshTools/Interleave.h b/src/MeshTools/Interleave.h index 82e424d03..4a5c2d2c9 100644 --- a/src/MeshTools/Interleave.h +++ b/src/MeshTools/Interleave.h @@ -64,7 +64,7 @@ class Interleave { operator()(attributes...); mesh.setVertexCount(_attributeCount); - buffer.setData(_attributeCount*_stride, _data, usage); + buffer.setData({_data, _attributeCount*_stride}, usage); delete[] _data; } diff --git a/src/Test/BufferGLTest.cpp b/src/Test/BufferGLTest.cpp index ebd9b1bf5..94ade2dd0 100644 --- a/src/Test/BufferGLTest.cpp +++ b/src/Test/BufferGLTest.cpp @@ -22,6 +22,8 @@ DEALINGS IN THE SOFTWARE. */ +#include +#include #include #include "Buffer.h" @@ -82,10 +84,22 @@ void BufferGLTest::construct() { void BufferGLTest::data() { Buffer buffer; + /* Plain array */ constexpr Int data[] = {2, 7, 5, 13, 25}; - buffer.setData(5*4, data, Buffer::Usage::StaticDraw); + buffer.setData({data, 5}, Buffer::Usage::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); + 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); + MAGNUM_VERIFY_NO_ERROR(); CORRADE_COMPARE(buffer.size(), 5*4); /** @todo How to verify the contents in ES? */ @@ -100,10 +114,22 @@ void BufferGLTest::data() { CORRADE_COMPARE(contents[4], 25); #endif + /* Plain array */ constexpr Int subData[] = {125, 3, 15}; - buffer.setSubData(4, 3*4, subData); + buffer.setSubData(4, {subData, 3}); MAGNUM_VERIFY_NO_ERROR(); + CORRADE_COMPARE(buffer.size(), 5*4); + /* STL vector */ + std::vector subData2{125, 3, 15}; + buffer.setSubData(4, subData2); + MAGNUM_VERIFY_NO_ERROR(); + CORRADE_COMPARE(buffer.size(), 5*4); + + /* STL array */ + std::array subData3{125, 3, 15}; + buffer.setSubData(4, subData3); + MAGNUM_VERIFY_NO_ERROR(); CORRADE_COMPARE(buffer.size(), 5*4); /** @todo How to verify the contents in ES? */ @@ -254,7 +280,7 @@ void BufferGLTest::copy() { buffer1.setData(data, Buffer::Usage::StaticDraw); Buffer buffer2; - buffer2.setData(5, nullptr, Buffer::Usage::StaticDraw); + buffer2.setData({nullptr, 5}, Buffer::Usage::StaticDraw); Buffer::copy(buffer1, buffer2, 1, 2, 3); MAGNUM_VERIFY_NO_ERROR(); diff --git a/src/Text/TextRenderer.cpp b/src/Text/TextRenderer.cpp index 6d178c99b..79e707aff 100644 --- a/src/Text/TextRenderer.cpp +++ b/src/Text/TextRenderer.cpp @@ -180,7 +180,7 @@ std::tuple AbstractTextRenderer::render(AbstractFont& font, con indices = new char[indicesSize]; createIndices(indices, layouter->glyphCount()); } - indexBuffer.setData(indicesSize, indices, usage); + indexBuffer.setData({indices, indicesSize}, usage); delete indices; /* Configure mesh except for vertex buffer (depends on dimension count, done @@ -287,7 +287,7 @@ void AbstractTextRenderer::reserve(const uint32_t glyphCount, const Buffer::Usag const UnsignedInt indexCount = glyphCount*6; /* Allocate vertex buffer, reset vertex count */ - _vertexBuffer.setData(vertexCount*sizeof(Vertex), nullptr, vertexBufferUsage); + _vertexBuffer.setData({nullptr, vertexCount*sizeof(Vertex)}, vertexBufferUsage); #ifdef CORRADE_TARGET_EMSCRIPTEN _vertexBufferData = Containers::Array(vertexCount*sizeof(Vertex)); #endif @@ -306,7 +306,7 @@ void AbstractTextRenderer::reserve(const uint32_t glyphCount, const Buffer::Usag indexType = Mesh::IndexType::UnsignedInt; indicesSize = indexCount*sizeof(UnsignedInt); } - _indexBuffer.setData(indicesSize, nullptr, indexBufferUsage); + _indexBuffer.setData({nullptr, indicesSize}, indexBufferUsage); #ifdef CORRADE_TARGET_EMSCRIPTEN _indexBufferData = Containers::Array(indicesSize); #endif