summaryrefslogtreecommitdiff
path: root/test/perf-terrain.cpp
blob: e75f80bfc1a5b442ba660aa6c47f11c3ef6323c2 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
#include "game/terrain.h"
#include "gfx/camera.h"
#include "gfx/frustum.h"
#include "gfx/gl/sceneShader.h"
#include "testMainWindow.h"
#include <benchmark/benchmark.h>

namespace {
	const TestMainWindowAppBase window;

	void
	terrainMeshgen(benchmark::State & state)
	{
		Terrain terrain {GeoData::loadFromAsciiGrid(FIXTURESDIR "height/SD19.asc")};

		for (auto _ : state) {
			terrain.generateMeshes();
		}
	}

	void
	terrainRender(benchmark::State & state)
	{
		Terrain terrain {GeoData::loadFromAsciiGrid(FIXTURESDIR "height/SD19.asc")};
		SceneShader shader;
		Camera cam {terrain.getExtents().min + GlobalPosition3D {0, 0, 10000}, 45.F, 1.F, 1, 10000};
		cam.setForward(::north + ::east);

		for (auto _ : state) {
			terrain.render(shader, cam);
		}
	}
}

BENCHMARK(terrainMeshgen);
BENCHMARK(terrainRender);

BENCHMARK_MAIN();