Browse Source

Don't use deprecated Buffer functionality.

pull/217/head
Vladimír Vondruš 9 years ago
parent
commit
e0ee452297
  1. 4
      src/Magnum/DebugTools/BufferData.cpp
  2. 2
      src/Magnum/DebugTools/Implementation/AbstractShapeRenderer.cpp
  3. 37
      src/Magnum/Test/BufferGLTest.cpp
  4. 6
      src/Magnum/Test/BufferImageGLTest.cpp
  5. 25
      src/Magnum/Test/CubeMapTextureArrayGLTest.cpp
  6. 35
      src/Magnum/Test/CubeMapTextureGLTest.cpp
  7. 6
      src/Magnum/Test/FramebufferGLTest.cpp
  8. 13
      src/Magnum/Test/RectangleTextureGLTest.cpp
  9. 38
      src/Magnum/Test/TextureArrayGLTest.cpp
  10. 61
      src/Magnum/Test/TextureGLTest.cpp
  11. 14
      src/Magnum/Test/TransformFeedbackGLTest.cpp
  12. 2
      src/Magnum/Text/Renderer.cpp
  13. 4
      src/Magnum/Text/Renderer.h
  14. 133
      src/Magnum/Text/Test/RendererGLTest.cpp

4
src/Magnum/DebugTools/BufferData.cpp

@ -29,8 +29,8 @@
namespace Magnum { namespace DebugTools { namespace Implementation { namespace Magnum { namespace DebugTools { namespace Implementation {
void bufferSubData(Buffer& buffer, GLintptr offset, GLsizeiptr size, void* output) { void bufferSubData(Buffer& buffer, GLintptr offset, GLsizeiptr size, void* output) {
const char* data = buffer.map<const char>(offset, size, Buffer::MapFlag::Read); Containers::ArrayView<const char> data = buffer.mapRead(offset, size);
std::copy(data, data + size, reinterpret_cast<char*>(output)); std::copy(data.begin(), data.end(), reinterpret_cast<char*>(output));
buffer.unmap(); buffer.unmap();
} }

2
src/Magnum/DebugTools/Implementation/AbstractShapeRenderer.cpp

@ -25,6 +25,8 @@
#include "AbstractShapeRenderer.h" #include "AbstractShapeRenderer.h"
#include <Corrade/Containers/Array.h>
#include "Magnum/AbstractShaderProgram.h" #include "Magnum/AbstractShaderProgram.h"
#include "Magnum/Buffer.h" #include "Magnum/Buffer.h"
#include "Magnum/Mesh.h" #include "Magnum/Mesh.h"

37
src/Magnum/Test/BufferGLTest.cpp

@ -233,9 +233,10 @@ void BufferGLTest::data() {
/** @todo How to verify the contents in ES? */ /** @todo How to verify the contents in ES? */
#ifndef MAGNUM_TARGET_GLES #ifndef MAGNUM_TARGET_GLES
const Containers::Array<Int> contents = buffer.data<Int>(); auto contents = buffer.data();
MAGNUM_VERIFY_NO_ERROR(); MAGNUM_VERIFY_NO_ERROR();
CORRADE_COMPARE_AS(contents, Containers::arrayView(data), CORRADE_COMPARE_AS(Containers::arrayCast<Int>(contents),
Containers::arrayView(data),
TestSuite::Compare::Container); TestSuite::Compare::Container);
#endif #endif
@ -259,9 +260,10 @@ void BufferGLTest::data() {
/** @todo How to verify the contents in ES? */ /** @todo How to verify the contents in ES? */
#ifndef MAGNUM_TARGET_GLES #ifndef MAGNUM_TARGET_GLES
const Containers::Array<Int> subContents = buffer.subData<Int>(4, 3); auto subContents = buffer.subData(4, 3*4);
MAGNUM_VERIFY_NO_ERROR(); MAGNUM_VERIFY_NO_ERROR();
CORRADE_COMPARE_AS(subContents, Containers::arrayView(subData), CORRADE_COMPARE_AS(Containers::arrayCast<Int>(subContents),
Containers::arrayView(subData),
TestSuite::Compare::Container); TestSuite::Compare::Container);
#endif #endif
} }
@ -276,11 +278,13 @@ void BufferGLTest::map() {
constexpr char data[] = {2, 7, 5, 13, 25}; constexpr char data[] = {2, 7, 5, 13, 25};
buffer.setData(data, BufferUsage::StaticDraw); buffer.setData(data, BufferUsage::StaticDraw);
#ifndef MAGNUM_TARGET_GLES char* contents = buffer.map(
char* contents = buffer.map<char>(Buffer::MapAccess::ReadWrite); #ifndef MAGNUM_TARGET_GLES
#else Buffer::MapAccess::ReadWrite
char* contents = buffer.map<char>(Buffer::MapAccess::WriteOnly); #else
#endif Buffer::MapAccess::WriteOnly
#endif
);
MAGNUM_VERIFY_NO_ERROR(); MAGNUM_VERIFY_NO_ERROR();
CORRADE_VERIFY(contents); CORRADE_VERIFY(contents);
@ -294,7 +298,7 @@ void BufferGLTest::map() {
/** @todo How to verify the contents in ES? */ /** @todo How to verify the contents in ES? */
#ifndef MAGNUM_TARGET_GLES #ifndef MAGNUM_TARGET_GLES
Containers::Array<char> changedContents = buffer.data<char>(); Containers::Array<char> changedContents = buffer.data();
CORRADE_COMPARE(changedContents.size(), 5); CORRADE_COMPARE(changedContents.size(), 5);
CORRADE_COMPARE(changedContents[3], 107); CORRADE_COMPARE(changedContents[3], 107);
#endif #endif
@ -336,10 +340,11 @@ void BufferGLTest::mapRange() {
Buffer buffer; Buffer buffer;
buffer.setData(data, BufferUsage::StaticDraw); buffer.setData(data, BufferUsage::StaticDraw);
char* contents = buffer.map<char>(1, 4, Buffer::MapFlag::Read|Buffer::MapFlag::Write); Containers::ArrayView<char> contents = buffer.map(1, 4, Buffer::MapFlag::Read|Buffer::MapFlag::Write);
MAGNUM_VERIFY_NO_ERROR(); MAGNUM_VERIFY_NO_ERROR();
CORRADE_VERIFY(contents); CORRADE_VERIFY(contents);
CORRADE_COMPARE(contents.size(), 4);
CORRADE_COMPARE(contents[2], 13); CORRADE_COMPARE(contents[2], 13);
contents[3] = 107; contents[3] = 107;
@ -348,7 +353,7 @@ void BufferGLTest::mapRange() {
/** @todo How to verify the contents in ES? */ /** @todo How to verify the contents in ES? */
#ifndef MAGNUM_TARGET_GLES #ifndef MAGNUM_TARGET_GLES
Containers::Array<char> changedContents = buffer.data<char>(); Containers::Array<char> changedContents = buffer.data();
CORRADE_COMPARE(changedContents.size(), 5); CORRADE_COMPARE(changedContents.size(), 5);
CORRADE_COMPARE(changedContents[4], 107); CORRADE_COMPARE(changedContents[4], 107);
#endif #endif
@ -368,7 +373,7 @@ void BufferGLTest::mapRangeExplicitFlush() {
buffer.setData(data, BufferUsage::StaticDraw); buffer.setData(data, BufferUsage::StaticDraw);
/* Map, set byte, don't flush and unmap */ /* Map, set byte, don't flush and unmap */
char* contents = buffer.map<char>(1, 4, Buffer::MapFlag::Write|Buffer::MapFlag::FlushExplicit); Containers::ArrayView<char> contents = buffer.map(1, 4, Buffer::MapFlag::Write|Buffer::MapFlag::FlushExplicit);
CORRADE_VERIFY(contents); CORRADE_VERIFY(contents);
contents[2] = 99; contents[2] = 99;
CORRADE_VERIFY(buffer.unmap()); CORRADE_VERIFY(buffer.unmap());
@ -377,7 +382,7 @@ void BufferGLTest::mapRangeExplicitFlush() {
/* Unflushed range _might_ not be changed, thus nothing to test */ /* Unflushed range _might_ not be changed, thus nothing to test */
/* Map, set byte, flush and unmap */ /* Map, set byte, flush and unmap */
contents = buffer.map<char>(1, 4, Buffer::MapFlag::Write|Buffer::MapFlag::FlushExplicit); contents = buffer.map(1, 4, Buffer::MapFlag::Write|Buffer::MapFlag::FlushExplicit);
CORRADE_VERIFY(contents); CORRADE_VERIFY(contents);
contents[3] = 107; contents[3] = 107;
buffer.flushMappedRange(3, 1); buffer.flushMappedRange(3, 1);
@ -388,7 +393,7 @@ void BufferGLTest::mapRangeExplicitFlush() {
/* Flushed range should be changed */ /* Flushed range should be changed */
/** @todo How to verify the contents in ES? */ /** @todo How to verify the contents in ES? */
#ifndef MAGNUM_TARGET_GLES #ifndef MAGNUM_TARGET_GLES
Containers::Array<char> changedContents = buffer.data<char>(); Containers::Array<char> changedContents = buffer.data();
CORRADE_COMPARE(changedContents.size(), 5); CORRADE_COMPARE(changedContents.size(), 5);
CORRADE_COMPARE(changedContents[4], 107); CORRADE_COMPARE(changedContents[4], 107);
#endif #endif
@ -408,7 +413,7 @@ void BufferGLTest::copy() {
/** @todo How to verify the contents in ES? */ /** @todo How to verify the contents in ES? */
#ifndef MAGNUM_TARGET_GLES #ifndef MAGNUM_TARGET_GLES
const Containers::Array<char> subContents = buffer2.subData<char>(2, 3); const Containers::Array<char> subContents = buffer2.subData(2, 3);
CORRADE_COMPARE_AS(subContents, Containers::arrayView(data).slice(1, 4), CORRADE_COMPARE_AS(subContents, Containers::arrayView(data).slice(1, 4),
TestSuite::Compare::Container); TestSuite::Compare::Container);
#endif #endif

6
src/Magnum/Test/BufferImageGLTest.cpp

@ -23,6 +23,7 @@
DEALINGS IN THE SOFTWARE. DEALINGS IN THE SOFTWARE.
*/ */
#include <Corrade/Containers/Array.h>
#include <Corrade/TestSuite/Compare/Container.h> #include <Corrade/TestSuite/Compare/Container.h>
#include "Magnum/BufferImage.h" #include "Magnum/BufferImage.h"
@ -287,7 +288,7 @@ void BufferImageGLTest::setData() {
a.setData(PixelFormat::RGBA, PixelType::UnsignedShort, {1, 2}, data2, BufferUsage::StaticDraw); a.setData(PixelFormat::RGBA, PixelType::UnsignedShort, {1, 2}, data2, BufferUsage::StaticDraw);
#ifndef MAGNUM_TARGET_GLES #ifndef MAGNUM_TARGET_GLES
const auto imageData = a.buffer().data<UnsignedShort>(); const auto imageData = a.buffer().data();
#endif #endif
MAGNUM_VERIFY_NO_ERROR(); MAGNUM_VERIFY_NO_ERROR();
@ -299,7 +300,8 @@ void BufferImageGLTest::setData() {
/** @todo How to verify the contents in ES? */ /** @todo How to verify the contents in ES? */
#ifndef MAGNUM_TARGET_GLES #ifndef MAGNUM_TARGET_GLES
CORRADE_COMPARE_AS(imageData, Containers::arrayView(data2), CORRADE_COMPARE_AS(Containers::arrayCast<UnsignedShort>(imageData),
Containers::arrayView(data2),
TestSuite::Compare::Container); TestSuite::Compare::Container);
#endif #endif
} }

25
src/Magnum/Test/CubeMapTextureArrayGLTest.cpp

@ -616,12 +616,12 @@ void CubeMapTextureArrayGLTest::imageBuffer() {
#ifndef MAGNUM_TARGET_GLES #ifndef MAGNUM_TARGET_GLES
BufferImage3D image = texture.image(0, {PixelStorageData[testCaseInstanceId()].storage, BufferImage3D image = texture.image(0, {PixelStorageData[testCaseInstanceId()].storage,
PixelFormat::RGBA, PixelType::UnsignedByte}, BufferUsage::StaticRead); PixelFormat::RGBA, PixelType::UnsignedByte}, BufferUsage::StaticRead);
const auto imageData = image.buffer().data<UnsignedByte>(); const auto imageData = image.buffer().data();
MAGNUM_VERIFY_NO_ERROR(); MAGNUM_VERIFY_NO_ERROR();
CORRADE_COMPARE(image.size(), Vector3i(2, 2, 6)); CORRADE_COMPARE(image.size(), Vector3i(2, 2, 6));
CORRADE_COMPARE_AS(imageData.suffix(PixelStorageData[testCaseInstanceId()].offset), CORRADE_COMPARE_AS(Containers::arrayCast<UnsignedByte>(imageData).suffix(PixelStorageData[testCaseInstanceId()].offset),
PixelStorageData[testCaseInstanceId()].data, PixelStorageData[testCaseInstanceId()].data,
TestSuite::Compare::Container); TestSuite::Compare::Container);
#endif #endif
@ -699,12 +699,12 @@ void CubeMapTextureArrayGLTest::compressedImageBuffer() {
/** @todo How to test this on ES? */ /** @todo How to test this on ES? */
#ifndef MAGNUM_TARGET_GLES #ifndef MAGNUM_TARGET_GLES
CompressedBufferImage3D image = texture.compressedImage(0, {CompressedPixelStorageData[testCaseInstanceId()].storage}, BufferUsage::StaticRead); CompressedBufferImage3D image = texture.compressedImage(0, {CompressedPixelStorageData[testCaseInstanceId()].storage}, BufferUsage::StaticRead);
const auto imageData = image.buffer().data<UnsignedByte>(); const auto imageData = image.buffer().data();
MAGNUM_VERIFY_NO_ERROR(); MAGNUM_VERIFY_NO_ERROR();
CORRADE_COMPARE(image.size(), (Vector3i{4, 4, 6})); CORRADE_COMPARE(image.size(), (Vector3i{4, 4, 6}));
CORRADE_COMPARE_AS(imageData.suffix(CompressedPixelStorageData[testCaseInstanceId()].offset), CORRADE_COMPARE_AS(Containers::arrayCast<UnsignedByte>(imageData).suffix(CompressedPixelStorageData[testCaseInstanceId()].offset),
CompressedPixelStorageData[testCaseInstanceId()].data, CompressedPixelStorageData[testCaseInstanceId()].data,
TestSuite::Compare::Container); TestSuite::Compare::Container);
#endif #endif
@ -803,12 +803,13 @@ void CubeMapTextureArrayGLTest::subImageBuffer() {
/** @todo How to test this on ES? */ /** @todo How to test this on ES? */
#ifndef MAGNUM_TARGET_GLES #ifndef MAGNUM_TARGET_GLES
BufferImage3D image = texture.image(0, {PixelFormat::RGBA, PixelType::UnsignedByte}, BufferUsage::StaticRead); BufferImage3D image = texture.image(0, {PixelFormat::RGBA, PixelType::UnsignedByte}, BufferUsage::StaticRead);
const auto imageData = image.buffer().data<UnsignedByte>(); const auto imageData = image.buffer().data();
MAGNUM_VERIFY_NO_ERROR(); MAGNUM_VERIFY_NO_ERROR();
CORRADE_COMPARE(image.size(), Vector3i(4, 4, 6)); CORRADE_COMPARE(image.size(), Vector3i(4, 4, 6));
CORRADE_COMPARE_AS(imageData, Containers::arrayView(SubDataComplete), CORRADE_COMPARE_AS(Containers::arrayCast<UnsignedByte>(imageData),
Containers::arrayView(SubDataComplete),
TestSuite::Compare::Container); TestSuite::Compare::Container);
#endif #endif
} }
@ -857,12 +858,12 @@ void CubeMapTextureArrayGLTest::subImageQueryBuffer() {
BufferImage3D image = texture.subImage(0, Range3Di::fromSize(Vector3i{1}, {2, 2, 4}), BufferImage3D image = texture.subImage(0, Range3Di::fromSize(Vector3i{1}, {2, 2, 4}),
{SubPixelStorageData[testCaseInstanceId()].storage, {SubPixelStorageData[testCaseInstanceId()].storage,
PixelFormat::RGBA, PixelType::UnsignedByte}, BufferUsage::StaticRead); PixelFormat::RGBA, PixelType::UnsignedByte}, BufferUsage::StaticRead);
const auto imageData = image.buffer().data<UnsignedByte>(); const auto imageData = image.buffer().data();
MAGNUM_VERIFY_NO_ERROR(); MAGNUM_VERIFY_NO_ERROR();
CORRADE_COMPARE(image.size(), Vector3i(2, 2, 4)); CORRADE_COMPARE(image.size(), Vector3i(2, 2, 4));
CORRADE_COMPARE_AS(imageData.suffix(SubPixelStorageData[testCaseInstanceId()].offset), CORRADE_COMPARE_AS(Containers::arrayCast<UnsignedByte>(imageData).suffix(SubPixelStorageData[testCaseInstanceId()].offset),
SubPixelStorageData[testCaseInstanceId()].data, SubPixelStorageData[testCaseInstanceId()].data,
TestSuite::Compare::Container); TestSuite::Compare::Container);
} }
@ -1016,12 +1017,12 @@ void CubeMapTextureArrayGLTest::compressedSubImageBuffer() {
/** @todo How to test this on ES? */ /** @todo How to test this on ES? */
#ifndef MAGNUM_TARGET_GLES #ifndef MAGNUM_TARGET_GLES
CompressedBufferImage3D image = texture.compressedImage(0, {}, BufferUsage::StaticRead); CompressedBufferImage3D image = texture.compressedImage(0, {}, BufferUsage::StaticRead);
const auto imageData = image.buffer().data<UnsignedByte>(); const auto imageData = image.buffer().data();
MAGNUM_VERIFY_NO_ERROR(); MAGNUM_VERIFY_NO_ERROR();
CORRADE_COMPARE(image.size(), (Vector3i{12, 12, 6})); CORRADE_COMPARE(image.size(), (Vector3i{12, 12, 6}));
CORRADE_COMPARE_AS(imageData, Containers::arrayView(CompressedSubDataComplete), CORRADE_COMPARE_AS(Containers::arrayCast<UnsignedByte>(imageData), Containers::arrayView(CompressedSubDataComplete),
TestSuite::Compare::Container); TestSuite::Compare::Container);
#endif #endif
} }
@ -1078,12 +1079,12 @@ void CubeMapTextureArrayGLTest::compressedSubImageQueryBuffer() {
MAGNUM_VERIFY_NO_ERROR(); MAGNUM_VERIFY_NO_ERROR();
CompressedBufferImage3D image = texture.compressedSubImage(0, Range3Di::fromSize({4, 4, 1}, Vector3i{4}), {CompressedSubPixelStorageData[testCaseInstanceId()].storage}, BufferUsage::StaticRead); CompressedBufferImage3D image = texture.compressedSubImage(0, Range3Di::fromSize({4, 4, 1}, Vector3i{4}), {CompressedSubPixelStorageData[testCaseInstanceId()].storage}, BufferUsage::StaticRead);
const auto imageData = image.buffer().data<UnsignedByte>(); const auto imageData = image.buffer().data();
MAGNUM_VERIFY_NO_ERROR(); MAGNUM_VERIFY_NO_ERROR();
CORRADE_COMPARE(image.size(), Vector3i{4}); CORRADE_COMPARE(image.size(), Vector3i{4});
CORRADE_COMPARE_AS(imageData.suffix(CompressedSubPixelStorageData[testCaseInstanceId()].offset), CORRADE_COMPARE_AS(Containers::arrayCast<UnsignedByte>(imageData).suffix(CompressedSubPixelStorageData[testCaseInstanceId()].offset),
CompressedSubPixelStorageData[testCaseInstanceId()].data, CompressedSubPixelStorageData[testCaseInstanceId()].data,
TestSuite::Compare::Container); TestSuite::Compare::Container);
} }

35
src/Magnum/Test/CubeMapTextureGLTest.cpp

@ -642,12 +642,12 @@ void CubeMapTextureGLTest::imageBuffer() {
#ifndef MAGNUM_TARGET_GLES #ifndef MAGNUM_TARGET_GLES
BufferImage2D image = texture.image(CubeMapCoordinate::PositiveX, 0, BufferImage2D image = texture.image(CubeMapCoordinate::PositiveX, 0,
{PixelStorageData[testCaseInstanceId()].storage, PixelFormat::RGBA, PixelType::UnsignedByte}, BufferUsage::StaticRead); {PixelStorageData[testCaseInstanceId()].storage, PixelFormat::RGBA, PixelType::UnsignedByte}, BufferUsage::StaticRead);
const auto imageData = image.buffer().data<UnsignedByte>(); const auto imageData = image.buffer().data();
MAGNUM_VERIFY_NO_ERROR(); MAGNUM_VERIFY_NO_ERROR();
CORRADE_COMPARE(image.size(), Vector2i(2)); CORRADE_COMPARE(image.size(), Vector2i(2));
CORRADE_COMPARE_AS(imageData.suffix(PixelStorageData[testCaseInstanceId()].offset), CORRADE_COMPARE_AS(Containers::arrayCast<UnsignedByte>(imageData).suffix(PixelStorageData[testCaseInstanceId()].offset),
PixelStorageData[testCaseInstanceId()].data, PixelStorageData[testCaseInstanceId()].data,
TestSuite::Compare::Container); TestSuite::Compare::Container);
#endif #endif
@ -733,12 +733,13 @@ void CubeMapTextureGLTest::subImageBuffer() {
/** @todo How to test this on ES? */ /** @todo How to test this on ES? */
#ifndef MAGNUM_TARGET_GLES #ifndef MAGNUM_TARGET_GLES
BufferImage2D image = texture.image(CubeMapCoordinate::PositiveX, 0, {PixelFormat::RGBA, PixelType::UnsignedByte}, BufferUsage::StaticRead); BufferImage2D image = texture.image(CubeMapCoordinate::PositiveX, 0, {PixelFormat::RGBA, PixelType::UnsignedByte}, BufferUsage::StaticRead);
const auto imageData = image.buffer().data<UnsignedByte>(); const auto imageData = image.buffer().data();
MAGNUM_VERIFY_NO_ERROR(); MAGNUM_VERIFY_NO_ERROR();
CORRADE_COMPARE(image.size(), Vector2i(4)); CORRADE_COMPARE(image.size(), Vector2i(4));
CORRADE_COMPARE_AS(imageData, Containers::arrayView(SubDataComplete), CORRADE_COMPARE_AS(Containers::arrayCast<UnsignedByte>(imageData),
Containers::arrayView(SubDataComplete),
TestSuite::Compare::Container); TestSuite::Compare::Container);
#endif #endif
} }
@ -790,12 +791,12 @@ void CubeMapTextureGLTest::subImageQueryBuffer() {
BufferImage3D image = texture.subImage(0, Range3Di::fromSize({1, 1, 0}, {2, 2, 1}), BufferImage3D image = texture.subImage(0, Range3Di::fromSize({1, 1, 0}, {2, 2, 1}),
{PixelStorageData[testCaseInstanceId()].storage, {PixelStorageData[testCaseInstanceId()].storage,
PixelFormat::RGBA, PixelType::UnsignedByte}, BufferUsage::StaticRead); PixelFormat::RGBA, PixelType::UnsignedByte}, BufferUsage::StaticRead);
const auto imageData = image.buffer().data<UnsignedByte>(); const auto imageData = image.buffer().data();
MAGNUM_VERIFY_NO_ERROR(); MAGNUM_VERIFY_NO_ERROR();
CORRADE_COMPARE(image.size(), Vector3i(2, 2, 1)); CORRADE_COMPARE(image.size(), Vector3i(2, 2, 1));
CORRADE_COMPARE_AS(imageData.suffix(PixelStorageData[testCaseInstanceId()].offset), CORRADE_COMPARE_AS(Containers::arrayCast<UnsignedByte>(imageData).suffix(PixelStorageData[testCaseInstanceId()].offset),
PixelStorageData[testCaseInstanceId()].data, PixelStorageData[testCaseInstanceId()].data,
TestSuite::Compare::Container); TestSuite::Compare::Container);
} }
@ -884,12 +885,12 @@ void CubeMapTextureGLTest::compressedImageBuffer() {
#ifndef MAGNUM_TARGET_GLES #ifndef MAGNUM_TARGET_GLES
CompressedBufferImage2D image = texture.compressedImage(CubeMapCoordinate::PositiveX, 0, CompressedBufferImage2D image = texture.compressedImage(CubeMapCoordinate::PositiveX, 0,
{CompressedPixelStorageData[testCaseInstanceId()].storage}, BufferUsage::StaticRead); {CompressedPixelStorageData[testCaseInstanceId()].storage}, BufferUsage::StaticRead);
const auto imageData = image.buffer().data<UnsignedByte>(); const auto imageData = image.buffer().data();
MAGNUM_VERIFY_NO_ERROR(); MAGNUM_VERIFY_NO_ERROR();
CORRADE_COMPARE(image.size(), Vector2i{4}); CORRADE_COMPARE(image.size(), Vector2i{4});
CORRADE_COMPARE_AS(imageData.suffix(CompressedPixelStorageData[testCaseInstanceId()].offset), CORRADE_COMPARE_AS(Containers::arrayCast<UnsignedByte>(imageData).suffix(CompressedPixelStorageData[testCaseInstanceId()].offset),
CompressedPixelStorageData[testCaseInstanceId()].data, CompressedPixelStorageData[testCaseInstanceId()].data,
TestSuite::Compare::Container); TestSuite::Compare::Container);
#endif #endif
@ -1079,12 +1080,13 @@ void CubeMapTextureGLTest::compressedSubImageBuffer() {
#ifndef MAGNUM_TARGET_GLES #ifndef MAGNUM_TARGET_GLES
CompressedBufferImage2D image = texture.compressedImage(CubeMapCoordinate::PositiveX, 0, CompressedBufferImage2D image = texture.compressedImage(CubeMapCoordinate::PositiveX, 0,
{}, BufferUsage::StaticRead); {}, BufferUsage::StaticRead);
const auto imageData = image.buffer().data<UnsignedByte>(); const auto imageData = image.buffer().data();
MAGNUM_VERIFY_NO_ERROR(); MAGNUM_VERIFY_NO_ERROR();
CORRADE_COMPARE(image.size(), Vector2i{12}); CORRADE_COMPARE(image.size(), Vector2i{12});
CORRADE_COMPARE_AS(imageData, Containers::arrayView(CompressedSubDataComplete), CORRADE_COMPARE_AS(Containers::arrayCast<UnsignedByte>(imageData),
Containers::arrayView(CompressedSubDataComplete),
TestSuite::Compare::Container); TestSuite::Compare::Container);
#endif #endif
} }
@ -1144,12 +1146,13 @@ void CubeMapTextureGLTest::compressedSubImageQueryBuffer() {
MAGNUM_VERIFY_NO_ERROR(); MAGNUM_VERIFY_NO_ERROR();
CompressedBufferImage3D image = texture.compressedSubImage(0, Range3Di::fromSize({4, 4, 0}, {4, 4, 1}), {CompressedPixelStorageData[testCaseInstanceId()].storage}, BufferUsage::StaticRead); CompressedBufferImage3D image = texture.compressedSubImage(0, Range3Di::fromSize({4, 4, 0}, {4, 4, 1}), {CompressedPixelStorageData[testCaseInstanceId()].storage}, BufferUsage::StaticRead);
const auto imageData = image.buffer().data<UnsignedByte>(); const auto imageData = image.buffer().data();
MAGNUM_VERIFY_NO_ERROR(); MAGNUM_VERIFY_NO_ERROR();
CORRADE_COMPARE(image.size(), (Vector3i{4, 4, 1})); CORRADE_COMPARE(image.size(), (Vector3i{4, 4, 1}));
CORRADE_COMPARE_AS(imageData.suffix(CompressedPixelStorageData[testCaseInstanceId()].offset), CORRADE_COMPARE_AS(
Containers::arrayCast<UnsignedByte>(imageData).suffix(CompressedPixelStorageData[testCaseInstanceId()].offset),
CompressedPixelStorageData[testCaseInstanceId()].data, CompressedPixelStorageData[testCaseInstanceId()].data,
TestSuite::Compare::Container); TestSuite::Compare::Container);
} }
@ -1203,8 +1206,8 @@ void CubeMapTextureGLTest::fullImageQueryBuffer() {
MAGNUM_VERIFY_NO_ERROR(); MAGNUM_VERIFY_NO_ERROR();
CORRADE_COMPARE(image.size(), Vector3i(2, 2, 6)); CORRADE_COMPARE(image.size(), Vector3i(2, 2, 6));
const auto imageData = image.buffer().data<UnsignedByte>(); const auto imageData = image.buffer().data();
CORRADE_COMPARE_AS(imageData.suffix(FullPixelStorageData[testCaseInstanceId()].offset), CORRADE_COMPARE_AS(Containers::arrayCast<UnsignedByte>(imageData).suffix(FullPixelStorageData[testCaseInstanceId()].offset),
FullPixelStorageData[testCaseInstanceId()].data, TestSuite::Compare::Container); FullPixelStorageData[testCaseInstanceId()].data, TestSuite::Compare::Container);
} }
@ -1260,8 +1263,8 @@ void CubeMapTextureGLTest::compressedFullImageQueryBuffer() {
MAGNUM_VERIFY_NO_ERROR(); MAGNUM_VERIFY_NO_ERROR();
CORRADE_COMPARE(image.size(), (Vector3i{4, 4, 6})); CORRADE_COMPARE(image.size(), (Vector3i{4, 4, 6}));
const auto imageData = image.buffer().data<UnsignedByte>(); const auto imageData = image.buffer().data();
CORRADE_COMPARE_AS(imageData.suffix(CompressedFullPixelStorageData[testCaseInstanceId()].offset), CORRADE_COMPARE_AS(Containers::arrayCast<UnsignedByte>(imageData).suffix(CompressedFullPixelStorageData[testCaseInstanceId()].offset),
CompressedFullPixelStorageData[testCaseInstanceId()].data, CompressedFullPixelStorageData[testCaseInstanceId()].data,
TestSuite::Compare::Container); TestSuite::Compare::Container);
} }

6
src/Magnum/Test/FramebufferGLTest.cpp

@ -1209,9 +1209,9 @@ void FramebufferGLTest::readBuffer() {
MAGNUM_VERIFY_NO_ERROR(); MAGNUM_VERIFY_NO_ERROR();
/** @todo How to test this on ES? */ /** @todo How to test this on ES? */
#ifndef MAGNUM_TARGET_GLES #ifndef MAGNUM_TARGET_GLES
const auto colorData = colorImage.buffer().data<Color4ub>(); auto colorData = colorImage.buffer().data();
CORRADE_COMPARE(colorData.size(), DataOffset + 8*16); CORRADE_COMPARE(colorData.size(), (DataOffset + 8*16)*sizeof(Color4ub));
CORRADE_COMPARE(colorData[DataOffset], Color4ub(128, 64, 32, 17)); CORRADE_COMPARE(Containers::arrayCast<Color4ub>(colorData)[DataOffset], Color4ub(128, 64, 32, 17));
#endif #endif
} }
#endif #endif

13
src/Magnum/Test/RectangleTextureGLTest.cpp

@ -339,12 +339,12 @@ void RectangleTextureGLTest::imageBuffer() {
BufferImage2D image = texture.image({PixelStorageData[testCaseInstanceId()].storage, BufferImage2D image = texture.image({PixelStorageData[testCaseInstanceId()].storage,
PixelFormat::RGBA, PixelType::UnsignedByte}, BufferUsage::StaticRead); PixelFormat::RGBA, PixelType::UnsignedByte}, BufferUsage::StaticRead);
const auto imageData = image.buffer().data<UnsignedByte>(); const auto imageData = image.buffer().data();
MAGNUM_VERIFY_NO_ERROR(); MAGNUM_VERIFY_NO_ERROR();
CORRADE_COMPARE(image.size(), Vector2i(2)); CORRADE_COMPARE(image.size(), Vector2i(2));
CORRADE_COMPARE_AS(imageData.suffix(PixelStorageData[testCaseInstanceId()].offset), CORRADE_COMPARE_AS(Containers::arrayCast<UnsignedByte>(imageData).suffix(PixelStorageData[testCaseInstanceId()].offset),
PixelStorageData[testCaseInstanceId()].data, PixelStorageData[testCaseInstanceId()].data,
TestSuite::Compare::Container); TestSuite::Compare::Container);
} }
@ -402,12 +402,13 @@ void RectangleTextureGLTest::subImageBuffer() {
MAGNUM_VERIFY_NO_ERROR(); MAGNUM_VERIFY_NO_ERROR();
BufferImage2D image = texture.image({PixelFormat::RGBA, PixelType::UnsignedByte}, BufferUsage::StaticRead); BufferImage2D image = texture.image({PixelFormat::RGBA, PixelType::UnsignedByte}, BufferUsage::StaticRead);
const auto imageData = image.buffer().data<UnsignedByte>(); const auto imageData = image.buffer().data();
MAGNUM_VERIFY_NO_ERROR(); MAGNUM_VERIFY_NO_ERROR();
CORRADE_COMPARE(image.size(), Vector2i(4)); CORRADE_COMPARE(image.size(), Vector2i(4));
CORRADE_COMPARE_AS(imageData, Containers::arrayView(SubDataComplete), CORRADE_COMPARE_AS(Containers::arrayCast<UnsignedByte>(imageData),
Containers::arrayView(SubDataComplete),
TestSuite::Compare::Container); TestSuite::Compare::Container);
} }
@ -454,12 +455,12 @@ void RectangleTextureGLTest::subImageQueryBuffer() {
BufferImage2D image = texture.subImage(Range2Di::fromSize(Vector2i{1}, Vector2i{2}), BufferImage2D image = texture.subImage(Range2Di::fromSize(Vector2i{1}, Vector2i{2}),
{PixelStorageData[testCaseInstanceId()].storage, {PixelStorageData[testCaseInstanceId()].storage,
PixelFormat::RGBA, PixelType::UnsignedByte}, BufferUsage::StaticRead); PixelFormat::RGBA, PixelType::UnsignedByte}, BufferUsage::StaticRead);
const auto imageData = image.buffer().data<UnsignedByte>(); const auto imageData = image.buffer().data();
MAGNUM_VERIFY_NO_ERROR(); MAGNUM_VERIFY_NO_ERROR();
CORRADE_COMPARE(image.size(), Vector2i{2}); CORRADE_COMPARE(image.size(), Vector2i{2});
CORRADE_COMPARE_AS(imageData.suffix(PixelStorageData[testCaseInstanceId()].offset), CORRADE_COMPARE_AS(Containers::arrayCast<UnsignedByte>(imageData).suffix(PixelStorageData[testCaseInstanceId()].offset),
PixelStorageData[testCaseInstanceId()].data, PixelStorageData[testCaseInstanceId()].data,
TestSuite::Compare::Container); TestSuite::Compare::Container);
} }

38
src/Magnum/Test/TextureArrayGLTest.cpp

@ -848,12 +848,12 @@ void TextureArrayGLTest::image1DBuffer() {
BufferImage2D image = texture.image(0, BufferImage2D image = texture.image(0,
{PixelStorage1DData[testCaseInstanceId()].storage, {PixelStorage1DData[testCaseInstanceId()].storage,
PixelFormat::RGBA, PixelType::UnsignedByte}, BufferUsage::StaticRead); PixelFormat::RGBA, PixelType::UnsignedByte}, BufferUsage::StaticRead);
const auto imageData = image.buffer().data<UnsignedByte>(); auto imageData = image.buffer().data();
MAGNUM_VERIFY_NO_ERROR(); MAGNUM_VERIFY_NO_ERROR();
CORRADE_COMPARE(image.size(), Vector2i(2)); CORRADE_COMPARE(image.size(), Vector2i(2));
CORRADE_COMPARE_AS(imageData.suffix(PixelStorage1DData[testCaseInstanceId()].offset), CORRADE_COMPARE_AS(Containers::arrayCast<UnsignedByte>(imageData).suffix(PixelStorage1DData[testCaseInstanceId()].offset),
PixelStorage1DData[testCaseInstanceId()].data, PixelStorage1DData[testCaseInstanceId()].data,
TestSuite::Compare::Container); TestSuite::Compare::Container);
} }
@ -911,12 +911,13 @@ void TextureArrayGLTest::subImage1DBuffer() {
MAGNUM_VERIFY_NO_ERROR(); MAGNUM_VERIFY_NO_ERROR();
BufferImage2D image = texture.image(0, {PixelFormat::RGBA, PixelType::UnsignedByte}, BufferUsage::StaticRead); BufferImage2D image = texture.image(0, {PixelFormat::RGBA, PixelType::UnsignedByte}, BufferUsage::StaticRead);
const auto imageData = image.buffer().data<UnsignedByte>(); auto imageData = image.buffer().data();
MAGNUM_VERIFY_NO_ERROR(); MAGNUM_VERIFY_NO_ERROR();
CORRADE_COMPARE(image.size(), Vector2i(4)); CORRADE_COMPARE(image.size(), Vector2i(4));
CORRADE_COMPARE_AS(imageData, Containers::arrayView(SubData1DComplete), CORRADE_COMPARE_AS(Containers::arrayCast<UnsignedByte>(imageData),
Containers::arrayView(SubData1DComplete),
TestSuite::Compare::Container); TestSuite::Compare::Container);
} }
@ -963,12 +964,12 @@ void TextureArrayGLTest::subImage1DQueryBuffer() {
BufferImage2D image = texture.subImage(0, Range2Di::fromSize(Vector2i{1}, Vector2i{2}), BufferImage2D image = texture.subImage(0, Range2Di::fromSize(Vector2i{1}, Vector2i{2}),
{PixelStorage1DData[testCaseInstanceId()].storage, {PixelStorage1DData[testCaseInstanceId()].storage,
PixelFormat::RGBA, PixelType::UnsignedByte}, BufferUsage::StaticRead); PixelFormat::RGBA, PixelType::UnsignedByte}, BufferUsage::StaticRead);
const auto imageData = image.buffer().data<UnsignedByte>(); auto imageData = image.buffer().data();
MAGNUM_VERIFY_NO_ERROR(); MAGNUM_VERIFY_NO_ERROR();
CORRADE_COMPARE(image.size(), Vector2i{2}); CORRADE_COMPARE(image.size(), Vector2i{2});
CORRADE_COMPARE_AS(imageData.suffix(PixelStorage1DData[testCaseInstanceId()].offset), CORRADE_COMPARE_AS(Containers::arrayCast<UnsignedByte>(imageData).suffix(PixelStorage1DData[testCaseInstanceId()].offset),
PixelStorage1DData[testCaseInstanceId()].data, PixelStorage1DData[testCaseInstanceId()].data,
TestSuite::Compare::Container); TestSuite::Compare::Container);
} }
@ -1049,12 +1050,12 @@ void TextureArrayGLTest::image2DBuffer() {
#ifndef MAGNUM_TARGET_GLES #ifndef MAGNUM_TARGET_GLES
BufferImage3D image = texture.image(0, {PixelStorage2DData[testCaseInstanceId()].storage, BufferImage3D image = texture.image(0, {PixelStorage2DData[testCaseInstanceId()].storage,
PixelFormat::RGBA, PixelType::UnsignedByte}, BufferUsage::StaticRead); PixelFormat::RGBA, PixelType::UnsignedByte}, BufferUsage::StaticRead);
const auto imageData = image.buffer().data<UnsignedByte>(); auto imageData = image.buffer().data();
MAGNUM_VERIFY_NO_ERROR(); MAGNUM_VERIFY_NO_ERROR();
CORRADE_COMPARE(image.size(), Vector3i(2)); CORRADE_COMPARE(image.size(), Vector3i(2));
CORRADE_COMPARE_AS(imageData.suffix(PixelStorage2DData[testCaseInstanceId()].offset), CORRADE_COMPARE_AS(Containers::arrayCast<UnsignedByte>(imageData).suffix(PixelStorage2DData[testCaseInstanceId()].offset),
PixelStorage2DData[testCaseInstanceId()].data, PixelStorage2DData[testCaseInstanceId()].data,
TestSuite::Compare::Container); TestSuite::Compare::Container);
#endif #endif
@ -1139,12 +1140,13 @@ void TextureArrayGLTest::subImage2DBuffer() {
/** @todo How to test this on ES? */ /** @todo How to test this on ES? */
#ifndef MAGNUM_TARGET_GLES #ifndef MAGNUM_TARGET_GLES
BufferImage3D image = texture.image(0, {PixelFormat::RGBA, PixelType::UnsignedByte}, BufferUsage::StaticRead); BufferImage3D image = texture.image(0, {PixelFormat::RGBA, PixelType::UnsignedByte}, BufferUsage::StaticRead);
const auto imageData = image.buffer().data<UnsignedByte>(); const auto imageData = image.buffer().data();
MAGNUM_VERIFY_NO_ERROR(); MAGNUM_VERIFY_NO_ERROR();
CORRADE_COMPARE(image.size(), Vector3i(4)); CORRADE_COMPARE(image.size(), Vector3i(4));
CORRADE_COMPARE_AS(imageData, Containers::arrayView(SubData2DComplete), CORRADE_COMPARE_AS(Containers::arrayCast<UnsignedByte>(imageData),
Containers::arrayView(SubData2DComplete),
TestSuite::Compare::Container); TestSuite::Compare::Container);
#endif #endif
} }
@ -1193,12 +1195,12 @@ void TextureArrayGLTest::subImage2DQueryBuffer() {
BufferImage3D image = texture.subImage(0, Range3Di::fromSize(Vector3i{1}, Vector3i{2}), BufferImage3D image = texture.subImage(0, Range3Di::fromSize(Vector3i{1}, Vector3i{2}),
{PixelStorage2DData[testCaseInstanceId()].storage, {PixelStorage2DData[testCaseInstanceId()].storage,
PixelFormat::RGBA, PixelType::UnsignedByte}, BufferUsage::StaticRead); PixelFormat::RGBA, PixelType::UnsignedByte}, BufferUsage::StaticRead);
const auto imageData = image.buffer().data<UnsignedByte>(); const auto imageData = image.buffer().data();
MAGNUM_VERIFY_NO_ERROR(); MAGNUM_VERIFY_NO_ERROR();
CORRADE_COMPARE(image.size(), Vector3i{2}); CORRADE_COMPARE(image.size(), Vector3i{2});
CORRADE_COMPARE_AS(imageData.suffix(PixelStorage2DData[testCaseInstanceId()].offset), CORRADE_COMPARE_AS(Containers::arrayCast<UnsignedByte>(imageData).suffix(PixelStorage2DData[testCaseInstanceId()].offset),
PixelStorage2DData[testCaseInstanceId()].data, PixelStorage2DData[testCaseInstanceId()].data,
TestSuite::Compare::Container); TestSuite::Compare::Container);
} }
@ -1279,12 +1281,12 @@ void TextureArrayGLTest::compressedImage2DBuffer() {
#ifndef MAGNUM_TARGET_GLES #ifndef MAGNUM_TARGET_GLES
CompressedBufferImage3D image = texture.compressedImage(0, {CompressedPixelStorage2DData[testCaseInstanceId()].storage}, BufferUsage::StaticRead); CompressedBufferImage3D image = texture.compressedImage(0, {CompressedPixelStorage2DData[testCaseInstanceId()].storage}, BufferUsage::StaticRead);
const auto imageData = image.buffer().data<UnsignedByte>(); const auto imageData = image.buffer().data();
MAGNUM_VERIFY_NO_ERROR(); MAGNUM_VERIFY_NO_ERROR();
CORRADE_COMPARE(image.size(), (Vector3i{4, 4, 2})); CORRADE_COMPARE(image.size(), (Vector3i{4, 4, 2}));
CORRADE_COMPARE_AS(imageData.suffix(CompressedPixelStorage2DData[testCaseInstanceId()].offset), CORRADE_COMPARE_AS(Containers::arrayCast<UnsignedByte>(imageData).suffix(CompressedPixelStorage2DData[testCaseInstanceId()].offset),
CompressedPixelStorage2DData[testCaseInstanceId()].data, CompressedPixelStorage2DData[testCaseInstanceId()].data,
TestSuite::Compare::Container); TestSuite::Compare::Container);
#endif #endif
@ -1411,12 +1413,12 @@ void TextureArrayGLTest::compressedSubImage2DBuffer() {
#ifndef MAGNUM_TARGET_GLES #ifndef MAGNUM_TARGET_GLES
CompressedBufferImage3D image = texture.compressedImage(0, {}, BufferUsage::StaticRead); CompressedBufferImage3D image = texture.compressedImage(0, {}, BufferUsage::StaticRead);
const auto imageData = image.buffer().data<UnsignedByte>(); const auto imageData = image.buffer().data();
MAGNUM_VERIFY_NO_ERROR(); MAGNUM_VERIFY_NO_ERROR();
CORRADE_COMPARE(image.size(), (Vector3i{12, 4, 4})); CORRADE_COMPARE(image.size(), (Vector3i{12, 4, 4}));
CORRADE_COMPARE_AS(imageData, CORRADE_COMPARE_AS(Containers::arrayCast<UnsignedByte>(imageData),
Containers::arrayView(CompressedSubData2DComplete), Containers::arrayView(CompressedSubData2DComplete),
TestSuite::Compare::Container); TestSuite::Compare::Container);
#endif #endif
@ -1480,12 +1482,12 @@ void TextureArrayGLTest::compressedSubImage2DQueryBuffer() {
CompressedPixelStorage2DData[testCaseInstanceId()].storage CompressedPixelStorage2DData[testCaseInstanceId()].storage
#endif #endif
}, BufferUsage::StaticRead); }, BufferUsage::StaticRead);
const auto imageData = image.buffer().data<UnsignedByte>(); const auto imageData = image.buffer().data();
MAGNUM_VERIFY_NO_ERROR(); MAGNUM_VERIFY_NO_ERROR();
CORRADE_COMPARE(image.size(), (Vector3i{4, 4, 2})); CORRADE_COMPARE(image.size(), (Vector3i{4, 4, 2}));
CORRADE_COMPARE_AS(imageData.suffix(CompressedPixelStorage2DData[testCaseInstanceId()].offset), CORRADE_COMPARE_AS(Containers::arrayCast<UnsignedByte>(imageData).suffix(CompressedPixelStorage2DData[testCaseInstanceId()].offset),
CompressedPixelStorage2DData[testCaseInstanceId()].data, CompressedPixelStorage2DData[testCaseInstanceId()].data,
TestSuite::Compare::Container); TestSuite::Compare::Container);
} }

61
src/Magnum/Test/TextureGLTest.cpp

@ -1245,12 +1245,12 @@ void TextureGLTest::image1DBuffer() {
BufferImage1D image = texture.image(0, BufferImage1D image = texture.image(0,
{PixelStorage1DData[testCaseInstanceId()].storage, PixelFormat::RGBA, PixelType::UnsignedByte}, BufferUsage::StaticDraw); {PixelStorage1DData[testCaseInstanceId()].storage, PixelFormat::RGBA, PixelType::UnsignedByte}, BufferUsage::StaticDraw);
const auto imageData = image.buffer().data<UnsignedByte>(); const auto imageData = image.buffer().data();
MAGNUM_VERIFY_NO_ERROR(); MAGNUM_VERIFY_NO_ERROR();
CORRADE_COMPARE(image.size(), 2); CORRADE_COMPARE(image.size(), 2);
CORRADE_COMPARE_AS(imageData.suffix(PixelStorage1DData[testCaseInstanceId()].offset), CORRADE_COMPARE_AS(Containers::arrayCast<UnsignedByte>(imageData).suffix(PixelStorage1DData[testCaseInstanceId()].offset),
PixelStorage1DData[testCaseInstanceId()].data, PixelStorage1DData[testCaseInstanceId()].data,
TestSuite::Compare::Container); TestSuite::Compare::Container);
} }
@ -1300,12 +1300,12 @@ void TextureGLTest::subImage1DBuffer() {
MAGNUM_VERIFY_NO_ERROR(); MAGNUM_VERIFY_NO_ERROR();
BufferImage1D image = texture.image(0, {PixelFormat::RGBA, PixelType::UnsignedByte}, BufferUsage::StaticRead); BufferImage1D image = texture.image(0, {PixelFormat::RGBA, PixelType::UnsignedByte}, BufferUsage::StaticRead);
const auto imageData = image.buffer().data<UnsignedByte>(); const auto imageData = image.buffer().data();
MAGNUM_VERIFY_NO_ERROR(); MAGNUM_VERIFY_NO_ERROR();
CORRADE_COMPARE(image.size(), 4); CORRADE_COMPARE(image.size(), 4);
CORRADE_COMPARE_AS(imageData, Containers::arrayView(SubData1DComplete), CORRADE_COMPARE_AS(Containers::arrayCast<UnsignedByte>(imageData), Containers::arrayView(SubData1DComplete),
TestSuite::Compare::Container); TestSuite::Compare::Container);
} }
@ -1348,12 +1348,12 @@ void TextureGLTest::subImage1DQueryBuffer() {
BufferImage1D image = texture.subImage(0, Range1Di::fromSize(1, 2), BufferImage1D image = texture.subImage(0, Range1Di::fromSize(1, 2),
{PixelStorage1DData[testCaseInstanceId()].storage, {PixelStorage1DData[testCaseInstanceId()].storage,
PixelFormat::RGBA, PixelType::UnsignedByte}, BufferUsage::StaticRead); PixelFormat::RGBA, PixelType::UnsignedByte}, BufferUsage::StaticRead);
const auto imageData = image.buffer().data<UnsignedByte>(); const auto imageData = image.buffer().data();
MAGNUM_VERIFY_NO_ERROR(); MAGNUM_VERIFY_NO_ERROR();
CORRADE_COMPARE(image.size(), 2); CORRADE_COMPARE(image.size(), 2);
CORRADE_COMPARE_AS(imageData.suffix(PixelStorage1DData[testCaseInstanceId()].offset), CORRADE_COMPARE_AS(Containers::arrayCast<UnsignedByte>(imageData).suffix(PixelStorage1DData[testCaseInstanceId()].offset),
PixelStorage1DData[testCaseInstanceId()].data, PixelStorage1DData[testCaseInstanceId()].data,
TestSuite::Compare::Container); TestSuite::Compare::Container);
} }
@ -1431,12 +1431,12 @@ void TextureGLTest::image2DBuffer() {
BufferImage2D image = texture.image(0, BufferImage2D image = texture.image(0,
{PixelStorage2DData[testCaseInstanceId()].storage, {PixelStorage2DData[testCaseInstanceId()].storage,
PixelFormat::RGBA, PixelType::UnsignedByte}, BufferUsage::StaticRead); PixelFormat::RGBA, PixelType::UnsignedByte}, BufferUsage::StaticRead);
const auto imageData = image.buffer().data<UnsignedByte>(); const auto imageData = image.buffer().data();
MAGNUM_VERIFY_NO_ERROR(); MAGNUM_VERIFY_NO_ERROR();
CORRADE_COMPARE(image.size(), Vector2i(2)); CORRADE_COMPARE(image.size(), Vector2i(2));
CORRADE_COMPARE_AS(imageData.suffix(PixelStorage2DData[testCaseInstanceId()].offset), CORRADE_COMPARE_AS(Containers::arrayCast<UnsignedByte>(imageData).suffix(PixelStorage2DData[testCaseInstanceId()].offset),
PixelStorage2DData[testCaseInstanceId()].data, PixelStorage2DData[testCaseInstanceId()].data,
TestSuite::Compare::Container); TestSuite::Compare::Container);
#endif #endif
@ -1501,12 +1501,12 @@ void TextureGLTest::subImage2DBuffer() {
/** @todo How to test this on ES? */ /** @todo How to test this on ES? */
#ifndef MAGNUM_TARGET_GLES #ifndef MAGNUM_TARGET_GLES
BufferImage2D image = texture.image(0, {PixelFormat::RGBA, PixelType::UnsignedByte}, BufferUsage::StaticRead); BufferImage2D image = texture.image(0, {PixelFormat::RGBA, PixelType::UnsignedByte}, BufferUsage::StaticRead);
const auto imageData = image.buffer().data<UnsignedByte>(); const auto imageData = image.buffer().data();
MAGNUM_VERIFY_NO_ERROR(); MAGNUM_VERIFY_NO_ERROR();
CORRADE_COMPARE(image.size(), Vector2i(4)); CORRADE_COMPARE(image.size(), Vector2i(4));
CORRADE_COMPARE_AS(imageData, Containers::arrayView(SubData2DComplete), CORRADE_COMPARE_AS(Containers::arrayCast<UnsignedByte>(imageData), Containers::arrayView(SubData2DComplete),
TestSuite::Compare::Container); TestSuite::Compare::Container);
#endif #endif
} }
@ -1552,12 +1552,12 @@ void TextureGLTest::subImage2DQueryBuffer() {
BufferImage2D image = texture.subImage(0, Range2Di::fromSize(Vector2i{1}, Vector2i{2}), BufferImage2D image = texture.subImage(0, Range2Di::fromSize(Vector2i{1}, Vector2i{2}),
{PixelStorage2DData[testCaseInstanceId()].storage, {PixelStorage2DData[testCaseInstanceId()].storage,
PixelFormat::RGBA, PixelType::UnsignedByte}, BufferUsage::StaticRead); PixelFormat::RGBA, PixelType::UnsignedByte}, BufferUsage::StaticRead);
const auto imageData = image.buffer().data<UnsignedByte>(); const auto imageData = image.buffer().data();
MAGNUM_VERIFY_NO_ERROR(); MAGNUM_VERIFY_NO_ERROR();
CORRADE_COMPARE(image.size(), Vector2i{2}); CORRADE_COMPARE(image.size(), Vector2i{2});
CORRADE_COMPARE_AS(imageData.suffix(PixelStorage2DData[testCaseInstanceId()].offset), CORRADE_COMPARE_AS(Containers::arrayCast<UnsignedByte>(imageData).suffix(PixelStorage2DData[testCaseInstanceId()].offset),
PixelStorage2DData[testCaseInstanceId()].data, PixelStorage2DData[testCaseInstanceId()].data,
TestSuite::Compare::Container); TestSuite::Compare::Container);
} }
@ -1632,12 +1632,12 @@ void TextureGLTest::compressedImage2DBuffer() {
#ifndef MAGNUM_TARGET_GLES #ifndef MAGNUM_TARGET_GLES
CompressedBufferImage2D image = texture.compressedImage(0, {CompressedPixelStorage2DData[testCaseInstanceId()].storage}, BufferUsage::StaticRead); CompressedBufferImage2D image = texture.compressedImage(0, {CompressedPixelStorage2DData[testCaseInstanceId()].storage}, BufferUsage::StaticRead);
const auto imageData = image.buffer().data<UnsignedByte>(); const auto imageData = image.buffer().data();
MAGNUM_VERIFY_NO_ERROR(); MAGNUM_VERIFY_NO_ERROR();
CORRADE_COMPARE(image.size(), Vector2i{4}); CORRADE_COMPARE(image.size(), Vector2i{4});
CORRADE_COMPARE_AS(imageData.suffix(CompressedPixelStorage2DData[testCaseInstanceId()].offset), CORRADE_COMPARE_AS(Containers::arrayCast<UnsignedByte>(imageData).suffix(CompressedPixelStorage2DData[testCaseInstanceId()].offset),
CompressedPixelStorage2DData[testCaseInstanceId()].data, CompressedPixelStorage2DData[testCaseInstanceId()].data,
TestSuite::Compare::Container); TestSuite::Compare::Container);
#endif #endif
@ -1731,12 +1731,12 @@ void TextureGLTest::compressedSubImage2DBuffer() {
#ifndef MAGNUM_TARGET_GLES #ifndef MAGNUM_TARGET_GLES
CompressedBufferImage2D image = texture.compressedImage(0, {}, BufferUsage::StaticRead); CompressedBufferImage2D image = texture.compressedImage(0, {}, BufferUsage::StaticRead);
const auto imageData = image.buffer().data<UnsignedByte>(); const auto imageData = image.buffer().data();
MAGNUM_VERIFY_NO_ERROR(); MAGNUM_VERIFY_NO_ERROR();
CORRADE_COMPARE(image.size(), (Vector2i{12, 4})); CORRADE_COMPARE(image.size(), (Vector2i{12, 4}));
CORRADE_COMPARE_AS(imageData, CORRADE_COMPARE_AS(Containers::arrayCast<UnsignedByte>(imageData),
Containers::arrayView(CompressedSubData2DComplete), Containers::arrayView(CompressedSubData2DComplete),
TestSuite::Compare::Container); TestSuite::Compare::Container);
#endif #endif
@ -1793,12 +1793,12 @@ void TextureGLTest::compressedSubImage2DQueryBuffer() {
CompressedBufferImage2D image = texture.compressedSubImage(0, Range2Di::fromSize({4, 0}, Vector2i{4}), CompressedBufferImage2D image = texture.compressedSubImage(0, Range2Di::fromSize({4, 0}, Vector2i{4}),
{CompressedPixelStorage2DData[testCaseInstanceId()].storage}, BufferUsage::StaticRead); {CompressedPixelStorage2DData[testCaseInstanceId()].storage}, BufferUsage::StaticRead);
const auto imageData = image.buffer().data<UnsignedByte>(); const auto imageData = image.buffer().data();
MAGNUM_VERIFY_NO_ERROR(); MAGNUM_VERIFY_NO_ERROR();
CORRADE_COMPARE(image.size(), Vector2i{4}); CORRADE_COMPARE(image.size(), Vector2i{4});
CORRADE_COMPARE_AS(imageData.suffix(CompressedPixelStorage2DData[testCaseInstanceId()].offset), CORRADE_COMPARE_AS(Containers::arrayCast<UnsignedByte>(imageData).suffix(CompressedPixelStorage2DData[testCaseInstanceId()].offset),
CompressedPixelStorage2DData[testCaseInstanceId()].data, CompressedPixelStorage2DData[testCaseInstanceId()].data,
TestSuite::Compare::Container); TestSuite::Compare::Container);
} }
@ -1854,12 +1854,12 @@ void TextureGLTest::image3DBuffer() {
BufferImage3D image = texture.image(0, BufferImage3D image = texture.image(0,
{PixelStorage3DData[testCaseInstanceId()].storage, PixelFormat::RGBA, PixelType::UnsignedByte}, {PixelStorage3DData[testCaseInstanceId()].storage, PixelFormat::RGBA, PixelType::UnsignedByte},
BufferUsage::StaticRead); BufferUsage::StaticRead);
const auto imageData = image.buffer().data<UnsignedByte>(); const auto imageData = image.buffer().data();
MAGNUM_VERIFY_NO_ERROR(); MAGNUM_VERIFY_NO_ERROR();
CORRADE_COMPARE(image.size(), Vector3i(2)); CORRADE_COMPARE(image.size(), Vector3i(2));
CORRADE_COMPARE_AS(imageData.suffix(PixelStorage3DData[testCaseInstanceId()].offset), CORRADE_COMPARE_AS(Containers::arrayCast<UnsignedByte>(imageData).suffix(PixelStorage3DData[testCaseInstanceId()].offset),
PixelStorage3DData[testCaseInstanceId()].data, PixelStorage3DData[testCaseInstanceId()].data,
TestSuite::Compare::Container); TestSuite::Compare::Container);
#endif #endif
@ -1942,12 +1942,13 @@ void TextureGLTest::subImage3DBuffer() {
/** @todo How to test this on ES? */ /** @todo How to test this on ES? */
#ifndef MAGNUM_TARGET_GLES #ifndef MAGNUM_TARGET_GLES
BufferImage3D image = texture.image(0, {PixelFormat::RGBA, PixelType::UnsignedByte}, BufferUsage::StaticRead); BufferImage3D image = texture.image(0, {PixelFormat::RGBA, PixelType::UnsignedByte}, BufferUsage::StaticRead);
const auto imageData = image.buffer().data<UnsignedByte>(); const auto imageData = image.buffer().data();
MAGNUM_VERIFY_NO_ERROR(); MAGNUM_VERIFY_NO_ERROR();
CORRADE_COMPARE(image.size(), Vector3i(4)); CORRADE_COMPARE(image.size(), Vector3i(4));
CORRADE_COMPARE_AS(imageData, Containers::arrayView(SubData3DComplete), CORRADE_COMPARE_AS(Containers::arrayCast<UnsignedByte>(imageData),
Containers::arrayView(SubData3DComplete),
TestSuite::Compare::Container); TestSuite::Compare::Container);
#endif #endif
} }
@ -1993,12 +1994,12 @@ void TextureGLTest::subImage3DQueryBuffer() {
BufferImage3D image = texture.subImage(0, Range3Di::fromSize(Vector3i{1}, Vector3i{2}), BufferImage3D image = texture.subImage(0, Range3Di::fromSize(Vector3i{1}, Vector3i{2}),
{PixelStorage3DData[testCaseInstanceId()].storage, {PixelStorage3DData[testCaseInstanceId()].storage,
PixelFormat::RGBA, PixelType::UnsignedByte}, BufferUsage::StaticRead); PixelFormat::RGBA, PixelType::UnsignedByte}, BufferUsage::StaticRead);
const auto imageData = image.buffer().data<UnsignedByte>(); const auto imageData = image.buffer().data();
MAGNUM_VERIFY_NO_ERROR(); MAGNUM_VERIFY_NO_ERROR();
CORRADE_COMPARE(image.size(), Vector3i{2}); CORRADE_COMPARE(image.size(), Vector3i{2});
CORRADE_COMPARE_AS(imageData.suffix(PixelStorage3DData[testCaseInstanceId()].offset), CORRADE_COMPARE_AS(Containers::arrayCast<UnsignedByte>(imageData).suffix(PixelStorage3DData[testCaseInstanceId()].offset),
PixelStorage3DData[testCaseInstanceId()].data, PixelStorage3DData[testCaseInstanceId()].data,
TestSuite::Compare::Container); TestSuite::Compare::Container);
} }
@ -2058,12 +2059,12 @@ void TextureGLTest::compressedImage3DBuffer() {
MAGNUM_VERIFY_NO_ERROR(); MAGNUM_VERIFY_NO_ERROR();
CompressedBufferImage3D image = texture.compressedImage(0, {CompressedPixelStorage3DData[testCaseInstanceId()].storage}, BufferUsage::StaticRead); CompressedBufferImage3D image = texture.compressedImage(0, {CompressedPixelStorage3DData[testCaseInstanceId()].storage}, BufferUsage::StaticRead);
const auto imageData = image.buffer().data<UnsignedByte>(); const auto imageData = image.buffer().data();
MAGNUM_VERIFY_NO_ERROR(); MAGNUM_VERIFY_NO_ERROR();
CORRADE_COMPARE(image.size(), Vector3i{4}); CORRADE_COMPARE(image.size(), Vector3i{4});
CORRADE_COMPARE_AS(imageData.suffix(CompressedPixelStorage3DData[testCaseInstanceId()].offset), CORRADE_COMPARE_AS(Containers::arrayCast<UnsignedByte>(imageData).suffix(CompressedPixelStorage3DData[testCaseInstanceId()].offset),
CompressedPixelStorage3DData[testCaseInstanceId()].data, CompressedPixelStorage3DData[testCaseInstanceId()].data,
TestSuite::Compare::Container); TestSuite::Compare::Container);
#endif #endif
@ -2175,7 +2176,7 @@ void TextureGLTest::compressedSubImage3DBuffer() {
MAGNUM_VERIFY_NO_ERROR(); MAGNUM_VERIFY_NO_ERROR();
CompressedBufferImage3D image = texture.compressedImage(0, {}, BufferUsage::StaticRead); CompressedBufferImage3D image = texture.compressedImage(0, {}, BufferUsage::StaticRead);
const auto imageData = image.buffer().data<UnsignedByte>(); const auto imageData = image.buffer().data();
MAGNUM_VERIFY_NO_ERROR(); MAGNUM_VERIFY_NO_ERROR();
@ -2185,7 +2186,7 @@ void TextureGLTest::compressedSubImage3DBuffer() {
CORRADE_EXPECT_FAIL_IF(CompressedPixelStorage3DData[testCaseInstanceId()].storage == CompressedPixelStorage{} && (Context::current().detectedDriver() & Context::DetectedDriver::NVidia), CORRADE_EXPECT_FAIL_IF(CompressedPixelStorage3DData[testCaseInstanceId()].storage == CompressedPixelStorage{} && (Context::current().detectedDriver() & Context::DetectedDriver::NVidia),
"Default compressed pixel storage behaves weirdly with BPTC compression on NVidia."); "Default compressed pixel storage behaves weirdly with BPTC compression on NVidia.");
CORRADE_COMPARE_AS(imageData, CORRADE_COMPARE_AS(Containers::arrayCast<UnsignedByte>(imageData),
Containers::arrayView(CompressedSubData3DComplete), Containers::arrayView(CompressedSubData3DComplete),
TestSuite::Compare::Container); TestSuite::Compare::Container);
} }
@ -2249,7 +2250,7 @@ void TextureGLTest::compressedSubImage3DQueryBuffer() {
CompressedBufferImage3D image = texture.compressedSubImage(0, Range3Di::fromSize({4, 0, 0}, Vector3i{4}), CompressedBufferImage3D image = texture.compressedSubImage(0, Range3Di::fromSize({4, 0, 0}, Vector3i{4}),
{CompressedPixelStorage3DData[testCaseInstanceId()].storage}, BufferUsage::StaticRead); {CompressedPixelStorage3DData[testCaseInstanceId()].storage}, BufferUsage::StaticRead);
const auto imageData = image.buffer().data<UnsignedByte>(); const auto imageData = image.buffer().data();
MAGNUM_VERIFY_NO_ERROR(); MAGNUM_VERIFY_NO_ERROR();
@ -2259,7 +2260,7 @@ void TextureGLTest::compressedSubImage3DQueryBuffer() {
CORRADE_EXPECT_FAIL_IF(CompressedPixelStorage3DData[testCaseInstanceId()].storage == CompressedPixelStorage{} && (Context::current().detectedDriver() & Context::DetectedDriver::NVidia), CORRADE_EXPECT_FAIL_IF(CompressedPixelStorage3DData[testCaseInstanceId()].storage == CompressedPixelStorage{} && (Context::current().detectedDriver() & Context::DetectedDriver::NVidia),
"Default compressed pixel storage behaves weirdly with BPTC compression on NVidia."); "Default compressed pixel storage behaves weirdly with BPTC compression on NVidia.");
CORRADE_COMPARE_AS(imageData.suffix(CompressedPixelStorage3DData[testCaseInstanceId()].offset), CORRADE_COMPARE_AS(Containers::arrayCast<UnsignedByte>(imageData).suffix(CompressedPixelStorage3DData[testCaseInstanceId()].offset),
CompressedPixelStorage3DData[testCaseInstanceId()].data, CompressedPixelStorage3DData[testCaseInstanceId()].data,
TestSuite::Compare::Container); TestSuite::Compare::Container);
} }

14
src/Magnum/Test/TransformFeedbackGLTest.cpp

@ -282,7 +282,7 @@ void TransformFeedbackGLTest::attachBase() {
MAGNUM_VERIFY_NO_ERROR(); MAGNUM_VERIFY_NO_ERROR();
Vector2* data = output.map<Vector2>(0, 2*sizeof(Vector2), Buffer::MapFlag::Read); auto data = Containers::arrayCast<const Vector2>(output.mapRead(0, 2*sizeof(Vector2)));
CORRADE_COMPARE(data[0], Vector2(1.0f, -1.0f)); CORRADE_COMPARE(data[0], Vector2(1.0f, -1.0f));
CORRADE_COMPARE(data[1], Vector2(0.0f, 0.0f)); CORRADE_COMPARE(data[1], Vector2(0.0f, 0.0f));
output.unmap(); output.unmap();
@ -325,7 +325,7 @@ void TransformFeedbackGLTest::attachRange() {
MAGNUM_VERIFY_NO_ERROR(); MAGNUM_VERIFY_NO_ERROR();
Vector2* data = output.map<Vector2>(256, 2*sizeof(Vector2), Buffer::MapFlag::Read); auto data = Containers::arrayCast<const Vector2>(output.mapRead(256, 2*sizeof(Vector2)));
CORRADE_COMPARE(data[0], Vector2(1.0f, -1.0f)); CORRADE_COMPARE(data[0], Vector2(1.0f, -1.0f));
CORRADE_COMPARE(data[1], Vector2(0.0f, 0.0f)); CORRADE_COMPARE(data[1], Vector2(0.0f, 0.0f));
output.unmap(); output.unmap();
@ -415,12 +415,12 @@ void TransformFeedbackGLTest::attachBases() {
MAGNUM_VERIFY_NO_ERROR(); MAGNUM_VERIFY_NO_ERROR();
Vector2* data1 = output1.map<Vector2>(0, 2*sizeof(Vector2), Buffer::MapFlag::Read); auto data1 = Containers::arrayCast<const Vector2>(output1.mapRead(0, 2*sizeof(Vector2)));
CORRADE_COMPARE(data1[0], Vector2(1.0f, -1.0f)); CORRADE_COMPARE(data1[0], Vector2(1.0f, -1.0f));
CORRADE_COMPARE(data1[1], Vector2(0.0f, 0.0f)); CORRADE_COMPARE(data1[1], Vector2(0.0f, 0.0f));
output1.unmap(); output1.unmap();
Float* data2 = output2.map<Float>(0, 2*sizeof(Float), Buffer::MapFlag::Read); auto data2 = Containers::arrayCast<const Float>(output2.mapRead(0, 2*sizeof(Float)));
CORRADE_COMPARE(data2[0], 0.0f); CORRADE_COMPARE(data2[0], 0.0f);
CORRADE_COMPARE(data2[1], -2.0f); CORRADE_COMPARE(data2[1], -2.0f);
output2.unmap(); output2.unmap();
@ -467,12 +467,12 @@ void TransformFeedbackGLTest::attachRanges() {
MAGNUM_VERIFY_NO_ERROR(); MAGNUM_VERIFY_NO_ERROR();
Vector2* data1 = output1.map<Vector2>(256, 2*sizeof(Vector2), Buffer::MapFlag::Read); auto data1 = Containers::arrayCast<const Vector2>(output1.mapRead(256, 2*sizeof(Vector2)));
CORRADE_COMPARE(data1[0], Vector2(1.0f, -1.0f)); CORRADE_COMPARE(data1[0], Vector2(1.0f, -1.0f));
CORRADE_COMPARE(data1[1], Vector2(0.0f, 0.0f)); CORRADE_COMPARE(data1[1], Vector2(0.0f, 0.0f));
output1.unmap(); output1.unmap();
Float* data2 = output2.map<Float>(512, 2*sizeof(Float), Buffer::MapFlag::Read); auto data2 = Containers::arrayCast<const Float>(output2.mapRead(512, 2*sizeof(Float)));
CORRADE_COMPARE(data2[0], 0.0f); CORRADE_COMPARE(data2[0], 0.0f);
CORRADE_COMPARE(data2[1], -2.0f); CORRADE_COMPARE(data2[1], -2.0f);
output2.unmap(); output2.unmap();
@ -542,7 +542,7 @@ void TransformFeedbackGLTest::interleaved() {
MAGNUM_VERIFY_NO_ERROR(); MAGNUM_VERIFY_NO_ERROR();
Vector2* data = output.map<Vector2>(0, 4*sizeof(Vector2), Buffer::MapFlag::Read); auto data = Containers::arrayCast<const Vector2>(output.mapRead(0, 4*sizeof(Vector2)));
CORRADE_COMPARE(data[0], Vector2(1.0f, -1.0f)); CORRADE_COMPARE(data[0], Vector2(1.0f, -1.0f));
CORRADE_COMPARE(data[1].y(), 5.0f); CORRADE_COMPARE(data[1].y(), 5.0f);
CORRADE_COMPARE(data[2], Vector2(0.0f, 0.0f)); CORRADE_COMPARE(data[2], Vector2(0.0f, 0.0f));

2
src/Magnum/Text/Renderer.cpp

@ -25,6 +25,8 @@
#include "Renderer.h" #include "Renderer.h"
#include <Corrade/Containers/Array.h>
#include "Magnum/Context.h" #include "Magnum/Context.h"
#include "Magnum/Extensions.h" #include "Magnum/Extensions.h"
#include "Magnum/Mesh.h" #include "Magnum/Mesh.h"

4
src/Magnum/Text/Renderer.h

@ -41,6 +41,10 @@
#include "Magnum/Text/Alignment.h" #include "Magnum/Text/Alignment.h"
#include "Magnum/Text/visibility.h" #include "Magnum/Text/visibility.h"
#ifdef CORRADE_TARGET_EMSCRIPTEN
#include <Corrade/Containers/Array.h>
#endif
namespace Magnum { namespace Text { namespace Magnum { namespace Text {
/** /**

133
src/Magnum/Text/Test/RendererGLTest.cpp

@ -23,6 +23,9 @@
DEALINGS IN THE SOFTWARE. DEALINGS IN THE SOFTWARE.
*/ */
#include <Corrade/Containers/Array.h>
#include <Corrade/TestSuite/Compare/Container.h>
#include "Magnum/Context.h" #include "Magnum/Context.h"
#include "Magnum/Extensions.h" #include "Magnum/Extensions.h"
#include "Magnum/OpenGLTester.h" #include "Magnum/OpenGLTester.h"
@ -190,32 +193,32 @@ void RendererGLTest::renderMesh() {
/** @todo How to verify this on ES? */ /** @todo How to verify this on ES? */
#ifndef MAGNUM_TARGET_GLES #ifndef MAGNUM_TARGET_GLES
/* Vertex buffer contents */ /* Vertex buffer contents */
const Containers::Array<Float> vertices = vertexBuffer.data<Float>(); Containers::Array<char> vertices = vertexBuffer.data();
CORRADE_COMPARE(vertices.size(), 3*4*(2 + 2)); CORRADE_COMPARE_AS(Containers::arrayCast<const Float>(vertices),
CORRADE_COMPARE(std::vector<Float>(vertices.begin(), vertices.end()), (std::vector<Float>{ (Containers::Array<Float>{Containers::InPlaceInit, {
0.0f + offset.x(), 0.5f + offset.y(), 0.0f, 10.0f, 0.0f + offset.x(), 0.5f + offset.y(), 0.0f, 10.0f,
0.0f + offset.x(), 0.0f + offset.y(), 0.0f, 0.0f, 0.0f + offset.x(), 0.0f + offset.y(), 0.0f, 0.0f,
0.75f + offset.x(), 0.5f + offset.y(), 6.0f, 10.0f, 0.75f + offset.x(), 0.5f + offset.y(), 6.0f, 10.0f,
0.75f + offset.x(), 0.0f + offset.y(), 6.0f, 0.0f, 0.75f + offset.x(), 0.0f + offset.y(), 6.0f, 0.0f,
1.0f + offset.x(), 0.75f + offset.y(), 6.0f, 10.0f, 1.0f + offset.x(), 0.75f + offset.y(), 6.0f, 10.0f,
1.0f + offset.x(), -0.25f + offset.y(), 6.0f, 0.0f, 1.0f + offset.x(), -0.25f + offset.y(), 6.0f, 0.0f,
2.5f + offset.x(), 0.75f + offset.y(), 12.0f, 10.0f, 2.5f + offset.x(), 0.75f + offset.y(), 12.0f, 10.0f,
2.5f + offset.x(), -0.25f + offset.y(), 12.0f, 0.0f, 2.5f + offset.x(), -0.25f + offset.y(), 12.0f, 0.0f,
2.75f + offset.x(), 1.0f + offset.y(), 12.0f, 10.0f, 2.75f + offset.x(), 1.0f + offset.y(), 12.0f, 10.0f,
2.75f + offset.x(), -0.5f + offset.y(), 12.0f, 0.0f, 2.75f + offset.x(), -0.5f + offset.y(), 12.0f, 0.0f,
5.0f + offset.x(), 1.0f + offset.y(), 18.0f, 10.0f, 5.0f + offset.x(), 1.0f + offset.y(), 18.0f, 10.0f,
5.0f + offset.x(), -0.5f + offset.y(), 18.0f, 0.0f 5.0f + offset.x(), -0.5f + offset.y(), 18.0f, 0.0f
})); }}), TestSuite::Compare::Container);
const Containers::Array<UnsignedByte> indices = indexBuffer.data<UnsignedByte>(); Containers::Array<char> indices = indexBuffer.data();
CORRADE_COMPARE(indices.size(), 3*6); CORRADE_COMPARE_AS(Containers::arrayCast<const UnsignedByte>(indices),
CORRADE_COMPARE(std::vector<UnsignedByte>(indices.begin(), indices.end()), (std::vector<UnsignedByte>{ (Containers::Array<UnsignedByte>{Containers::InPlaceInit, {
0, 1, 2, 1, 3, 2, 0, 1, 2, 1, 3, 2,
4, 5, 6, 5, 7, 6, 4, 5, 6, 5, 7, 6,
8, 9, 10, 9, 11, 10 8, 9, 10, 9, 11, 10
})); }}), TestSuite::Compare::Container);
#endif #endif
} }
@ -232,27 +235,29 @@ void RendererGLTest::renderMeshIndexType() {
std::tie(mesh, std::ignore) = Text::Renderer3D::render(font, nullGlyphCache, std::tie(mesh, std::ignore) = Text::Renderer3D::render(font, nullGlyphCache,
1.0f, std::string(64, 'a'), vertexBuffer, indexBuffer, BufferUsage::StaticDraw); 1.0f, std::string(64, 'a'), vertexBuffer, indexBuffer, BufferUsage::StaticDraw);
MAGNUM_VERIFY_NO_ERROR(); MAGNUM_VERIFY_NO_ERROR();
Containers::Array<UnsignedByte> indicesByte = indexBuffer.data<UnsignedByte>(); Containers::Array<char> indicesByte = indexBuffer.data();
CORRADE_COMPARE(vertexBuffer.size(), 256*(2 + 2)*4); CORRADE_COMPARE(vertexBuffer.size(), 256*(2 + 2)*4);
CORRADE_COMPARE(indicesByte.size(), 64*6); CORRADE_COMPARE(indicesByte.size(), 64*6);
CORRADE_COMPARE(std::vector<UnsignedByte>(indicesByte.begin(), indicesByte.begin()+18), (std::vector<UnsignedByte>{ CORRADE_COMPARE_AS(Containers::arrayCast<const UnsignedByte>(indicesByte).prefix(18),
0, 1, 2, 1, 3, 2, (Containers::Array<UnsignedByte>{Containers::InPlaceInit, {
4, 5, 6, 5, 7, 6, 0, 1, 2, 1, 3, 2,
8, 9, 10, 9, 11, 10 4, 5, 6, 5, 7, 6,
})); 8, 9, 10, 9, 11, 10
}}), TestSuite::Compare::Container);
/* 16-bit indices (260 vertices) */ /* 16-bit indices (260 vertices) */
std::tie(mesh, std::ignore) = Text::Renderer3D::render(font, nullGlyphCache, std::tie(mesh, std::ignore) = Text::Renderer3D::render(font, nullGlyphCache,
1.0f, std::string(65, 'a'), vertexBuffer, indexBuffer, BufferUsage::StaticDraw); 1.0f, std::string(65, 'a'), vertexBuffer, indexBuffer, BufferUsage::StaticDraw);
MAGNUM_VERIFY_NO_ERROR(); MAGNUM_VERIFY_NO_ERROR();
Containers::Array<UnsignedShort> indicesShort = indexBuffer.data<UnsignedShort>(); Containers::Array<char> indicesShort = indexBuffer.data();
CORRADE_COMPARE(vertexBuffer.size(), 260*(2 + 2)*4); CORRADE_COMPARE(vertexBuffer.size(), 260*(2 + 2)*4);
CORRADE_COMPARE(indicesShort.size(), 65*6); CORRADE_COMPARE(indicesShort.size(), 65*6*2);
CORRADE_COMPARE(std::vector<UnsignedShort>(indicesShort.begin(), indicesShort.begin()+18), (std::vector<UnsignedShort>{ CORRADE_COMPARE_AS(Containers::arrayCast<const UnsignedShort>(indicesShort).prefix(18),
0, 1, 2, 1, 3, 2, (Containers::Array<UnsignedShort>{Containers::InPlaceInit, {
4, 5, 6, 5, 7, 6, 0, 1, 2, 1, 3, 2,
8, 9, 10, 9, 11, 10 4, 5, 6, 5, 7, 6,
})); 8, 9, 10, 9, 11, 10
}}), TestSuite::Compare::Container);
#else #else
CORRADE_SKIP("Can't verify buffer contents on OpenGL ES."); CORRADE_SKIP("Can't verify buffer contents on OpenGL ES.");
#endif #endif
@ -285,13 +290,14 @@ void RendererGLTest::mutableText() {
CORRADE_COMPARE(renderer.capacity(), 4); CORRADE_COMPARE(renderer.capacity(), 4);
/** @todo How to verify this on ES? */ /** @todo How to verify this on ES? */
#ifndef MAGNUM_TARGET_GLES #ifndef MAGNUM_TARGET_GLES
Containers::Array<UnsignedByte> indices = renderer.indexBuffer().data<UnsignedByte>(); Containers::Array<char> indices = renderer.indexBuffer().data();
CORRADE_COMPARE(std::vector<UnsignedByte>(indices.begin(), indices.end()), (std::vector<UnsignedByte>{ CORRADE_COMPARE_AS(Containers::arrayCast<const UnsignedByte>(indices).prefix(24),
0, 1, 2, 1, 3, 2, (Containers::Array<UnsignedByte>{Containers::InPlaceInit, {
4, 5, 6, 5, 7, 6, 0, 1, 2, 1, 3, 2,
8, 9, 10, 9, 11, 10, 4, 5, 6, 5, 7, 6,
12, 13, 14, 13, 15, 14 8, 9, 10, 9, 11, 10,
})); 12, 13, 14, 13, 15, 14
}}), TestSuite::Compare::Container);
#endif #endif
/* Render text */ /* Render text */
@ -305,23 +311,24 @@ void RendererGLTest::mutableText() {
/** @todo How to verify this on ES? */ /** @todo How to verify this on ES? */
#ifndef MAGNUM_TARGET_GLES #ifndef MAGNUM_TARGET_GLES
Containers::Array<Float> vertices = renderer.vertexBuffer().subData<Float>(0, 48); Containers::Array<char> vertices = renderer.vertexBuffer().data();
CORRADE_COMPARE(std::vector<Float>(vertices.begin(), vertices.end()), (std::vector<Float>{ CORRADE_COMPARE_AS(Containers::arrayCast<const Float>(vertices).prefix(48),
0.0f, 0.5f, 0.0f, 10.0f, (Containers::Array<Float>{Containers::InPlaceInit, {
0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.5f, 0.0f, 10.0f,
0.75f, 0.5f, 6.0f, 10.0f, 0.0f, 0.0f, 0.0f, 0.0f,
0.75f, 0.0f, 6.0f, 0.0f, 0.75f, 0.5f, 6.0f, 10.0f,
0.75f, 0.0f, 6.0f, 0.0f,
1.0f, 0.75f, 6.0f, 10.0f,
1.0f, -0.25f, 6.0f, 0.0f, 1.0f, 0.75f, 6.0f, 10.0f,
2.5f, 0.75f, 12.0f, 10.0f, 1.0f, -0.25f, 6.0f, 0.0f,
2.5f, -0.25f, 12.0f, 0.0f, 2.5f, 0.75f, 12.0f, 10.0f,
2.5f, -0.25f, 12.0f, 0.0f,
2.75f, 1.0f, 12.0f, 10.0f,
2.75f, -0.5f, 12.0f, 0.0f, 2.75f, 1.0f, 12.0f, 10.0f,
5.0f, 1.0f, 18.0f, 10.0f, 2.75f, -0.5f, 12.0f, 0.0f,
5.0f, -0.5f, 18.0f, 0.0f 5.0f, 1.0f, 18.0f, 10.0f,
})); 5.0f, -0.5f, 18.0f, 0.0f
}}), TestSuite::Compare::Container);
#endif #endif
} }

Loading…
Cancel
Save