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

render_node.hpp
Go to the documentation of this file.
1 #ifndef OGLPLUS_TEXGEN_RENDER_NODE_HPP
9 #define OGLPLUS_TEXGEN_RENDER_NODE_HPP
10 
11 #include "../buffer.hpp"
12 #include "../program.hpp"
13 #include "../uniform.hpp"
14 #include "../vertex_array.hpp"
15 #include "base_node.hpp"
16 #include "fallback_input.hpp"
18 
19 namespace eagine::oglp::texgen {
20 
21 class render_node : public base_node {
22 private:
23  input_with_const_default<float[4]> _input;
24 
25  owned<program_name> _prog;
26  owned<buffer_name> _data;
27  owned<vertex_array_name> _vao;
28 
29  uniform_location _voxel_size;
30 
31  void _init_screen();
32  void _update_program();
33 
34  bool _needs_update{false};
35 
36  int _xdiv{1}, _ydiv{1}, _tile{0};
37 
38  unsigned _render_version{0};
39  render_params _render_params{};
40 
41 public:
42  render_node();
43  render_node(render_node&&) noexcept = default;
44  render_node(const render_node&) = delete;
45  render_node& operator=(render_node&&) = delete;
46  render_node& operator=(const render_node&) = delete;
47  ~render_node() override;
48 
49  std::ostream& make_fragment_shader_source(std::ostream&, compile_context&);
50 
51  void draw_screen();
52 
53  string_view type_name() override;
54 
55  span_size_t input_count() override;
56 
57  input_intf& input(span_size_t index) override;
58 
59  void update_needed() override;
60 
61  void update_if_needed();
62 
63  bool render(const render_params&) override;
64 
65  bool render();
66 
67  void set_divisions(
68  const valid_if_positive<int>& xdiv,
69  const valid_if_positive<int>& ydiv);
70 
71  void set_dimensions(
72  const valid_if_positive<int>& width,
73  const valid_if_positive<int>& height);
74 };
75 
76 } // namespace eagine::oglp::texgen
77 
78 #if !OGLPLUS_LINK_LIBRARY || defined(OGLPLUS_IMPLEMENTING_LIBRARY)
79 #include <oglplus/texgen/render_node.inl>
80 #endif
81 
82 #endif // OGLPLUS_TEXGEN_RENDER_NODE_HPP
std::ptrdiff_t span_size_t
Signed span size type used by eagine.
Definition: types.hpp:36
basic_string_span< const char > string_view
Alias for const string views.
Definition: string_span.hpp:116
valid_if< T, valid_if_positive_policy< T > > valid_if_positive
Specialization of valid_if, for values valid if positive.
Definition: positive.hpp:44
prog_var_location< EAGINE_ID_V(Uniform)> uniform_location
Alias for shader program uniform location wrapper.
Definition: prog_var_loc.hpp:115
static auto type_name(const T &) noexcept -> std::string
Returns the demangled name for type T.
Definition: type_name.hpp:24

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