OGLplus  (0.59.0) a C++ wrapper for rendering APIs

main.hpp
1 
9 #ifndef OGLPLUS_EXAMPLE_MAIN_HPP // NOLINT(llvm-header-guard)
10 #define OGLPLUS_EXAMPLE_MAIN_HPP
11 
12 #include "resources.hpp"
13 
16 #include <eagine/cleanup_group.hpp>
17 #include <eagine/timeout.hpp>
18 #include <oglplus/math/vector.hpp>
19 
20 namespace eagine::application {
21 //------------------------------------------------------------------------------
22 class example : public application {
23 public:
24  example(execution_context&, video_context&);
25 
26  auto is_done() noexcept -> bool final {
27  return _is_done.is_expired();
28  }
29 
30  void on_video_resize() noexcept final;
31  void update() noexcept final;
32  void clean_up() noexcept final;
33 
34  auto ctx() noexcept -> auto& {
35  return _ctx;
36  }
37 
38  auto video() noexcept -> auto& {
39  return _video;
40  }
41 
42  auto camera() noexcept -> auto& {
43  return _camera;
44  }
45 
46  auto frame_duration() noexcept {
47  return ctx().state().frame_duration().value();
48  }
49 
50  operator cleanup_group&() noexcept {
51  return _cleanup;
52  }
53 
54 private:
55  cleanup_group _cleanup;
56  execution_context& _ctx;
57  video_context& _video;
58  timeout _is_done{std::chrono::seconds{60}};
59 
60  orbiting_camera _camera;
61  metaball_program _mball_prog;
62  field_program _field_prog;
63  surface_program _srfce_prog;
64  volume_domain _volume;
65 };
66 
67 } // namespace eagine::application
68 
69 #endif
Application harness / wrapper code is placed in this namespace.
Definition: eagine.hpp:72

Copyright © 2015-2021 Matúš Chochlík.
<chochlik -at -gmail.com>
Documentation generated on Tue Apr 13 2021 by Doxygen (version 1.8.17).