KarmaEngine
Game Engine for practical learning and research purposes
Loading...
Searching...
No Matches
OpenGLVertexArray.h
Go to the documentation of this file.
1
10#pragma once
11
14
15namespace Karma
16{
23 {
24 public:
33
39 virtual ~OpenGLVertexArray();
40
46 virtual void Bind() const override;
47
53 virtual void UnBind() const override;
54
55 // For legacy purposes. Use Mesh abstraction
56
57 virtual void AddVertexBuffer(const std::shared_ptr<VertexBuffer>& vertexBuffer) override;
58 virtual void SetIndexBuffer(const std::shared_ptr<IndexBuffer>& indexBuffer) override;
59 // Use Material abstraction
60 virtual void SetShader(std::shared_ptr<Shader> shader) override {}
61
62 // End legacy functions
63
71 virtual void SetMesh(std::shared_ptr<Mesh> mesh) override;
72
78 virtual void SetMaterial(std::shared_ptr<Material> material) override;
79
85 virtual const std::vector<std::shared_ptr<VertexBuffer>>& GetVertexBuffers() const override { return m_VertexBuffers; }
86
92 virtual const IndexBuffer* GetIndexBuffer() const override { return m_IndexBuffer.get(); }
93
99 virtual std::shared_ptr<Material> GetMaterial() const override { return m_Materials.at(0); }
100
106 virtual void UpdateProcessAndSetReadyForSubmission() const override;
107
108 private:
109 uint32_t m_RendererID;
110
111 std::vector<std::shared_ptr<VertexBuffer>> m_VertexBuffers;
112 std::shared_ptr<IndexBuffer> m_IndexBuffer;
113
114 // Material relevant members
115 std::vector<std::shared_ptr<Material>> m_Materials;
116 std::vector<std::shared_ptr<OpenGLShader>> m_Shaders;
117 std::shared_ptr<OpenGLShader> m_Shader;
118 };
119}
#define KARMA_API
Defining Karma's API macro for storage class information.
Definition Core.h:41
This file contains OpenGLShader class.
This file contains the VertexArray class.
An abstract class for index buffer.
Definition Buffer.h:315
virtual void SetMesh(std::shared_ptr< Mesh > mesh) override
Using OpenGL's API, the vertex buffer is processed for rendering.
Definition OpenGLVertexArray.cpp:93
virtual const std::vector< std::shared_ptr< VertexBuffer > > & GetVertexBuffers() const override
Getter for vertex buffer.
Definition OpenGLVertexArray.h:85
OpenGLVertexArray()
A constructor.
Definition OpenGLVertexArray.cpp:40
virtual void UnBind() const override
Unbinds the array.
Definition OpenGLVertexArray.cpp:57
virtual std::shared_ptr< Material > GetMaterial() const override
Getter for Material.
Definition OpenGLVertexArray.h:99
virtual void Bind() const override
Binds the vertex array object.
Definition OpenGLVertexArray.cpp:52
virtual const IndexBuffer * GetIndexBuffer() const override
Getter for index buffer.
Definition OpenGLVertexArray.h:92
virtual void SetMaterial(std::shared_ptr< Material > material) override
Sets the material cache for OpenGL's rendering.
Definition OpenGLVertexArray.cpp:126
A class, comprising of Mesh and Material substances along with relevant setup, for a renderable unit.
Definition VertexArray.h:25