Browse Source

Cleanup and code reorganization in MeshGLTest.

pull/54/head
Vladimír Vondruš 12 years ago
parent
commit
2ea0a416ed
  1. 85
      src/Magnum/Test/MeshGLTest.cpp

85
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<class T> 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<Float, UnsignedByte>(64),
Math::normalize<Float, UnsignedByte>(17),
Math::normalize<Float, UnsignedByte>(56),
@ -1137,7 +1140,36 @@ namespace {
Math::normalize<Float, UnsignedByte>(97),
Math::normalize<Float, UnsignedByte>(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<Float, UnsignedByte>(64),
Math::normalize<Float, UnsignedByte>(17),
Math::normalize<Float, UnsignedByte>(56),
Math::normalize<Float, UnsignedByte>(15),
Math::normalize<Float, UnsignedByte>(164),
Math::normalize<Float, UnsignedByte>(17),
Math::normalize<Float, UnsignedByte>(97),
Math::normalize<Float, UnsignedByte>(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<Float, UnsignedByte>(64),
Math::normalize<Float, UnsignedByte>(17),
Math::normalize<Float, UnsignedByte>(56),
Math::normalize<Float, UnsignedByte>(15),
Math::normalize<Float, UnsignedByte>(164),
Math::normalize<Float, UnsignedByte>(17),
Math::normalize<Float, UnsignedByte>(97),
Math::normalize<Float, UnsignedByte>(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);

Loading…
Cancel
Save