LkEngine 0.1.2
 
Loading...
Searching...
No Matches
VertexBuffer.h
1#pragma once
2
5#include "LkEngine/Core/LObject/ObjectPtr.h"
6
7#include "IndexBuffer.h"
8#include "VertexBufferLayout.h"
9
10
11namespace LkEngine {
12
15 {
16 None = 0,
17 Static = 1,
18 Dynamic = 2
19 };
20
21 class LVertexBuffer : public LObject
22 {
23 public:
24 virtual ~LVertexBuffer() = default;
25
26 virtual void SetData(void* Buffer, const uint32_t Size, const uint32_t Offset = 0) = 0;
27
28 virtual FBuffer GetLocalData() = 0;
29 virtual void SetLayout(const FVertexBufferLayout& layout) = 0;
30 virtual void SetIndexBuffer(const TObjectPtr<LIndexBuffer> indexBuffer) = 0;
31
32 virtual void Bind() const = 0;
33 virtual uint32_t GetSize() const = 0;
34
35 virtual TObjectPtr<LIndexBuffer> GetIndexBuffer() = 0;
36
37 virtual FVertexBufferLayout GetLayout() const = 0;
38 virtual FVertexBufferLayout& GetLayout() = 0;
39
40 static TObjectPtr<LVertexBuffer> Create(void* InBuffer,
41 const uint32_t Size,
42 const EVertexBufferUsage BufferUsage = EVertexBufferUsage::Dynamic);
43
44 static TObjectPtr<LVertexBuffer> Create(const void* InBuffer,
45 const uint32_t Size,
46 const EVertexBufferUsage BufferUsage = EVertexBufferUsage::Dynamic);
47
48 static TObjectPtr<LVertexBuffer> Create(const uint32_t Size, const EVertexBufferUsage BufferUsage = EVertexBufferUsage::Dynamic);
49
50 private:
52 };
53
54}
Core header.
LObject implementation.
Definition Object.h:46
Definition VertexBuffer.h:22
Definition ObjectPtr.h:102
#define LCLASS(Class)
Definition CoreMacros.h:226
Definition Asset.h:11
EVertexBufferUsage
Definition VertexBuffer.h:15
Definition Buffer.h:9
Definition VertexBufferLayout.h:124