3 #include "surface_renderer.h"
5 #include "gl/lib_begin.h"
9 class CGV_API sphere_renderer;
15 extern CGV_API sphere_renderer&
ref_sphere_renderer(context& ctx,
int ref_count_change = 0);
63 void set_y_view_angle(
float y_view_angle);
65 template <
typename T =
float>
66 void set_radius_array(
const context& ctx,
const std::vector<T>& radii) { has_radii =
true; set_attribute_array(ctx, ref_prog().get_attribute_location(ctx,
"radius"), radii); }
68 template <
typename T =
float>
69 void set_radius_array(
const context& ctx,
const T* radii,
size_t nr_elements,
unsigned stride_in_bytes = 0) { has_radii =
true; set_attribute_array(ctx, ref_prog().get_attribute_location(ctx,
"radius"), radii, nr_elements, stride_in_bytes); }
71 template <
typename T =
float>
72 void set_group_radii(
const context& ctx,
const std::vector<T>& group_radii) { has_group_radii =
true; ref_prog().set_uniform_array(ctx,
"group_radii", group_radii); }
74 template <
typename T =
float>
76 set_composed_attribute_array(ctx, ref_prog().get_attribute_location(ctx,
"position"),
78 ref_composed_attribute_array(ctx, ref_prog().get_attribute_location(ctx,
"radius"),
79 ref_prog().get_attribute_location(ctx,
"position"), &spheres.front(), spheres.size(), spheres[0][3]);
84 bool validate_attributes(
const context& ctx)
const;
90 void draw(
context& ctx,
size_t start,
size_t count,
91 bool use_strips =
false,
bool use_adjacency =
false, uint32_t strip_restart_index = -1);
94 struct CGV_API sphere_render_style_reflect :
public sphere_render_style
103 #include <cgv/config/lib_end.h>
base class for all render styles
Definition: renderer.h:16
float blend_width_in_pixel
set to 1 in constructor
Definition: sphere_renderer.h:29
sphere_renderer & ref_sphere_renderer(context &ctx, int ref_count_change)
reference to a singleton sphere renderer that can be shared among drawables
Definition: sphere_renderer.cxx:7
Definition: sphere_renderer.h:19
Definition: surface_renderer.h:26
float halo_color_strength
strength in [0,1] of halo color with respect to color of primitive
Definition: sphere_renderer.h:37
attribute array manager used to upload arrays to gpu
Definition: renderer.h:21
float radius
default value assigned to radius attribute in enable method of sphere renderer, set to 1 in construct...
Definition: sphere_renderer.h:25
Definition: reflection_handler.h:63
bool use_group_radius
whether to use the group radius
Definition: sphere_renderer.h:27
base classes for renderers that support surface rendering
Definition: surface_renderer.h:43
float percentual_halo_width
set to 0 in constructor
Definition: sphere_renderer.h:33
this reflection traits implementation is used for external self_reflect implementations of instances ...
Definition: reflect_extern.h:28
cgv::media::color< float, cgv::media::RGB, cgv::media::OPACITY > halo_color
color of halo with opacity channel
Definition: sphere_renderer.h:35
void set_sphere_array(const context &ctx, const std::vector< cgv::math::fvec< T, 4 > > &spheres)
use this function if you store spheres in vec4 with the 4th component the radius
Definition: sphere_renderer.h:75
renderer that supports splatting of spheres
Definition: sphere_renderer.h:46
float halo_width_in_pixel
set to 0 in constructor
Definition: sphere_renderer.h:31
the cgv namespace
Definition: vr_calib.cxx:9
Definition: context.h:525