1 #include <vulkan/vulkan.h>
8 MeshVK::MeshVK(const MeshVK &mesh)
10 indices = mesh.indices;
11 vertices = mesh.vertices;
12 normals = mesh.normals;
13 tex_coords = mesh.tex_coords;
16 MeshVK &MeshVK::operator=(const MeshVK &mesh)
21 /* what the copy constructor does */
22 indices = mesh.indices;
23 vertices = mesh.vertices;
24 normals = mesh.normals;
25 tex_coords = mesh.tex_coords;
32 vku_destroy_buffer(vk_vertices);
33 vku_destroy_buffer(vk_normals);
34 vku_destroy_buffer(vk_tex_coords);
35 vku_destroy_buffer(vk_indices);
43 bool MeshVK::update_vertex_data()
45 if(vertices.empty()) {
46 printf("empty vertices!\n");
50 /* create the buffers */
52 if(!(vk_vertices = vku_create_buffer(vertices.size() * sizeof(Vec3),
53 VK_BUFFER_USAGE_VERTEX_BUFFER_BIT))) {
54 fprintf(stderr, "Failed to create the buffer for the vertices.\n");
58 if(!(vk_normals = vku_create_buffer(normals.size() * sizeof(Vec3),
59 VK_BUFFER_USAGE_VERTEX_BUFFER_BIT))) {
60 vku_destroy_buffer(vk_vertices);
62 fprintf(stderr, "Failed to create the buffer for the normals.\n");
66 if(!(vk_tex_coords = vku_create_buffer(tex_coords.size() * sizeof(Vec2),
67 VK_BUFFER_USAGE_VERTEX_BUFFER_BIT))) {
68 vku_destroy_buffer(vk_vertices);
69 vku_destroy_buffer(vk_normals);
72 "Failed to create the buffer for the texture coordinates.\n");
76 if(!(vk_indices = vku_create_buffer(indices.size() * 2,
77 VK_BUFFER_USAGE_INDEX_BUFFER_BIT))) {
78 vku_destroy_buffer(vk_vertices);
79 vku_destroy_buffer(vk_normals);
80 vku_destroy_buffer(vk_tex_coords);
82 fprintf(stderr, "Failed to create the indices buffer.\n");
88 //TODO this is going to change when we allocate one mem block for all data,
89 //for the moment we map each buffer memory block and we set the data
94 void MeshVK::draw() const
98 void MeshVK::draw_normals(float scale) const