cgv
normal_renderer.h
1 #pragma once
2 
3 #include "line_renderer.h"
4 
5 #include "gl/lib_begin.h"
6 
7 namespace cgv {
8  namespace render {
9  class CGV_API normal_renderer;
10 
12 
15  extern CGV_API normal_renderer& ref_normal_renderer(context& ctx, int ref_count_change = 0);
16 
17 
18  struct CGV_API normal_render_style : public line_render_style
19  {
20  float normal_length;
21  normal_render_style();
22  };
23 
25  class CGV_API normal_renderer : public line_renderer
26  {
27  protected:
29  float normal_scale;
31  render_style* create_render_style() const;
32  bool validate_attributes(const context& ctx) const;
33  public:
36  void set_normal_scale(float _normal_scale);
37  bool init(context& ctx);
38  bool enable(context& ctx);
40  void draw(context& ctx, size_t start, size_t count,
41  bool use_strips = false, bool use_adjacency = false, uint32_t strip_restart_index = -1);
42  };
43 
44  struct CGV_API normal_render_style_reflect : public normal_render_style
45  {
46  bool self_reflect(cgv::reflect::reflection_handler& rh);
47  };
48  extern CGV_API cgv::reflect::extern_reflection_traits<normal_render_style, normal_render_style_reflect> get_reflection_traits(const cgv::render::normal_render_style&);
49  }
50 }
51 
52 #include <cgv/config/lib_end.h>
cgv::render::render_style
base class for all render styles
Definition: renderer.h:16
cgv::render::line_renderer
renderer that supports point splatting
Definition: line_renderer.h:62
cgv::render::normal_renderer::normal_scale
float normal_scale
scaling of normal length
Definition: normal_renderer.h:29
cgv::render::normal_renderer
renderer that supports rendering point normals
Definition: normal_renderer.h:26
cgv::reflect::reflection_handler
Definition: reflection_handler.h:63
cgv::render::ref_normal_renderer
normal_renderer & ref_normal_renderer(context &ctx, int ref_count_change)
reference to a singleton normal renderer that can be shared among drawables
Definition: normal_renderer.cxx:7
cgv::reflect::extern_reflection_traits
this reflection traits implementation is used for external self_reflect implementations of instances ...
Definition: reflect_extern.h:28
cgv
the cgv namespace
Definition: vr_calib.cxx:9
cgv::render::context
Definition: context.h:525