This example shows how to map an array buffer for dynamic buffer update (useful for animation).
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27#include <easy3d/viewer/viewer.h>
28#include <easy3d/renderer/vertex_array_object.h>
29#include <easy3d/renderer/drawable_triangles.h>
30#include <easy3d/util/resource.h>
31#include <easy3d/util/initializer.h>
32
33
38
40
41
42int main(int argc, char **argv) {
43
45
46
47
48
49
50 Viewer viewer(EXAMPLE_TITLE);
51
52
53
54
56
58
59
60
62
63
64
65 surface->update_vertex_buffer(points, true);
66
67
68
69 surface->update_element_buffer(indices);
70
71 viewer.add_drawable(std::shared_ptr<TrianglesDrawable>(surface));
72
73 viewer.fit_screen();
74
75
76 viewer.set_animation(true);
77
78
79
81 (void)v;
82
83
85
86 vec3* vertices =
reinterpret_cast<vec3*
>(pointer);
87 if (!vertices)
88 return false;
89
90 static float total_scale = 1.0f;
91 float scale = 1.01f;
92 if (total_scale > 1.5f) {
93 scale = 1.0f / total_scale;
94 total_scale = 1.0f;
95 }
96 else
97 total_scale *= scale;
98
99 for (std::size_t i=0; i<points.size(); ++i)
100 vertices[i].z *= scale;
101
102
104
105 viewer.update();
106 return true;
107 };
108
109
110 return viewer.run();
111}
112
The drawable for rendering a set of triangles, e.g., the surface of a triangular mesh.
Definition drawable_triangles.h:46
static void * map_buffer(GLenum target, GLuint buffer, GLenum access)
Maps a buffer object's data store.
Definition vertex_array_object.cpp:174
static void unmap_buffer(GLenum target, GLuint buffer)
Unmaps a buffer object's data store.
Definition vertex_array_object.cpp:186
The built-in Easy3D viewer.
Definition viewer.h:63
EASY3D_UTIL_EXPORT const std::vector< unsigned int > bunny_indices
EASY3D_UTIL_EXPORT const std::vector< vec3 > bunny_vertices
Definition collider.cpp:182
Vec< 3, float > vec3
A 3D point/vector of float type.
Definition types.h:44
void initialize(bool info_to_stdout, bool use_log_file, bool use_setting_file, const std::string &resource_dir)
Initialization of Easy3D.
Definition initializer.cpp:39