LkEngine 0.1.2
 
Loading...
Searching...
No Matches
OpenGLVertexBuffer.h
1#pragma once
2
3#include "LkEngine/Renderer/VertexBuffer.h"
4
5
6namespace LkEngine {
7
9 {
10 public:
11 LOpenGLVertexBuffer(void* InData, const uint32_t InSize, const EVertexBufferUsage InBufferUsage = EVertexBufferUsage::Dynamic);
12 LOpenGLVertexBuffer(const uint32_t InSize, const EVertexBufferUsage InBufferUsage = EVertexBufferUsage::Dynamic);
13 LOpenGLVertexBuffer() = delete;
15
16 virtual void SetData(void* InData, const uint32_t InSize, const uint32_t InOffset = 0) override;
17
18 virtual FBuffer GetLocalData() override { return m_LocalData; }
19 virtual uint32_t GetSize() const override { return m_Size; }
20
21 virtual void SetIndexBuffer(const TObjectPtr<LIndexBuffer> InIndexBuffer) override;
22 virtual void SetLayout(const FVertexBufferLayout& InLayout) override;
23
24 FORCEINLINE LRendererID GetRendererID() const { return m_RendererID; }
25 FORCEINLINE virtual TObjectPtr<LIndexBuffer> GetIndexBuffer() override { return m_IndexBuffer; }
26
27 virtual FVertexBufferLayout GetLayout() const override { return Layout; }
28 virtual FVertexBufferLayout& GetLayout() override { return Layout; }
29
30 virtual void Bind() const override;
31
32 private:
33 void AddVertexBufferToVertexArray();
34 void AddVertexBuffer(LVertexBuffer& VertexBuffer);
35
36 private:
37 LRendererID m_RendererID = 0;
38 FBuffer m_LocalData{};
39 uint64_t m_Size = 0;
40 EVertexBufferUsage m_Usage = EVertexBufferUsage::None;
41
42 TObjectPtr<LIndexBuffer> m_IndexBuffer = nullptr;
43 FVertexBufferLayout Layout{};
44
45 LRendererID m_VertexArrayID = 0;
46 unsigned int m_VertexBufferIndex = 0;
47
49 };
50
51}
Definition OpenGLVertexBuffer.h:9
Definition VertexBuffer.h:22
Definition ObjectPtr.h:102
#define LCLASS(Class)
Definition CoreMacros.h:226
uint32_t LRendererID
Definition CoreTypes.h:30
Definition Asset.h:11
EVertexBufferUsage
Definition VertexBuffer.h:15
Definition Buffer.h:9
Definition VertexBufferLayout.h:124