Graphics library
This page lists all included graphics. The list is divided into:
2D graphics : high-quality antialiased 2D graphical elements,
3D graphics : meshes and volumes,
Basic graphics : basic, low-quality, aliased, but fast basic primitives (points, lines, triangles), useful for demo, testing, and when dealing with tens of millions of points
Note
If not specified, the default vertex structure is DvzVertex
:
Field
Type
Description
pos
vec3
position
color
cvec4
color RGBA (four bytes)
2D graphics
Marker
DvzGraphicsMarkerVertex
Field
Type
Description
pos
vec3
position
color
cvec4
color
size
float
marker size, in pixels
marker
uint8_t
marker type enum
angle
uint8_t
angle, between 0 (0) included and 256 (M_2PI) excluded
transform
uint8_t
transform enum
DvzGraphicsMarkerParams
Field
Type
Description
edge_color
vec4
edge color RGBA
edge_width
float
line width, in pixels
Segment
DvzGraphicsSegmentVertex
Field
Type
Description
P0
vec3
start position
P1
vec3
end position
shift
vec4
shift of start (xy) and end (zw) positions, in pixels
color
cvec4
color
linewidth
float
line width, in pixels
cap0
DvzCapType
start cap enum
cap1
DvzCapType
end cap enum
transform
uint8_t
transform enum
Path
DvzGraphicsPathVertex
Field
Type
Description
p0
vec3
previous position
p1
vec3
current position
p2
vec3
next position
p3
vec3
next next position
color
cvec4
point color
DvzGraphicsPathParams
Field
Type
Description
linewidth
float
line width in pixels
miter_limit
float
miter limit for joins
cap_type
int32_t
type of the ends of the path
round_join
int32_t
whether to use round joins
Text
DvzGraphicsTextItem
Field
Type
Description
vertex
DvzGraphicsTextVertex
text vertex
glyph_colors
cvec4*
glyph colors
font_size
float
font size
string
const char*
text string
DvzGraphicsTextVertex
Field
Type
Description
pos
vec3
position
shift
vec2
shift, in pixels
color
cvec4
color
glyph_size
vec2
glyph size, in pixels
anchor
vec2
character anchor, in normalized coordinates
angle
float
string angle
glyph
usvec4
glyph: char code, char index, string length, string index
transform
uint8_t
transform enum
DvzGraphicsTextParams
Field
Type
Description
grid_size
ivec2
font atlas grid size (rows, columns)
tex_size
ivec2
font atlas texture size, in pixels
Image
DvzGraphicsImageItem
Field
Type
Description
pos0
vec3
top left corner
pos1
vec3
top right corner
pos2
vec3
bottom right corner
pos3
vec3
bottom left corner
uv0
vec2
tex coords of the top left corner
uv1
vec2
tex coords of the top right corner
uv2
vec2
tex coords of the bottom right corner
uv3
vec2
tex coords of the bottom left corner
DvzGraphicsImageVertex
Field
Type
Description
pos
vec3
position
uv
vec2
tex coordinates
DvzGraphicsImageParams
Field
Type
Description
tex_coefs
vec4
blending coefficients for the four images
3D graphics
Mesh
DvzGraphicsMeshVertex
Field
Type
Description
pos
vec4
position
normal
vec4
normal vector
uv
vec2
tex coords
alpha
uint8_t
transparency value
DvzGraphicsMeshParams
Field
Type
Description
lights_pos_0
mat4
positions of each of the maximum four lights
lights_params_0
mat4
ambient, diffuse, specular coefs for each light
tex_coefs
vec4
blending coefficients for the four textures
clip_coefs
vec4
clip coefficients
The mesh graphics supports the following features:
Phong shading
Up to four textures
Customizable texture blending coefficients
Transparency (but does not play well with depth test)
Support for arbitrary RGB values (via cvec3 packing into vec2)
Customizable plane clipping
Plane clipping: when the clip vector is non-zero, the fragment shader implements the following test. If the dot product of the clip vector with the vertex position (in scene coordinates) is negative, the fragment is discarded. This feature allows to cut the mesh along any arbitrary affine plane.
Basic graphics
Points
DvzGraphicsPointParams
Field
Type
Description
point_size
float
point size, in pixels
Lines
Line strip
Triangles
Triangle strip
Triangle fan
Warning
Triangle fan graphics is not supported on macOS and should therefore be avoided if macOS compatibility is desirable.