1#include "normal_renderer.h"
2#include <cgv_gl/gl/gl.h>
3#include <cgv_gl/gl/gl_tools.h>
9 static int ref_count = 0;
15 normal_render_style::normal_render_style()
20 normal_renderer::normal_renderer()
39 ctx.
error(
"normal_renderer::enable() normal attribute not set");
60 draw_impl(ctx, PT_POINTS, start, count,
false,
false, -1);
77#include <cgv/gui/provider.h>
86 void* value_ptr,
const std::string& value_type,
87 const std::string& gui_type,
const std::string& options,
bool*)
93 p->
add_member_control(b,
"Normal Length", nrs_ptr->normal_length,
"value_slider",
"min=0.0001;step=0.0000001;max=10;log=true;ticks=true");
99#include "gl/lib_begin.h"
base class for all classes that can be registered with support for dynamic properties (see also secti...
helper template for registration of gui creators
derive from this class to provide a gui to the current viewer
bool add_gui(const std::string &label, T &value, const std::string &gui_type="", const std::string &options="")
Add a composed gui of the given gui_type for the given value.
data::ref_ptr< control< T > > add_member_control(cgv::base::base *base_ptr, const std::string &label, T &value, const std::string &gui_type="", const std::string &options="", const std::string &align="\n")
add control with callback to cgv::base::on_set method on cgv::gui::control::value_change
the self reflection handler is passed to the virtual self_reflect() method of cgv::base::base.
bool reflect_base(B &base_ref)
reflect a base class with its members
bool reflect_member(const std::string &member_name, T &member_ref, bool hard_cast=false)
call this to reflect a member by member name and reference to the member.
base class for all drawables, which is independent of the used rendering API.
virtual void error(const std::string &message, const render_component *rc=0) const
error handling
bool validate_attributes(const context &ctx) const
check additionally the group attributes
bool enable(context &ctx)
overload to activate group style
renderer that supports rendering point normals
void set_normal_scale(float _normal_scale)
the normal scale is multiplied to the normal length of the normal render style
bool enable(context &ctx)
enable normal renderer
float normal_scale
scaling of normal length
bool validate_attributes(const context &ctx) const
check additionally the group attributes
render_style * create_render_style() const
overload to allow instantiation of box_wire_renderer
bool build_shader_program(context &ctx, shader_program &prog, const shader_define_map &defines)
build normal program
void draw(context &ctx, size_t start, size_t count, bool use_strips=false, bool use_adjacency=false, uint32_t strip_restart_index=-1)
convenience function to render with default settings
void manage_singleton(context &ctx, const std::string &renderer_name, int &ref_count, int ref_count_change)
used by derived classes to manage singletons
shader_program & ref_prog()
derived renderer classes have access to shader program
void draw_impl(context &ctx, PrimitiveType pt, size_t start, size_t count, bool use_strips=false, bool use_adjacency=false, uint32_t strip_restart_index=-1)
default implementation of draw method with support for indexed rendering and different primitive type...
a shader program combines several shader code fragments to a complete definition of the shading pipel...
bool set_uniform(const context &ctx, const std::string &name, const T &value, bool generate_error=false)
Set the value of a uniform by name, where the type can be any of int, unsigned, float,...
bool build_program(const context &ctx, const std::string &file_name, bool show_error=false, const shader_define_map &defines=shader_define_map())
successively calls create, attach_program and link.
std::map< std::string, std::string > shader_define_map
typedef for shader define map data structure
normal_renderer & ref_normal_renderer(context &ctx, int ref_count_change)
reference to a singleton normal renderer that can be shared among drawables
interface for gui creators
bool create(provider *p, const std::string &label, void *value_ptr, const std::string &value_type, const std::string &gui_type, const std::string &options, bool *)
attempt to create a gui and return whether this was successful
this reflection traits implementation is used for external self_reflect implementations of instances ...
base class for all render styles
traits class with a static function get_name() of type const char* that returns the type name of the ...