blob: df4d31102a7f3fa38794bee40cf6b7a87fd99de2 [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->get()),
vk_index_buffer_(index_buffer->get()),
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