blob: 1c38d014d32645b5712b246b5b40a0b000b04f51 [file] [log] [blame]
// Copyright 2016 The Fuchsia Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "lib/escher/shape/mesh.h"
#include "lib/escher/resources/resource_recycler.h"
#include "lib/escher/vk/buffer.h"
namespace escher {
const ResourceTypeInfo Mesh::kTypeInfo("Mesh", ResourceType::kResource,
ResourceType::kWaitableResource,
ResourceType::kMesh);
Mesh::Mesh(ResourceRecycler* resource_recycler, MeshSpec spec,
BoundingBox bounding_box, uint32_t num_vertices,
uint32_t num_indices, BufferPtr vertex_buffer,
BufferPtr index_buffer, vk::DeviceSize vertex_buffer_offset,
vk::DeviceSize index_buffer_offset)
: WaitableResource(resource_recycler),
spec_(std::move(spec)),
bounding_box_(bounding_box),
num_vertices_(num_vertices),
num_indices_(num_indices),
vk_vertex_buffer_(vertex_buffer->vk()),
vk_index_buffer_(index_buffer->vk()),
vertex_buffer_(std::move(vertex_buffer)),
index_buffer_(std::move(index_buffer)),
vertex_buffer_offset_(vertex_buffer_offset),
index_buffer_offset_(index_buffer_offset) {
FXL_DCHECK(num_vertices_ * spec_.GetStride() + vertex_buffer_offset_ <=
vertex_buffer_->size());
FXL_DCHECK(num_indices_ * sizeof(uint32_t) + index_buffer_offset_ <=
index_buffer_->size());
}
Mesh::~Mesh() {}
} // namespace escher