cgv
Loading...
Searching...
No Matches
sphere_render_data.h
1
#pragma once
2
3
#include "sphere_renderer.h"
4
#include "render_data_base.h"
5
6
namespace
cgv
{
7
namespace
render {
8
11
template
<
typename
ColorType = rgb>
12
class
sphere_render_data
:
public
render_data_base
<sphere_renderer, sphere_render_style, ColorType> {
13
private
:
14
// Base class we're going to use virtual functions from
15
typedef
render_data_base<sphere_renderer, sphere_render_style, ColorType>
super
;
16
17
sphere_renderer
& ref_renderer_singleton(
context
& ctx,
int
ref_count_change = 0)
override
{
18
return
ref_sphere_renderer
(ctx, ref_count_change);
19
}
20
21
protected
:
23
bool
transfer
(
context
& ctx,
sphere_renderer
& r)
override
{
24
if
(
super::transfer
(ctx, r)) {
25
CGV_RDB_TRANSFER_ARRAY(radius,
radii
);
26
return
true
;
27
}
28
return
false
;
29
}
30
31
public
:
33
std::vector<float>
radii
;
34
35
void
clear() {
36
super::clear
();
37
radii
.clear();
38
}
39
40
void
add_radius(
const
float
radius) {
41
radii
.push_back(radius);
42
}
43
44
// Explicitly use add from the base class since it is shadowed by the overloaded versions
45
using
super::add;
46
47
void
add(
const
vec3
& position,
const
float
radius) {
48
super::add_position(position);
49
add_radius(radius);
50
}
51
52
void
add(
const
vec3
& position,
const
ColorType& color,
const
float
radius) {
53
super::add(position, color);
54
add_radius(radius);
55
}
56
57
void
fill_radii(
const
float
radius) {
58
super::fill
(
radii
, radius);
59
}
60
};
61
62
}
63
}
cgv::math::fvec< float, 3 >
cgv::render::context
base class for all drawables, which is independent of the used rendering API.
Definition
context.h:621
cgv::render::render_data_base
A base class for storing render data and style usable with the default renderers provided in the cgv:...
Definition
render_data_base.h:66
cgv::render::render_data_base::transfer
virtual bool transfer(context &ctx, RendererType &r)
Transfers the data stored in members to the attribute array.
Definition
render_data_base.h:85
cgv::render::render_data_base::clear
void clear()
Clear the stored data and set state out of date.
Definition
render_data_base.h:172
cgv::render::render_data_base::fill
void fill(std::vector< T > &vector, const T &value)
Template for filling a member array to the size of the render data.
Definition
render_data_base.h:138
cgv::render::sphere_render_data
Render data for sphere geometry with support for the sphere_renderer.
Definition
sphere_render_data.h:12
cgv::render::sphere_render_data::transfer
bool transfer(context &ctx, sphere_renderer &r) override
See render_data_base::transfer.
Definition
sphere_render_data.h:23
cgv::render::sphere_render_data::radii
std::vector< float > radii
array of radii
Definition
sphere_render_data.h:33
cgv::render::sphere_renderer
renderer that supports splatting of spheres
Definition
sphere_renderer.h:46
cgv::render::ref_sphere_renderer
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
cgv
the cgv namespace
Definition
print.h:11
cgv::vec3
cgv::math::fvec< float, 3 > vec3
declare type of 3d single precision floating point vectors
Definition
fvec.h:669
libs
cgv_gl
sphere_render_data.h
Generated by
1.9.8