3#include "line_renderer.h"
5#include "gl/lib_begin.h"
9 class CGV_API box_wire_renderer;
50 void set_position_is_center(
bool _position_is_center);
55 void set_extent(
const context& ctx,
const T& extent) { has_extents =
true; ref_prog().set_attribute(ctx, get_prog_attribute_location(ctx,
"extent"), extent); }
58 void set_extent_array(
const context& ctx,
const std::vector<T>& extents) { has_extents =
true; set_attribute_array(ctx,
"extent", extents); }
61 void set_extent_array(
const context& ctx,
const T* extents,
size_t nr_elements,
unsigned stride_in_bytes = 0) { has_extents =
true; set_attribute_array(ctx,
"extent", extents, nr_elements, stride_in_bytes); }
63 void remove_extent_array(
const context& ctx);
69 set_position_is_center(
false);
74 set_composed_attribute_array(ctx,
"position", &boxes.front(), boxes.size(), boxes[0].get_min_pnt());
75 ref_composed_attribute_array(ctx,
"extent",
"position", &boxes.front(), boxes.size(), boxes[0].get_max_pnt());
78 set_position_is_center(
false);
83 set_composed_attribute_array(ctx,
"position", boxes, count, boxes[0].get_min_pnt());
84 ref_composed_attribute_array(ctx,
"extent",
"position", boxes, count, boxes[0].get_max_pnt());
87 set_position_is_center(
false);
91 void set_translation_array(
const context& ctx,
const std::vector<T>& translations) { has_translations =
true; set_attribute_array(ctx,
"translation", translations); }
94 void set_translation_array(
const context& ctx,
const T* translations,
size_t nr_elements,
unsigned stride_in_bytes = 0) { has_translations =
true; set_attribute_array(ctx,
"translation", translations, nr_elements, stride_in_bytes); }
96 void remove_translation_array(
const context& ctx);
99 void set_rotation_array(
const context& ctx,
const std::vector<T>& rotations) { has_rotations =
true; set_attribute_array(ctx,
"rotation", rotations); }
101 template <
typename T>
102 void set_rotation_array(
const context& ctx,
const T* rotations,
size_t nr_elements,
unsigned stride_in_bytes = 0) { has_rotations =
true; set_attribute_array(ctx,
"rotation", rotations, nr_elements, stride_in_bytes); }
104 void remove_rotation_array(
const context& ctx);
108 void draw(
context& ctx,
size_t start,
size_t count,
109 bool use_strips =
false,
bool use_adjacency =
false, uint32_t strip_restart_index = -1);
119#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
renderer that supports point splatting
void set_extent_array(const context &ctx, const T *extents, size_t nr_elements, unsigned stride_in_bytes=0)
extent array specifies box extends in case of position_is_center=true, otherwise the maximum point of...
void set_rotation_array(const context &ctx, const std::vector< T > &rotations)
template method to set the rotation from a vector of quaternions of type T, which should have 4 compo...
bool has_translations
whether array with per box translations has been specified
void set_translation_array(const context &ctx, const std::vector< T > &translations)
template method to set the translations from a vector of vectors of type T, which should have 3 compo...
void set_box(const context &ctx, const cgv::media::axis_aligned_box< T, 3 > &box)
specify a single box. This sets position_is_center to false as well as position and extent attributes
void set_box_array(const context &ctx, const std::vector< cgv::media::axis_aligned_box< T, 3 > > &boxes)
specify box array directly. This sets position_is_center to false as well as position and extent arra...
void set_box_array(const context &ctx, const cgv::media::axis_aligned_box< T, 3 > *boxes, size_t count)
specify box array directly. This sets position_is_center to false as well as position and extent arra...
void set_extent(const context &ctx, const T &extent)
specify a single extent for all boxes
bool has_rotations
whether array with per box rotations has been specified
void set_translation_array(const context &ctx, const T *translations, size_t nr_elements, unsigned stride_in_bytes=0)
template method to set the translations from a vector of vectors of type T, which should have 3 compo...
void set_rotation_array(const context &ctx, const T *rotations, size_t nr_elements, unsigned stride_in_bytes=0)
template method to set the rotation from a vector of quaternions of type T, which should have 4 compo...
bool position_is_center
whether position is box center, if not it is lower left bottom corner
void set_extent_array(const context &ctx, const std::vector< T > &extents)
extent array specifies box extends in case of position_is_center=true, otherwise the maximum point of...
base class for all drawables, which is independent of the used rendering API.
renderer that supports point splatting
a shader program combines several shader code fragments to a complete definition of the shading pipel...
box_wire_renderer & ref_box_wire_renderer(context &ctx, int ref_count_change)
reference to a singleton box_wire renderer that can be shared among drawables
this reflection traits implementation is used for external self_reflect implementations of instances ...
box wires extend line render styles
vec3 default_extent
extent used in case extent array is not specified
vec3 relative_anchor
box anchor position relative to center that corresponds to the position attribute
base class for all render styles
holds options applied before and during shader compilation, such as preprocessor defines and code sni...