4 #include <cgv/reflect/reflect_extern.h>
5 #include <cgv/render/shader_program.h>
6 #include <cgv_reflect_types/render/context.h>
8 #include "gl/lib_begin.h"
28 bool has_group_indices;
29 bool has_group_colors;
30 bool has_group_translations;
31 bool has_group_rotations;
40 bool validate_attributes(
const context& ctx)
const;
46 void set_group_index_array(
const context& ctx,
const std::vector<unsigned>& group_indices);
48 void set_group_index_array(
const context& ctx,
const unsigned* group_indices,
size_t nr_elements);
50 void set_group_index_array(
const context& ctx,
type_descriptor element_type,
const vertex_buffer& vbo,
size_t offset_in_bytes,
size_t nr_elements,
unsigned stride_in_bytes = 0);
53 void set_group_index_array(
const context& ctx,
const vertex_buffer& vbo,
size_t offset_in_bytes,
size_t nr_elements,
unsigned stride_in_bytes = 0) {
set_group_index_array(ctx,
type_descriptor(element_descriptor_traits<T>::get_type_descriptor(T()),
true), vbo, offset_in_bytes, nr_elements, stride_in_bytes); }
56 void set_group_colors(
const context& ctx,
const std::vector<T>& colors) { has_group_colors =
true; ref_prog().set_uniform_array(ctx,
"group_colors", colors); }
59 void set_group_colors(
const context& ctx,
const T* colors,
size_t nr_elements) { has_group_colors =
true; ref_prog().set_uniform_array(ctx,
"group_colors", colors, nr_elements); }
62 void set_group_translations(
const context& ctx,
const std::vector<T>& group_translations) { has_group_translations =
true; ref_prog().set_uniform_array(ctx,
"group_translations", group_translations); }
65 void set_group_translations(
const context& ctx,
const T* group_translations,
size_t nr_elements) { has_group_translations =
true; ref_prog().set_uniform_array(ctx,
"group_translations", group_translations, nr_elements); }
68 void set_group_rotations(
const context& ctx,
const std::vector<T>& group_rotations) { has_group_rotations =
true; ref_prog().set_uniform_array(ctx,
"group_rotations", group_rotations); }
71 void set_group_rotations(
const context& ctx,
const T* group_rotations,
size_t nr_elements) { has_group_rotations =
true; ref_prog().set_uniform_array(ctx,
"group_rotations", group_rotations, nr_elements); }
74 struct CGV_API group_render_style_reflect :
public group_render_style
92 #include <cgv/config/lib_end.h>
base class for all render styles
Definition: renderer.h:16
compact type description of data that can be sent to the context; convertible to int
Definition: context.h:36
void set_group_index_array(const context &ctx, const vertex_buffer &vbo, size_t offset_in_bytes, size_t nr_elements, unsigned stride_in_bytes=0)
template method to set the group index color attribute from a vertex buffer object,...
Definition: group_renderer.h:53
Definition: vertex_buffer.h:13
abstract base class for all renderers that handles a shader program and position / color attribute
Definition: renderer.h:177
Definition: group_renderer.h:15
void set_group_rotations(const context &ctx, const T *group_rotations, size_t nr_elements)
template method to set the group rotation from a vector of quaternions of type T, which should have 4...
Definition: group_renderer.h:71
void set_group_translations(const context &ctx, const T *group_translations, size_t nr_elements)
template method to set the group translations from a vector of vectors of type T, which should have 3...
Definition: group_renderer.h:65
bool use_group_transformation
whether to use group translation and rotation indexed through group index, defaults to false
Definition: group_renderer.h:19
attribute array manager used to upload arrays to gpu
Definition: renderer.h:21
void set_group_translations(const context &ctx, const std::vector< T > &group_translations)
template method to set the group translations from a vector of vectors of type T, which should have 3...
Definition: group_renderer.h:62
Definition: reflection_handler.h:63
void set_group_colors(const context &ctx, const std::vector< T > &colors)
template method to set the group colors from a vector of colors of type T
Definition: group_renderer.h:56
void set_group_rotations(const context &ctx, const std::vector< T > &group_rotations)
template method to set the group rotation from a vector of quaternions of type T, which should have 4...
Definition: group_renderer.h:68
bool use_group_color
whether to use group colors indexed through group index, defaults to false
Definition: group_renderer.h:17
this reflection traits implementation is used for external self_reflect implementations of instances ...
Definition: reflect_extern.h:28
void set_group_colors(const context &ctx, const T *colors, size_t nr_elements)
template method to set the group colors from a vector of colors of type T
Definition: group_renderer.h:59
the cgv namespace
Definition: vr_calib.cxx:9
Definition: context.h:525
abstract renderer class that provides functionality for grouping primitives
Definition: group_renderer.h:26