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); }
55 void remove_group_index_array(
const context& ctx);
58 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); }
61 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); }
64 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); }
67 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); }
70 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); }
73 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); }
94#include <cgv/config/lib_end.h>
the self reflection handler is passed to the virtual self_reflect() method of cgv::base::base.
attribute array manager used to upload arrays to gpu
base class for all drawables, which is independent of the used rendering API.
abstract renderer class that provides functionality for grouping primitives
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...
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...
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...
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
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,...
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
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...
abstract base class for all renderers that handles a shader program and position / color attribute
a vertex buffer is an unstructured memory block on the GPU.
this reflection traits implementation is used for external self_reflect implementations of instances ...
render style used for group information
bool use_group_transformation
whether to use group translation and rotation indexed through group index, defaults to false
bool use_group_color
whether to use group colors indexed through group index, defaults to false
base class for all render styles
compact type description of data that can be sent to the context; convertible to int