Grindstone Game Engine v0.2.0
An open source game engine and toolkit.
Loading...
Searching...
No Matches
Mesh3dAsset.hpp
1#pragma once
2
3#include <vector>
4#include <filesystem>
5
6#include <Common/ResourcePipeline/Uuid.hpp>
7#include <Common/Formats/Model.hpp>
8
9#include <EngineCore/ECS/Entity.hpp>
10#include <EngineCore/Assets/Asset.hpp>
11
12namespace Grindstone {
13 namespace GraphicsAPI {
15 class Buffer;
16 }
17
18 enum class VertexBuffers {
19 Vertex = 0,
20 Normal,
21 Tangent,
22 TexCoord,
23 Last
24 };
25
26 struct Mesh3dAsset : public Asset {
27 Mesh3dAsset(Uuid uuid, std::string_view name) : Asset(uuid, name) {}
28 struct Submesh {
29 uint32_t indexCount = 0;
30 uint32_t baseVertex = 0;
31 uint32_t baseIndex = 0;
32 uint32_t materialIndex = UINT32_MAX;
33 GraphicsAPI::VertexArrayObject* vertexArrayObject = nullptr;
34 };
35
37 GraphicsAPI::VertexArrayObject* vertexArrayObject = nullptr;
38 GraphicsAPI::Buffer* positionBuffer = nullptr;
39 GraphicsAPI::Buffer* normalBuffer = nullptr;
40 GraphicsAPI::Buffer* tangentBuffer = nullptr;
41 GraphicsAPI::Buffer* uvBuffer = nullptr;
42 GraphicsAPI::Buffer* indexBuffer = nullptr;
43 std::vector<Submesh> submeshes;
44
45 DEFINE_ASSET_TYPE("Mesh3dAsset", AssetType::Mesh3d)
46 };
47}
Definition Buffer.hpp:56
Definition VertexArrayObject.hpp:9
Definition Uuid.hpp:7
Definition Mesh3dAsset.hpp:28