-
-
Notifications
You must be signed in to change notification settings - Fork 1.2k
/
Copy pathdemo_0.cpp
70 lines (54 loc) · 2.04 KB
/
demo_0.cpp
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
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
// Copyright 2023-2024 the openage authors. See copying.md for legal info.
#include "demo_0.h"
#include "renderer/demo/util.h"
#include "renderer/gui/integration/public/gui_application_with_logger.h"
#include "renderer/opengl/window.h"
#include "renderer/render_pass.h"
#include "renderer/render_target.h"
#include "renderer/resources/mesh_data.h"
#include "renderer/resources/shader_source.h"
#include "renderer/shader_program.h"
namespace openage::renderer::tests {
void renderer_demo_0(const util::Path &path) {
auto qtapp = std::make_shared<gui::GuiApplicationWithLogger>();
window_settings settings;
settings.width = 800;
settings.height = 600;
settings.debug = true;
opengl::GlWindow window("openage renderer test", settings);
auto renderer = window.make_renderer();
auto shaderdir = path / "assets" / "test" / "shaders";
/* Shader for copying the framebuffer in pass 2. */
auto display_vshader_file = (shaderdir / "demo_0_display.vert.glsl").open();
auto display_vshader_src = resources::ShaderSource(
resources::shader_lang_t::glsl,
resources::shader_stage_t::vertex,
display_vshader_file.read());
display_vshader_file.close();
auto display_fshader_file = (shaderdir / "demo_0_display.frag.glsl").open();
auto display_fshader_src = resources::ShaderSource(
resources::shader_lang_t::glsl,
resources::shader_stage_t::fragment,
display_fshader_file.read());
display_fshader_file.close();
auto display_shader = renderer->add_shader({display_vshader_src, display_fshader_src});
auto quad = renderer->add_mesh_geometry(resources::MeshData::make_quad());
Renderable display_stuff{
display_shader->create_empty_input(),
quad,
false,
false,
};
if (not check_uniform_completeness({display_stuff})) {
log::log(WARN << "Uniforms not complete.");
}
auto pass = renderer->add_render_pass({display_stuff}, renderer->get_display_target());
while (not window.should_close()) {
renderer->render(pass);
window.update();
qtapp->process_events();
renderer->check_error();
}
window.close();
}
} // namespace openage::renderer::tests