3 #include "group_renderer.h"
4 #include <cgv_reflect_types/media/illum/textured_surface_material.h>
5 #include <cgv/media/illum/textured_surface_material.h>
7 #include "gl/lib_begin.h"
17 CM_COLOR = CM_COLOR_FRONT | CM_COLOR_BACK,
20 CM_OPACITY = CM_OPACITY_FRONT | CM_OPACITY_BACK,
21 CM_COLOR_AND_OPACITY = CM_COLOR | CM_OPACITY
47 bool cull_per_primitive;
63 void set_normal_array(
const context& ctx,
const std::vector<T>& normals) { has_normals =
true; set_attribute_array(ctx, ref_prog().get_attribute_location(ctx,
"normal"), normals); }
66 void set_normal_array(
const context& ctx,
const T* normals,
size_t nr_elements,
unsigned stride_in_bytes = 0) { has_normals =
true; set_attribute_array(ctx, ref_prog().get_attribute_location(ctx,
"normal"), normals, nr_elements, stride_in_bytes); }
68 void set_normal_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);
71 void set_normal_array(
const context& ctx,
const vertex_buffer& vbo,
size_t offset_in_bytes,
size_t nr_elements,
unsigned stride_in_bytes = 0) {
set_normal_array(ctx,
type_descriptor(element_descriptor_traits<T>::get_type_descriptor(T()),
true), vbo, offset_in_bytes, nr_elements, stride_in_bytes); }
74 void set_texcoord(
const context& ctx,
const T& texcoord) { has_texcoords =
true; ref_prog().set_attribute(ctx, ref_prog().get_texcoord_index(), texcoord); }
77 void set_texcoord_array(
const context& ctx,
const std::vector<T>& texcoords) { has_texcoords =
true; set_attribute_array(ctx, ref_prog().get_attribute_location(ctx,
"texcoord"), texcoords); }
80 void set_texcoord_array(
const context& ctx,
const T* texcoords,
size_t nr_elements,
unsigned stride_in_bytes = 0) { has_texcoords =
true; set_attribute_array(ctx, ref_prog().get_attribute_location(ctx,
"texcoord"), texcoords, nr_elements, stride_in_bytes); }
82 void set_texcoord_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);
85 void set_texcoord_array(
const context& ctx,
const vertex_buffer& vbo,
size_t offset_in_bytes,
size_t nr_elements,
unsigned stride_in_bytes = 0) {
set_texcoord_array(ctx,
type_descriptor(element_descriptor_traits<T>::get_type_descriptor(T()),
true), vbo, offset_in_bytes, nr_elements, stride_in_bytes); }
87 struct CGV_API surface_render_style_reflect :
public surface_render_style
95 #include <cgv/config/lib_end.h>
ColorMapping map_color_to_material
material side[s] where color is to be mapped to the diffuse material component, defaults to MS_FRONT_...
Definition: surface_renderer.h:34
compact type description of data that can be sent to the context; convertible to int
Definition: context.h:36
cgv::media::illum::surface_material::color_type surface_color
default value for color when map color to material is used
Definition: surface_renderer.h:28
Definition: vertex_buffer.h:13
Definition: surface_renderer.h:26
void set_normal(const context &ctx, const cgv::math::fvec< T, 3 > &normal)
specify a single normal for all lines
Definition: surface_renderer.h:60
Definition: group_renderer.h:15
void set_texcoord_array(const context &ctx, const T *texcoords, size_t nr_elements, unsigned stride_in_bytes=0)
templated method to set the texcoord attribute from an array of texcoords of type T
Definition: surface_renderer.h:80
CullingMode culling_mode
culling mode for point splats, set to CM_OFF in constructor
Definition: surface_renderer.h:30
attribute array manager used to upload arrays to gpu
Definition: renderer.h:21
void set_normal_array(const context &ctx, const std::vector< T > &normals)
templated method to set the normal attribute array from a vector of normals of type T,...
Definition: surface_renderer.h:63
Definition: reflection_handler.h:63
cgv::media::illum::textured_surface_material material
material of surface
Definition: surface_renderer.h:36
void set_texcoord_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 texcoord attribute from a vertex buffer object, the element type must be g...
Definition: surface_renderer.h:85
base classes for renderers that support surface rendering
Definition: surface_renderer.h:43
IlluminationMode illumination_mode
illumination mode defaults to IM_ONE_SIDED
Definition: surface_renderer.h:32
this reflection traits implementation is used for external self_reflect implementations of instances ...
Definition: reflect_extern.h:28
ColorMapping
color and opacity can be mapped independently to surface material
Definition: surface_renderer.h:13
CullingMode
different culling modes
Definition: context.h:121
IlluminationMode
different illumination modes
Definition: context.h:116
simple class to hold the material properties of a phong material
Definition: textured_surface_material.h:15
void set_normal_array(const context &ctx, const T *normals, size_t nr_elements, unsigned stride_in_bytes=0)
templated method to set the normal attribute from an array of normals of type T, which should have 3 ...
Definition: surface_renderer.h:66
void set_normal_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 normal attribute from a vertex buffer object, the element type must be giv...
Definition: surface_renderer.h:71
the cgv namespace
Definition: vr_calib.cxx:9
Definition: context.h:525
void set_texcoord(const context &ctx, const T &texcoord)
templated method to set the texcoord attribute without array
Definition: surface_renderer.h:74
void set_texcoord_array(const context &ctx, const std::vector< T > &texcoords)
templated method to set the texcoord attribute array from a vector of texcoords of type T
Definition: surface_renderer.h:77
abstract renderer class that provides functionality for grouping primitives
Definition: group_renderer.h:26