Browse Source

Fix build without MAGNUM_BUILD_DEPRECATED.

Updated Buffer test to check all data setting functions.
pull/23/head
Vladimír Vondruš 13 years ago
parent
commit
5a8d654433
  1. 8
      src/Buffer.h
  2. 2
      src/BufferImage.cpp
  3. 2
      src/MeshTools/CompressIndices.cpp
  4. 2
      src/MeshTools/Interleave.h
  5. 32
      src/Test/BufferGLTest.cpp
  6. 6
      src/Text/TextRenderer.cpp

8
src/Buffer.h

@ -677,13 +677,13 @@ class MAGNUM_EXPORT Buffer {
* @see setData(GLsizeiptr, const GLvoid*, Usage)
*/
template<class T> Buffer& setData(const std::vector<T>& data, Usage usage) {
setData(data.size()*sizeof(T), data.data(), usage);
setData({data.data(), data.size()}, usage);
return *this;
}
/** @overload */
template<std::size_t size, class T> Buffer& setData(const std::array<T, size>& 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<class T> Buffer& setSubData(GLintptr offset, const std::vector<T>& data) {
setSubData(offset, data.size()*sizeof(T), data.data());
setSubData(offset, {data.data(), data.size()});
return *this;
}
/** @overload */
template<std::size_t size, class T> Buffer& setSubData(GLintptr offset, const std::array<T, size>& data) {
setSubData(offset, data.size()*sizeof(T), data.data());
setSubData(offset, {data.data(), data.size()});
return *this;
}

2
src/BufferImage.cpp

@ -31,7 +31,7 @@ template<UnsignedInt dimensions> void BufferImage<dimensions>::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

2
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;
}

2
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;
}

32
src/Test/BufferGLTest.cpp

@ -22,6 +22,8 @@
DEALINGS IN THE SOFTWARE.
*/
#include <array>
#include <vector>
#include <Containers/Array.h>
#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<Int> 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<Int, 5> 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<Int> subData2{125, 3, 15};
buffer.setSubData(4, subData2);
MAGNUM_VERIFY_NO_ERROR();
CORRADE_COMPARE(buffer.size(), 5*4);
/* STL array */
std::array<Int, 3> 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();

6
src/Text/TextRenderer.cpp

@ -180,7 +180,7 @@ std::tuple<Mesh, Rectangle> AbstractTextRenderer::render(AbstractFont& font, con
indices = new char[indicesSize];
createIndices<UnsignedInt>(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<UnsignedByte>(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<UnsignedByte>(indicesSize);
#endif

Loading…
Cancel
Save