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
30 float surface_opacity = 1.0f;
45 bool has_normals =
false;
46 bool has_texcoords =
false;
47 bool cull_per_primitive =
true;
54 bool enable(
context& ctx)
override;
56 bool disable(
context& ctx)
override;
62 void set_normal_array(
const context& ctx,
const std::vector<T>& normals) { has_normals =
true; set_attribute_array(ctx,
"normal", normals); }
65 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,
"normal", normals, nr_elements, stride_in_bytes); }
67 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);
70 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); }
72 void remove_normal_array(
const context& ctx);
75 void set_texcoord(
const context& ctx,
const T& texcoord) { has_texcoords =
true; ref_prog().set_attribute(ctx, get_prog_attribute_location(ctx,
"texcoord"), texcoord); }
78 void set_texcoord_array(
const context& ctx,
const std::vector<T>& texcoords) { has_texcoords =
true; set_attribute_array(ctx,
"texcoord", texcoords); }
81 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,
"texcoord", texcoords, nr_elements, stride_in_bytes); }
83 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);
86 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); }
88 void remove_texcoord_array(
const context& ctx);
98#include <cgv/config/lib_end.h>
A vector with zero based index.
Stores properties of a surface material with support for texturing.
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
base classes for renderers that support surface rendering
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
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
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,...
void set_texcoord(const context &ctx, const T &texcoord)
templated method to set the texcoord attribute without array
void set_normal(const context &ctx, const cgv::math::fvec< T, 3 > &normal)
specify a single normal for all lines
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...
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...
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 ...
a vertex buffer is an unstructured memory block on the GPU.
CullingMode
different culling modes
IlluminationMode
different illumination modes
ColorMapping
color and opacity can be mapped independently to surface material
this reflection traits implementation is used for external self_reflect implementations of instances ...
render style used for group information
cgv::media::illum::textured_surface_material material
material of surface
compact type description of data that can be sent to the context; convertible to int