Browse Source

DebugTools: make bufferSubData()'s template type default to char

This is already done for bufferData()
pull/560/head
Pablo Escobar 4 years ago
parent
commit
de94fc9441
  1. 2
      src/Magnum/DebugTools/BufferData.h
  2. 21
      src/Magnum/DebugTools/Test/BufferDataGLTest.cpp

2
src/Magnum/DebugTools/BufferData.h

@ -59,7 +59,7 @@ WebGL 2.0 it's just an alias to @ref GL::Buffer::subData().
@requires_webgl20 Buffer data queries or buffer mapping are not available in
WebGL 1.0.
*/
template<class T> Containers::Array<T> inline bufferSubData(GL::Buffer& buffer, GLintptr offset, GLsizeiptr size) {
template<class T = char> Containers::Array<T> inline bufferSubData(GL::Buffer& buffer, GLintptr offset, GLsizeiptr size) {
if(!size) return {};
#if !defined(MAGNUM_TARGET_GLES) || defined(MAGNUM_TARGET_WEBGL)
Containers::Array<char> data = buffer.subData(offset, size*sizeof(T));

21
src/Magnum/DebugTools/Test/BufferDataGLTest.cpp

@ -59,9 +59,15 @@ void BufferDataGLTest::data() {
CORRADE_VERIFY(emptyContents.isEmpty());
buffer.setData(Data, GL::BufferUsage::StaticDraw);
const Containers::Array<Int> contents = bufferData<Int>(buffer);
const Containers::Array<char> contents = bufferData(buffer);
MAGNUM_VERIFY_NO_GL_ERROR();
CORRADE_COMPARE_AS(contents,
Containers::arrayCast<const char>(Containers::arrayView(Data)),
TestSuite::Compare::Container);
const Containers::Array<Int> intContents = bufferData<Int>(buffer);
MAGNUM_VERIFY_NO_GL_ERROR();
CORRADE_COMPARE_AS(contents, Containers::arrayView(Data),
CORRADE_COMPARE_AS(intContents, Containers::arrayView(Data),
TestSuite::Compare::Container);
}
@ -73,11 +79,16 @@ void BufferDataGLTest::subData() {
GL::Buffer buffer;
buffer.setData(Data, GL::BufferUsage::StaticDraw);
const Containers::Array<Int> contents = bufferSubData<Int>(buffer, 4, 3);
const Containers::Array<char> contents = bufferSubData(buffer, 4, 3*4);
MAGNUM_VERIFY_NO_GL_ERROR();
CORRADE_COMPARE_AS(contents, Containers::arrayView(Data).slice(1, 4),
CORRADE_COMPARE_AS(contents,
Containers::arrayCast<const char>(Containers::arrayView(Data).slice(1, 4)),
TestSuite::Compare::Container);
const Containers::Array<Int> intContents = bufferSubData<Int>(buffer, 4, 3);
MAGNUM_VERIFY_NO_GL_ERROR();
CORRADE_COMPARE_AS(intContents, Containers::arrayView(Data).slice(1, 4),
TestSuite::Compare::Container);
const Containers::Array<Int> emptyContents = bufferSubData<Int>(buffer, 4, 0);
MAGNUM_VERIFY_NO_GL_ERROR();
CORRADE_VERIFY(emptyContents.isEmpty());

Loading…
Cancel
Save