VulkanEngine 0.1
Graphics engine using Vulkan
Loading...
Searching...
No Matches
MeshBase.h
1// Copyright (c) 2024 Michael Carlie. All Rights Reserved.
2//
3// This software is released under the MIT License.
4// https://opensource.org/licenses/MIT
5
6#ifndef INCLUDE_VULKANENGINE_MESHBASE_H_
7#define INCLUDE_VULKANENGINE_MESHBASE_H_
8
9#include <VulkanEngine/BoundingBox.h>
10#include <VulkanEngine/Shader.h>
11
12#include <memory>
13
14namespace VulkanEngine {
15
17class MeshBase {
18 public:
20 MeshBase();
21
23 ~MeshBase();
24
27 virtual const vk::PipelineVertexInputStateCreateInfo&
29
32 virtual const vk::PipelineInputAssemblyStateCreateInfo&
34
40 virtual void transferBuffers(
41 const vk::CommandBuffer& command_buffer = nullptr) = 0;
42
45 virtual void bindVertexBuffers(const vk::CommandBuffer& command_buffer) = 0;
46
49 virtual void bindIndexBuffer(const vk::CommandBuffer& command_buffer) = 0;
50
53 virtual void draw(const vk::CommandBuffer& command_buffer) = 0;
54
55 template <typename PositionType>
56 const BoundingBox<PositionType>& getBoundingBox() const {
57 return *static_cast<const BoundingBox<PositionType>*>(bounding_box.get());
58 }
59
60 protected:
62 std::shared_ptr<BoundingBoxBase> bounding_box;
63};
64
65} // namespace VulkanEngine
66
67#endif // INCLUDE_VULKANENGINE_MESHBASE_H_
Base class for Mesh specializations.
Definition: MeshBase.h:17
virtual void transferBuffers(const vk::CommandBuffer &command_buffer=nullptr)=0
virtual void draw(const vk::CommandBuffer &command_buffer)=0
std::shared_ptr< BoundingBoxBase > bounding_box
The Mesh's bounding box.
Definition: MeshBase.h:62
virtual const vk::PipelineInputAssemblyStateCreateInfo & createVkPipelineInputAssemblyStateCreateInfo()=0
~MeshBase()
Destructor.
Definition: MeshBase.cpp:28
virtual void bindVertexBuffers(const vk::CommandBuffer &command_buffer)=0
virtual void bindIndexBuffer(const vk::CommandBuffer &command_buffer)=0
virtual const vk::PipelineVertexInputStateCreateInfo & createVkPipelineVertexInputStateCreateInfo()=0
MeshBase()
Constructor.
Definition: MeshBase.cpp:26
TODO development of this class is in progress.
Definition: Attribute.h:13
Definition: BoundingBox.h:15