Browse Source

Removed duplicate code from MeshGLTest.

As there is now no distinction between vertex and index count we don't
need separate checker utility for non-indexed and indexed meshes.
pull/59/head
Vladimír Vondruš 12 years ago
parent
commit
f8dfa180b2
  1. 166
      src/Magnum/Test/MeshGLTest.cpp

166
src/Magnum/Test/MeshGLTest.cpp

@ -432,11 +432,12 @@ Checker::Checker(AbstractShaderProgram&& shader, RenderbufferFormat format, Mesh
/* Skip first vertex so we test also offsets */ /* Skip first vertex so we test also offsets */
MeshView(mesh) MeshView(mesh)
.setCount(1) .setCount(1)
.setBaseVertex(1) .setBaseVertex(mesh.baseVertex())
.setInstanceCount(mesh.instanceCount()) .setInstanceCount(mesh.instanceCount())
#ifndef MAGNUM_TARGET_GLES #ifndef MAGNUM_TARGET_GLES
.setBaseInstance(mesh.baseInstance()) .setBaseInstance(mesh.baseInstance())
#endif #endif
.setIndexRange(1)
.draw(shader); .draw(shader);
} }
@ -461,7 +462,8 @@ void MeshGLTest::addVertexBufferUnsignedInt() {
buffer.setData(data, BufferUsage::StaticDraw); buffer.setData(data, BufferUsage::StaticDraw);
Mesh mesh; Mesh mesh;
mesh.addVertexBuffer(buffer, 4, Attribute()); mesh.setBaseVertex(1)
.addVertexBuffer(buffer, 4, Attribute());
MAGNUM_VERIFY_NO_ERROR(); MAGNUM_VERIFY_NO_ERROR();
@ -485,7 +487,8 @@ void MeshGLTest::addVertexBufferInt() {
buffer.setData(data, BufferUsage::StaticDraw); buffer.setData(data, BufferUsage::StaticDraw);
Mesh mesh; Mesh mesh;
mesh.addVertexBuffer(buffer, 4, Attribute()); mesh.setBaseVertex(1)
.addVertexBuffer(buffer, 4, Attribute());
MAGNUM_VERIFY_NO_ERROR(); MAGNUM_VERIFY_NO_ERROR();
@ -505,7 +508,8 @@ void MeshGLTest::addVertexBufferFloat() {
buffer.setData(data, BufferUsage::StaticDraw); buffer.setData(data, BufferUsage::StaticDraw);
Mesh mesh; Mesh mesh;
mesh.addVertexBuffer(buffer, 4, Attribute()); mesh.setBaseVertex(1)
.addVertexBuffer(buffer, 4, Attribute());
MAGNUM_VERIFY_NO_ERROR(); MAGNUM_VERIFY_NO_ERROR();
@ -533,7 +537,8 @@ void MeshGLTest::addVertexBufferDouble() {
buffer.setData(data, BufferUsage::StaticDraw); buffer.setData(data, BufferUsage::StaticDraw);
Mesh mesh; Mesh mesh;
mesh.addVertexBuffer(buffer, 8, Attribute()); mesh.setBaseVertex(1)
.addVertexBuffer(buffer, 8, Attribute());
MAGNUM_VERIFY_NO_ERROR(); MAGNUM_VERIFY_NO_ERROR();
@ -559,7 +564,8 @@ void MeshGLTest::addVertexBufferVectorNui() {
buffer.setData(data, BufferUsage::StaticDraw); buffer.setData(data, BufferUsage::StaticDraw);
Mesh mesh; Mesh mesh;
mesh.addVertexBuffer(buffer, 3*4, Attribute()); mesh.setBaseVertex(1)
.addVertexBuffer(buffer, 3*4, Attribute());
MAGNUM_VERIFY_NO_ERROR(); MAGNUM_VERIFY_NO_ERROR();
@ -583,7 +589,8 @@ void MeshGLTest::addVertexBufferVectorNi() {
buffer.setData(data, BufferUsage::StaticDraw); buffer.setData(data, BufferUsage::StaticDraw);
Mesh mesh; Mesh mesh;
mesh.addVertexBuffer(buffer, 2*4, Attribute()); mesh.setBaseVertex(1)
.addVertexBuffer(buffer, 2*4, Attribute());
MAGNUM_VERIFY_NO_ERROR(); MAGNUM_VERIFY_NO_ERROR();
@ -603,7 +610,8 @@ void MeshGLTest::addVertexBufferVectorN() {
buffer.setData(data, BufferUsage::StaticDraw); buffer.setData(data, BufferUsage::StaticDraw);
Mesh mesh; Mesh mesh;
mesh.addVertexBuffer(buffer, 3*4, Attribute()); mesh.setBaseVertex(1)
.addVertexBuffer(buffer, 3*4, Attribute());
MAGNUM_VERIFY_NO_ERROR(); MAGNUM_VERIFY_NO_ERROR();
@ -634,7 +642,8 @@ void MeshGLTest::addVertexBufferVectorNd() {
buffer.setData(data, BufferUsage::StaticDraw); buffer.setData(data, BufferUsage::StaticDraw);
Mesh mesh; Mesh mesh;
mesh.addVertexBuffer(buffer, 4*8, Attribute()); mesh.setBaseVertex(1)
.addVertexBuffer(buffer, 4*8, Attribute());
MAGNUM_VERIFY_NO_ERROR(); MAGNUM_VERIFY_NO_ERROR();
@ -658,7 +667,8 @@ void MeshGLTest::addVertexBufferMatrixNxN() {
buffer.setData(data, BufferUsage::StaticDraw); buffer.setData(data, BufferUsage::StaticDraw);
Mesh mesh; Mesh mesh;
mesh.addVertexBuffer(buffer, 3*3*4, Attribute()); mesh.setBaseVertex(1)
.addVertexBuffer(buffer, 3*3*4, Attribute());
MAGNUM_VERIFY_NO_ERROR(); MAGNUM_VERIFY_NO_ERROR();
@ -686,7 +696,8 @@ void MeshGLTest::addVertexBufferMatrixNxNd() {
buffer.setData(data, BufferUsage::StaticDraw); buffer.setData(data, BufferUsage::StaticDraw);
Mesh mesh; Mesh mesh;
mesh.addVertexBuffer(buffer, 3*3*8, Attribute()); mesh.setBaseVertex(1)
.addVertexBuffer(buffer, 3*3*8, Attribute());
MAGNUM_VERIFY_NO_ERROR(); MAGNUM_VERIFY_NO_ERROR();
@ -712,7 +723,8 @@ void MeshGLTest::addVertexBufferMatrixMxN() {
buffer.setData(data, BufferUsage::StaticDraw); buffer.setData(data, BufferUsage::StaticDraw);
Mesh mesh; Mesh mesh;
mesh.addVertexBuffer(buffer, 3*4*4, Attribute()); mesh.setBaseVertex(1)
.addVertexBuffer(buffer, 3*4*4, Attribute());
MAGNUM_VERIFY_NO_ERROR(); MAGNUM_VERIFY_NO_ERROR();
@ -741,7 +753,8 @@ void MeshGLTest::addVertexBufferMatrixMxNd() {
buffer.setData(data, BufferUsage::StaticDraw); buffer.setData(data, BufferUsage::StaticDraw);
Mesh mesh; Mesh mesh;
mesh.addVertexBuffer(buffer, 3*4*8, Attribute()); mesh.setBaseVertex(1)
.addVertexBuffer(buffer, 3*4*8, Attribute());
MAGNUM_VERIFY_NO_ERROR(); MAGNUM_VERIFY_NO_ERROR();
@ -768,7 +781,8 @@ void MeshGLTest::addVertexBufferUnsignedIntWithUnsignedShort() {
buffer.setData(data, BufferUsage::StaticDraw); buffer.setData(data, BufferUsage::StaticDraw);
Mesh mesh; Mesh mesh;
mesh.addVertexBuffer(buffer, 2, Attribute(Attribute::DataType::UnsignedShort)); mesh.setBaseVertex(1)
.addVertexBuffer(buffer, 2, Attribute(Attribute::DataType::UnsignedShort));
MAGNUM_VERIFY_NO_ERROR(); MAGNUM_VERIFY_NO_ERROR();
@ -792,7 +806,8 @@ void MeshGLTest::addVertexBufferUnsignedIntWithShort() {
buffer.setData(data, BufferUsage::StaticDraw); buffer.setData(data, BufferUsage::StaticDraw);
Mesh mesh; Mesh mesh;
mesh.addVertexBuffer(buffer, 2, Attribute(Attribute::DataType::Short)); mesh.setBaseVertex(1)
.addVertexBuffer(buffer, 2, Attribute(Attribute::DataType::Short));
MAGNUM_VERIFY_NO_ERROR(); MAGNUM_VERIFY_NO_ERROR();
@ -816,7 +831,8 @@ void MeshGLTest::addVertexBufferIntWithUnsignedShort() {
buffer.setData(data, BufferUsage::StaticDraw); buffer.setData(data, BufferUsage::StaticDraw);
Mesh mesh; Mesh mesh;
mesh.addVertexBuffer(buffer, 2, Attribute(Attribute::DataType::UnsignedShort)); mesh.setBaseVertex(1)
.addVertexBuffer(buffer, 2, Attribute(Attribute::DataType::UnsignedShort));
MAGNUM_VERIFY_NO_ERROR(); MAGNUM_VERIFY_NO_ERROR();
@ -840,7 +856,8 @@ void MeshGLTest::addVertexBufferIntWithShort() {
buffer.setData(data, BufferUsage::StaticDraw); buffer.setData(data, BufferUsage::StaticDraw);
Mesh mesh; Mesh mesh;
mesh.addVertexBuffer(buffer, 2, Attribute(Attribute::DataType::Short)); mesh.setBaseVertex(1)
.addVertexBuffer(buffer, 2, Attribute(Attribute::DataType::Short));
MAGNUM_VERIFY_NO_ERROR(); MAGNUM_VERIFY_NO_ERROR();
@ -867,10 +884,10 @@ void MeshGLTest::addVertexBufferFloatWithHalfFloat() {
buffer.setData({nullptr, 6}, BufferUsage::StaticDraw); buffer.setData({nullptr, 6}, BufferUsage::StaticDraw);
Mesh mesh; Mesh mesh;
mesh.addVertexBuffer(buffer, 2, Attribute(Attribute::DataType::HalfFloat)); mesh.setBaseVertex(1)
.addVertexBuffer(buffer, 2, Attribute(Attribute::DataType::HalfFloat));
MAGNUM_VERIFY_NO_ERROR(); MAGNUM_VERIFY_NO_ERROR();
/* Won't test the actual values */ /* Won't test the actual values */
} }
@ -883,7 +900,8 @@ void MeshGLTest::addVertexBufferFloatWithDouble() {
buffer.setData(data, BufferUsage::StaticDraw); buffer.setData(data, BufferUsage::StaticDraw);
Mesh mesh; Mesh mesh;
mesh.addVertexBuffer(buffer, 8, Attribute(Attribute::DataType::Double)); mesh.setBaseVertex(1)
.addVertexBuffer(buffer, 8, Attribute(Attribute::DataType::Double));
MAGNUM_VERIFY_NO_ERROR(); MAGNUM_VERIFY_NO_ERROR();
@ -908,7 +926,8 @@ void MeshGLTest::addVertexBufferVector4WithUnsignedInt2101010Rev() {
buffer.setData({nullptr, 12}, BufferUsage::StaticDraw); buffer.setData({nullptr, 12}, BufferUsage::StaticDraw);
Mesh mesh; Mesh mesh;
mesh.addVertexBuffer(buffer, 4, Attribute(Attribute::DataType::UnsignedInt2101010Rev)); mesh.setBaseVertex(1)
.addVertexBuffer(buffer, 4, Attribute(Attribute::DataType::UnsignedInt2101010Rev));
MAGNUM_VERIFY_NO_ERROR(); MAGNUM_VERIFY_NO_ERROR();
/* Won't test the actual values */ /* Won't test the actual values */
@ -926,7 +945,8 @@ void MeshGLTest::addVertexBufferVector4WithInt2101010Rev() {
buffer.setData({nullptr, 12}, BufferUsage::StaticDraw); buffer.setData({nullptr, 12}, BufferUsage::StaticDraw);
Mesh mesh; Mesh mesh;
mesh.addVertexBuffer(buffer, 4, Attribute(Attribute::DataType::Int2101010Rev)); mesh.setBaseVertex(1)
.addVertexBuffer(buffer, 4, Attribute(Attribute::DataType::Int2101010Rev));
MAGNUM_VERIFY_NO_ERROR(); MAGNUM_VERIFY_NO_ERROR();
/* Won't test the actual values */ /* Won't test the actual values */
@ -944,7 +964,8 @@ void MeshGLTest::addVertexBufferLessVectorComponents() {
buffer.setData(data, BufferUsage::StaticDraw); buffer.setData(data, BufferUsage::StaticDraw);
Mesh mesh; Mesh mesh;
mesh.addVertexBuffer(buffer, 3*4, Attribute(Attribute::Components::Three)); mesh.setBaseVertex(1)
.addVertexBuffer(buffer, 3*4, Attribute(Attribute::Components::Three));
MAGNUM_VERIFY_NO_ERROR(); MAGNUM_VERIFY_NO_ERROR();
@ -968,7 +989,8 @@ void MeshGLTest::addVertexBufferNormalized() {
buffer.setData(data, BufferUsage::StaticDraw); buffer.setData(data, BufferUsage::StaticDraw);
Mesh mesh; Mesh mesh;
mesh.addVertexBuffer(buffer, 3, Attribute(Attribute::DataType::UnsignedByte, Attribute::DataOption::Normalized)); mesh.setBaseVertex(1)
.addVertexBuffer(buffer, 3, Attribute(Attribute::DataType::UnsignedByte, Attribute::DataOption::Normalized));
MAGNUM_VERIFY_NO_ERROR(); MAGNUM_VERIFY_NO_ERROR();
@ -998,7 +1020,8 @@ void MeshGLTest::addVertexBufferBGRA() {
buffer.setData(data, BufferUsage::StaticDraw); buffer.setData(data, BufferUsage::StaticDraw);
Mesh mesh; Mesh mesh;
mesh.addVertexBuffer(buffer, 4, Attribute(Attribute::Components::BGRA, Attribute::DataType::UnsignedByte, Attribute::DataOption::Normalized)); mesh.setBaseVertex(1)
.addVertexBuffer(buffer, 4, Attribute(Attribute::Components::BGRA, Attribute::DataType::UnsignedByte, Attribute::DataOption::Normalized));
MAGNUM_VERIFY_NO_ERROR(); MAGNUM_VERIFY_NO_ERROR();
@ -1077,7 +1100,8 @@ void MeshGLTest::addVertexBufferMultiple() {
buffer.setData(data, BufferUsage::StaticDraw); buffer.setData(data, BufferUsage::StaticDraw);
Mesh mesh; Mesh mesh;
mesh.addVertexBuffer(buffer, 1*4, MultipleShader::Position(), mesh.setBaseVertex(1)
.addVertexBuffer(buffer, 1*4, MultipleShader::Position(),
MultipleShader::Normal(), MultipleShader::TextureCoordinates()); MultipleShader::Normal(), MultipleShader::TextureCoordinates());
MAGNUM_VERIFY_NO_ERROR(); MAGNUM_VERIFY_NO_ERROR();
@ -1117,7 +1141,8 @@ void MeshGLTest::addVertexBufferMultipleGaps() {
buffer.setData(data, BufferUsage::StaticDraw); buffer.setData(data, BufferUsage::StaticDraw);
Mesh mesh; Mesh mesh;
mesh.addVertexBuffer(buffer, 4*4, mesh.setBaseVertex(1)
.addVertexBuffer(buffer, 4*4,
MultipleShader::Position(), 1*4, MultipleShader::Position(), 1*4,
MultipleShader::Normal(), 1*4, MultipleShader::Normal(), 1*4,
MultipleShader::TextureCoordinates(), 2*4); MultipleShader::TextureCoordinates(), 2*4);
@ -1137,14 +1162,6 @@ void MeshGLTest::addVertexBufferMultipleGaps() {
} }
namespace { namespace {
struct IndexChecker {
explicit IndexChecker(Mesh& mesh);
Color4ub get();
Renderbuffer renderbuffer;
Framebuffer framebuffer;
};
const Float indexedVertexData[] = { const Float indexedVertexData[] = {
0.0f, /* Offset */ 0.0f, /* Offset */
@ -1196,38 +1213,6 @@ namespace {
constexpr Color4ub indexedResult(64 + 15 + 97, 17 + 164 + 28, 56 + 17, 255); constexpr Color4ub indexedResult(64 + 15 + 97, 17 + 164 + 28, 56 + 17, 255);
} }
#ifndef DOXYGEN_GENERATING_OUTPUT
IndexChecker::IndexChecker(Mesh& mesh): framebuffer({{}, Vector2i(1)}) {
#ifndef MAGNUM_TARGET_GLES2
renderbuffer.setStorage(RenderbufferFormat::RGBA8, Vector2i(1));
#else
renderbuffer.setStorage(RenderbufferFormat::RGBA4, Vector2i(1));
#endif
framebuffer.attachRenderbuffer(Framebuffer::ColorAttachment(0), renderbuffer);
framebuffer.bind(FramebufferTarget::ReadDraw);
mesh.setPrimitive(MeshPrimitive::Points)
.setCount(2);
/* Skip first vertex so we test also offsets */
MeshView(mesh)
.setCount(1)
.setBaseVertex(mesh.baseVertex())
.setInstanceCount(mesh.instanceCount())
#ifndef MAGNUM_TARGET_GLES
.setBaseInstance(mesh.baseInstance())
#endif
.setIndexRange(1)
.draw(MultipleShader{});
}
Color4ub IndexChecker::get() {
Image2D image(ColorFormat::RGBA, ColorType::UnsignedByte);
framebuffer.read({}, Vector2i(1), image);
return image.data<Color4ub>()[0];
}
#endif
void MeshGLTest::setIndexBuffer() { void MeshGLTest::setIndexBuffer() {
Buffer vertices; Buffer vertices;
vertices.setData(indexedVertexData, BufferUsage::StaticDraw); vertices.setData(indexedVertexData, BufferUsage::StaticDraw);
@ -1243,7 +1228,13 @@ void MeshGLTest::setIndexBuffer() {
MAGNUM_VERIFY_NO_ERROR(); MAGNUM_VERIFY_NO_ERROR();
const auto value = IndexChecker(mesh).get(); const auto value = Checker(MultipleShader{},
#ifndef MAGNUM_TARGET_GLES2
RenderbufferFormat::RGBA8,
#else
RenderbufferFormat::RGBA4,
#endif
mesh).get<Color4ub>(ColorFormat::RGBA, ColorType::UnsignedByte);
MAGNUM_VERIFY_NO_ERROR(); MAGNUM_VERIFY_NO_ERROR();
CORRADE_COMPARE(value, indexedResult); CORRADE_COMPARE(value, indexedResult);
@ -1264,7 +1255,13 @@ void MeshGLTest::setIndexBufferRange() {
MAGNUM_VERIFY_NO_ERROR(); MAGNUM_VERIFY_NO_ERROR();
const auto value = IndexChecker(mesh).get(); const auto value = Checker(MultipleShader{},
#ifndef MAGNUM_TARGET_GLES2
RenderbufferFormat::RGBA8,
#else
RenderbufferFormat::RGBA4,
#endif
mesh).get<Color4ub>(ColorFormat::RGBA, ColorType::UnsignedByte);
MAGNUM_VERIFY_NO_ERROR(); MAGNUM_VERIFY_NO_ERROR();
CORRADE_COMPARE(value, indexedResult); CORRADE_COMPARE(value, indexedResult);
@ -1290,7 +1287,13 @@ void MeshGLTest::setIndexBufferUnsignedInt() {
MAGNUM_VERIFY_NO_ERROR(); MAGNUM_VERIFY_NO_ERROR();
const auto value = IndexChecker(mesh).get(); const auto value = Checker(MultipleShader{},
#ifndef MAGNUM_TARGET_GLES2
RenderbufferFormat::RGBA8,
#else
RenderbufferFormat::RGBA4,
#endif
mesh).get<Color4ub>(ColorFormat::RGBA, ColorType::UnsignedByte);
MAGNUM_VERIFY_NO_ERROR(); MAGNUM_VERIFY_NO_ERROR();
CORRADE_COMPARE(value, indexedResult); CORRADE_COMPARE(value, indexedResult);
@ -1316,7 +1319,8 @@ void MeshGLTest::setBaseVertex() {
MAGNUM_VERIFY_NO_ERROR(); MAGNUM_VERIFY_NO_ERROR();
const auto value = IndexChecker(mesh).get(); const auto value = Checker(MultipleShader{}, RenderbufferFormat::RGBA8,
mesh).get<Color4ub>(ColorFormat::RGBA, ColorType::UnsignedByte);
MAGNUM_VERIFY_NO_ERROR(); MAGNUM_VERIFY_NO_ERROR();
CORRADE_COMPARE(value, indexedResult); CORRADE_COMPARE(value, indexedResult);
@ -1344,7 +1348,8 @@ void MeshGLTest::setInstanceCount() {
buffer.setData(data, BufferUsage::StaticDraw); buffer.setData(data, BufferUsage::StaticDraw);
Mesh mesh; Mesh mesh;
mesh.setInstanceCount(3) mesh.setBaseVertex(1)
.setInstanceCount(3)
.addVertexBuffer(buffer, 4, Attribute()); .addVertexBuffer(buffer, 4, Attribute());
MAGNUM_VERIFY_NO_ERROR(); MAGNUM_VERIFY_NO_ERROR();
@ -1390,7 +1395,13 @@ void MeshGLTest::setInstanceCountIndexed() {
MAGNUM_VERIFY_NO_ERROR(); MAGNUM_VERIFY_NO_ERROR();
const auto value = IndexChecker(mesh).get(); const auto value = Checker(MultipleShader{},
#ifndef MAGNUM_TARGET_GLES2
RenderbufferFormat::RGBA8,
#else
RenderbufferFormat::RGBA4,
#endif
mesh).get<Color4ub>(ColorFormat::RGBA, ColorType::UnsignedByte);
MAGNUM_VERIFY_NO_ERROR(); MAGNUM_VERIFY_NO_ERROR();
CORRADE_COMPARE(value, indexedResult); CORRADE_COMPARE(value, indexedResult);
@ -1457,7 +1468,8 @@ void MeshGLTest::setInstanceCountBaseInstanceIndexed() {
MAGNUM_VERIFY_NO_ERROR(); MAGNUM_VERIFY_NO_ERROR();
const auto value = IndexChecker(mesh).get(); const auto value = Checker(MultipleShader{}, RenderbufferFormat::RGBA8,
mesh).get<Color4ub>(ColorFormat::RGBA, ColorType::UnsignedByte);
MAGNUM_VERIFY_NO_ERROR(); MAGNUM_VERIFY_NO_ERROR();
CORRADE_COMPARE(value, indexedResult); CORRADE_COMPARE(value, indexedResult);
@ -1490,7 +1502,8 @@ void MeshGLTest::setInstanceCountBaseVertex() {
MAGNUM_VERIFY_NO_ERROR(); MAGNUM_VERIFY_NO_ERROR();
const auto value = IndexChecker(mesh).get(); const auto value = Checker(MultipleShader{}, RenderbufferFormat::RGBA8,
mesh).get<Color4ub>(ColorFormat::RGBA, ColorType::UnsignedByte);
MAGNUM_VERIFY_NO_ERROR(); MAGNUM_VERIFY_NO_ERROR();
CORRADE_COMPARE(value, indexedResult); CORRADE_COMPARE(value, indexedResult);
@ -1526,7 +1539,8 @@ void MeshGLTest::setInstanceCountBaseVertexBaseInstance() {
MAGNUM_VERIFY_NO_ERROR(); MAGNUM_VERIFY_NO_ERROR();
const auto value = IndexChecker(mesh).get(); const auto value = Checker(MultipleShader{}, RenderbufferFormat::RGBA8,
mesh).get<Color4ub>(ColorFormat::RGBA, ColorType::UnsignedByte);
MAGNUM_VERIFY_NO_ERROR(); MAGNUM_VERIFY_NO_ERROR();
CORRADE_COMPARE(value, indexedResult); CORRADE_COMPARE(value, indexedResult);

Loading…
Cancel
Save