summaryrefslogtreecommitdiff
path: root/test/test-render.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'test/test-render.cpp')
-rw-r--r--test/test-render.cpp35
1 files changed, 29 insertions, 6 deletions
diff --git a/test/test-render.cpp b/test/test-render.cpp
index 89b2d90..62090e3 100644
--- a/test/test-render.cpp
+++ b/test/test-render.cpp
@@ -12,9 +12,9 @@
#include <ui/sceneRenderer.h>
#include <ui/window.h>
-class TestRenderWindow : public Window {
+class TestRenderOutput {
public:
- TestRenderWindow() : Window(640, 480, __FILE__, SDL_WINDOW_OPENGL | SDL_WINDOW_HIDDEN)
+ TestRenderOutput() : size {640, 480}
{
glBindFramebuffer(GL_FRAMEBUFFER, output);
const auto configuregdata
@@ -37,18 +37,27 @@ public:
throw std::runtime_error("Framebuffer not complete!");
}
}
+ const glm::ivec2 size;
+ glFrameBuffer output;
+ glRenderBuffer depth;
+ glTexture outImage;
+};
+
+class TestMainWindow : public Window {
+ // This exists only to hold an OpenGL context open for the duration of the tests,
+ // in the same way a real main window would always exist.
+public:
+ TestMainWindow() : Window {1, 1, __FILE__, SDL_WINDOW_OPENGL | SDL_WINDOW_HIDDEN} { }
void
tick(TickDuration) override
{
}
- glFrameBuffer output;
- glRenderBuffer depth;
- glTexture outImage;
};
BOOST_GLOBAL_FIXTURE(ApplicationBase);
+BOOST_GLOBAL_FIXTURE(TestMainWindow);
-BOOST_FIXTURE_TEST_SUITE(w, TestRenderWindow);
+BOOST_FIXTURE_TEST_SUITE(w, TestRenderOutput);
BOOST_AUTO_TEST_CASE(basic)
{
@@ -64,4 +73,18 @@ BOOST_AUTO_TEST_CASE(basic)
Texture::save(outImage, size, "/tmp/basic.tga");
}
+BOOST_AUTO_TEST_CASE(pointlight)
+{
+ auto gd = std::make_shared<GeoData>(GeoData::Limits {{0, 0}, {100, 100}});
+ gd->generateRandom();
+ Terrain terrain {gd};
+ SceneRenderer ss {size, output};
+ ss.camera.pos = {-10, -10, 60};
+ ss.camera.forward = glm::normalize(glm::vec3 {1, 1, -0.5F});
+ ss.render([&terrain](const auto & shader) {
+ terrain.render(shader);
+ });
+ Texture::save(outImage, size, "/tmp/pointlight.tga");
+}
+
BOOST_AUTO_TEST_SUITE_END();