Cogs.Core
RenderMesh.h
1#pragma once
2#include <unordered_map>
3
4#include "RenderResourceBase.h"
5#include "Resources/MeshStreamsLayout.h"
6
7#include "Rendering/Common.h"
8#include "Rendering/VertexFormat.h"
9
10namespace Cogs
11{
12 class IGraphicsDevice;
13
14 namespace Core
15 {
16 struct Mesh;
17 struct RenderEffect;
18
19 struct RenderMesh : public RenderResourceBase<Mesh>
20 {
21 RenderMesh();
22 RenderMesh(RenderMesh &) = delete;
23
24 ActivationResult update(Mesh * mesh, IGraphicsDevice * device, class RenderResources * resources);
25 void release(class Renderer * renderer);
26
27 Mesh * getMesh() const { return getResource(); }
28
29 Cogs::VertexArrayObjectHandle getVertexArrayObject(IGraphicsDevice* device, const RenderEffect* renderEffect) const;
30
31 uint32_t numVertexes = 0;
32
33 MeshStreamsLayout streamsLayout;
34
36 uint32_t vertexOffsets[MeshStreamsLayout::maxStreams];
37 uint32_t vertexStrides[MeshStreamsLayout::maxStreams];
38
40 uint32_t indexOffset = 0;
41 uint32_t indexStride = 4;
42
43 mutable std::unordered_map<RenderResource::Id, Cogs::VertexArrayObjectHandle> vaos;
44 };
45 }
46}
Contains render resources used by the renderer.
Core renderer system.
Definition: Renderer.h:28
Represents a graphics device used to manage graphics resources and issue drawing commands.
ActivationResult
Defines results for resource activation.
Definition: ResourceBase.h:14
Contains all Cogs related functionality.
Definition: FieldSetter.h:23
static constexpr size_t maxStreams
Meshes contain streams of vertex data in addition to index data and options defining geometry used fo...
Definition: Mesh.h:265
Render resources represent Engine resources like Mesh, Effect or MaterialInstance,...
static const Handle_t NoHandle
Represents a handle to nothing.
Definition: Common.h:77