From 2ea0a416ed48a073a8c831b43eba8ef074e67a4a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vladim=C3=ADr=20Vondru=C5=A1?= Date: Sun, 27 Apr 2014 16:38:15 +0200 Subject: [PATCH] Cleanup and code reorganization in MeshGLTest. --- src/Magnum/Test/MeshGLTest.cpp | 85 ++++++++++++++++++---------------- 1 file changed, 46 insertions(+), 39 deletions(-) diff --git a/src/Magnum/Test/MeshGLTest.cpp b/src/Magnum/Test/MeshGLTest.cpp index b00867ac6..751fe3cec 100644 --- a/src/Magnum/Test/MeshGLTest.cpp +++ b/src/Magnum/Test/MeshGLTest.cpp @@ -406,7 +406,10 @@ Checker::Checker(AbstractShaderProgram&& shader, RenderbufferFormat format, Mesh .setCount(2); /* Skip first vertex so we test also offsets */ - MeshView(mesh).setCount(1).setBaseVertex(1).draw(shader); + MeshView(mesh) + .setCount(1) + .setBaseVertex(1) + .draw(shader); } template T Checker::get(ColorFormat format, ColorType type) { @@ -1117,7 +1120,7 @@ void MeshGLTest::addVertexBufferMultipleGaps() { namespace { struct IndexChecker { - explicit IndexChecker(Mesh& mesh, Int baseVertex = 0); + explicit IndexChecker(Mesh& mesh); Color4ub get(); Renderbuffer renderbuffer; @@ -1127,7 +1130,7 @@ namespace { const Float indexedVertexData[] = { 0.0f, /* Offset */ - /* First attribute */ + /* First vertex */ Math::normalize(64), Math::normalize(17), Math::normalize(56), @@ -1137,7 +1140,36 @@ namespace { Math::normalize(97), Math::normalize(28), - /* Second attribute */ + /* Second vertex */ + 0.3f, 0.1f, 0.5f, + 0.4f, 0.0f, -0.9f, + 1.0f, -0.5f + }; + + const Float indexedVertexDataBaseVertex[] = { + 0.0f, 0.0f, /* Offset */ + + /* First vertex */ + 0.0f, 0.0f, 0.0f, + 0.0f, 0.0f, 0.0f, + 0.0f, 0.0f, + + /* Second vertex */ + 0.0f, 0.0f, 0.0f, + 0.0f, 0.0f, 0.0f, + 0.0f, 0.0f, + + /* Third vertex */ + Math::normalize(64), + Math::normalize(17), + Math::normalize(56), + Math::normalize(15), + Math::normalize(164), + Math::normalize(17), + Math::normalize(97), + Math::normalize(28), + + /* Fourth vertex */ 0.3f, 0.1f, 0.5f, 0.4f, 0.0f, -0.9f, 1.0f, -0.5f @@ -1147,7 +1179,7 @@ namespace { } #ifndef DOXYGEN_GENERATING_OUTPUT -IndexChecker::IndexChecker(Mesh& mesh, Int baseVertex): framebuffer({{}, Vector2i(1)}) { +IndexChecker::IndexChecker(Mesh& mesh): framebuffer({{}, Vector2i(1)}) { #ifndef MAGNUM_TARGET_GLES2 renderbuffer.setStorage(RenderbufferFormat::RGBA8, Vector2i(1)); #else @@ -1160,7 +1192,11 @@ IndexChecker::IndexChecker(Mesh& mesh, Int baseVertex): framebuffer({{}, Vector2 .setCount(2); /* Skip first vertex so we test also offsets */ - MeshView(mesh).setCount(1).setBaseVertex(baseVertex).setIndexRange(1).draw(MultipleShader{}); + MeshView(mesh) + .setCount(1) + .setBaseVertex(mesh.baseVertex()) + .setIndexRange(1) + .draw(MultipleShader{}); } Color4ub IndexChecker::get() { @@ -1240,51 +1276,22 @@ void MeshGLTest::setIndexBufferUnsignedInt() { #ifndef MAGNUM_TARGET_GLES void MeshGLTest::setBaseVertex() { - const Float indexedVertexData[] = { - 0.0f, 0.0f, /* Offset */ - - /* First attribute */ - 0.0f, 0.0f, 0.0f, - 0.0f, 0.0f, 0.0f, - 0.0f, 0.0f, - - /* Second attribute */ - 0.0f, 0.0f, 0.0f, - 0.0f, 0.0f, 0.0f, - 0.0f, 0.0f, - - /* Third attribute */ - Math::normalize(64), - Math::normalize(17), - Math::normalize(56), - Math::normalize(15), - Math::normalize(164), - Math::normalize(17), - Math::normalize(97), - Math::normalize(28), - - /* Fourth attribute */ - 0.3f, 0.1f, 0.5f, - 0.4f, 0.0f, -0.9f, - 1.0f, -0.5f - }; - Buffer vertices; - vertices.setData(indexedVertexData, BufferUsage::StaticDraw); + vertices.setData(indexedVertexDataBaseVertex, BufferUsage::StaticDraw); constexpr UnsignedShort indexData[] = { 2, 1, 0 }; Buffer indices(Buffer::Target::ElementArray); indices.setData(indexData, BufferUsage::StaticDraw); Mesh mesh; - mesh.addVertexBuffer(vertices, 2*4, MultipleShader::Position(), + mesh.setBaseVertex(2) + .addVertexBuffer(vertices, 2*4, MultipleShader::Position(), MultipleShader::Normal(), MultipleShader::TextureCoordinates()) .setIndexBuffer(indices, 2, Mesh::IndexType::UnsignedShort); MAGNUM_VERIFY_NO_ERROR(); - /* base vertex is 2 */ - const auto value = IndexChecker(mesh, 2).get(); + const auto value = IndexChecker(mesh).get(); MAGNUM_VERIFY_NO_ERROR(); CORRADE_COMPARE(value, indexedResult);