Go to the documentation of this file. 1 #ifndef OGLPLUS_TEXGEN_RENDER_NODE_HPP
9 #define OGLPLUS_TEXGEN_RENDER_NODE_HPP
11 #include "../buffer.hpp"
12 #include "../program.hpp"
13 #include "../uniform.hpp"
14 #include "../vertex_array.hpp"
19 namespace eagine::oglp::texgen {
21 class render_node :
public base_node {
23 input_with_const_default<float[4]> _input;
25 owned<program_name> _prog;
26 owned<buffer_name> _data;
27 owned<vertex_array_name> _vao;
32 void _update_program();
34 bool _needs_update{
false};
36 int _xdiv{1}, _ydiv{1}, _tile{0};
38 unsigned _render_version{0};
39 render_params _render_params{};
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;
49 std::ostream& make_fragment_shader_source(std::ostream&, compile_context&);
59 void update_needed() override;
61 void update_if_needed();
63 bool render(const render_params&) override;
78 #if !OGLPLUS_LINK_LIBRARY || defined(OGLPLUS_IMPLEMENTING_LIBRARY)
79 #include <oglplus/texgen/render_node.inl>
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