|
|
|
|
@ -19,55 +19,16 @@
|
|
|
|
|
|
|
|
|
|
#include "MeshBuilder.h" |
|
|
|
|
#include "Magnum.h" |
|
|
|
|
#include "Primitives/Icosphere.h" |
|
|
|
|
|
|
|
|
|
QTEST_APPLESS_MAIN(Magnum::Test::MeshBuilderBenchmark) |
|
|
|
|
|
|
|
|
|
namespace Magnum { namespace Test { |
|
|
|
|
|
|
|
|
|
/* Vertices = normals */ |
|
|
|
|
static const Vector4 icoVertices[] = { |
|
|
|
|
Vector4(0, -0.525731f, 0.850651f), |
|
|
|
|
Vector4(0.850651f, 0, 0.525731f), |
|
|
|
|
Vector4(0.850651f, 0, -0.525731f), |
|
|
|
|
Vector4(-0.850651f, 0, -0.525731f), |
|
|
|
|
Vector4(-0.850651f, 0, 0.525731f), |
|
|
|
|
Vector4(-0.525731f, 0.850651f, 0), |
|
|
|
|
Vector4(0.525731f, 0.850651f, 0), |
|
|
|
|
Vector4(0.525731f, -0.850651f, 0), |
|
|
|
|
Vector4(-0.525731f, -0.850651f, 0), |
|
|
|
|
Vector4(0, -0.525731f, -0.850651f), |
|
|
|
|
Vector4(0, 0.525731f, -0.850651f), |
|
|
|
|
Vector4(0, 0.525731f, 0.850651f), |
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
/* Vertex indices */ |
|
|
|
|
static const GLubyte icoIndices[] = { |
|
|
|
|
1, 2, 6, |
|
|
|
|
1, 7, 2, |
|
|
|
|
3, 4, 5, |
|
|
|
|
4, 3, 8, |
|
|
|
|
6, 5, 11, |
|
|
|
|
5, 6, 10, |
|
|
|
|
9, 10, 2, |
|
|
|
|
10, 9, 3, |
|
|
|
|
7, 8, 9, |
|
|
|
|
8, 7, 0, |
|
|
|
|
11, 0, 1, |
|
|
|
|
0, 11, 4, |
|
|
|
|
6, 2, 10, |
|
|
|
|
1, 6, 11, |
|
|
|
|
3, 5, 10, |
|
|
|
|
5, 4, 11, |
|
|
|
|
2, 7, 9, |
|
|
|
|
7, 1, 0, |
|
|
|
|
3, 9, 8, |
|
|
|
|
4, 8, 0 |
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
void MeshBuilderBenchmark::subdivide() { |
|
|
|
|
QBENCHMARK { |
|
|
|
|
MeshBuilder<Vector4> builder; |
|
|
|
|
builder.setData(icoVertices, icoIndices, 12, 60); |
|
|
|
|
builder.setData(Primitives::Icosahedron::vertices, Primitives::Icosahedron::indices, 12, 60); |
|
|
|
|
|
|
|
|
|
/* Subdivide 5 times */ |
|
|
|
|
builder.subdivide(interpolator); |
|
|
|
|
@ -81,7 +42,7 @@ void MeshBuilderBenchmark::subdivide() {
|
|
|
|
|
void MeshBuilderBenchmark::subdivideAndCleanMeshAfter() { |
|
|
|
|
QBENCHMARK { |
|
|
|
|
MeshBuilder<Vector4> builder; |
|
|
|
|
builder.setData(icoVertices, icoIndices, 12, 60); |
|
|
|
|
builder.setData(Primitives::Icosahedron::vertices, Primitives::Icosahedron::indices, 12, 60); |
|
|
|
|
|
|
|
|
|
/* Subdivide 5 times */ |
|
|
|
|
builder.subdivide(interpolator); |
|
|
|
|
@ -97,7 +58,7 @@ void MeshBuilderBenchmark::subdivideAndCleanMeshAfter() {
|
|
|
|
|
void MeshBuilderBenchmark::subdivideAndCleanMeshBetween() { |
|
|
|
|
QBENCHMARK { |
|
|
|
|
MeshBuilder<Vector4> builder; |
|
|
|
|
builder.setData(icoVertices, icoIndices, 12, 60); |
|
|
|
|
builder.setData(Primitives::Icosahedron::vertices, Primitives::Icosahedron::indices, 12, 60); |
|
|
|
|
|
|
|
|
|
/* Subdivide 5 times */ |
|
|
|
|
builder.subdivide(interpolator); |
|
|
|
|
|