OGLplus
(0.59.0)
a C++ wrapper for rendering APIs
example
application
040_metaballs
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
14
#include <
eagine/application/camera.hpp
>
15
#include <
eagine/application/interface.hpp
>
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
eagine::application
Application harness / wrapper code is placed in this namespace.
Definition:
eagine.hpp:72
camera.hpp
timeout.hpp
cleanup_group.hpp
interface.hpp
vector.hpp
Copyright © 2015-2021
Matúš Chochlík
.
<
chochlik -at -gmail.com
>
Documentation generated on Tue Apr 13 2021 by
Doxygen
(version 1.8.17).