KarmaEngine
Game Engine for practical learning and research purposes
Loading...
Searching...
No Matches
OpenGLBuffer.h
Go to the documentation of this file.
1
10#pragma once
11
13
14namespace Karma
15{
22 {
23 public:
41 OpenGLVertexBuffer(float* vertices, uint32_t size);
42
50 virtual ~OpenGLVertexBuffer();
51
58 virtual void Bind() const override;
59
65 virtual void UnBind() const override;
66
72 virtual const BufferLayout& GetLayout() const override
73 {
74 return m_Layout;
75 }
76
84 virtual void SetLayout(const BufferLayout& layout) override;
85
86 private:
87 uint32_t m_RendererID;
88 BufferLayout m_Layout;
89 };
90
97 {
98 public:
109 OpenGLIndexBuffer(uint32_t* indices, uint32_t count);
110
116 virtual ~OpenGLIndexBuffer();
117
124 virtual void Bind() const override;
125
131 virtual void UnBind() const override;
132
138 virtual uint32_t GetCount() const override { return m_Count; }
139
140 private:
141 uint32_t m_RendererID;
142 uint32_t m_Count;
143 };
144
149 {
150 public:
159 static void SetUpImageBuffer(const char* filename);
160
167 static void BindTexture();// Experimental, need right OpenGLTexture abstraction
168
169 private:
170 static unsigned int m_ImageBufferID;
171 };
172
177 {
178 public:
187 OpenGLUniformBuffer(std::vector<ShaderDataType> dataTypes, uint32_t bindingPointIndex);
188
194 uint32_t GetUniformsID() const { return m_UniformsID; }
195
201 virtual ~OpenGLUniformBuffer();
202
208 virtual void UploadUniformBuffer(size_t frameIndex) override;
209
210 private:
216 void GenerateUniformBufferObject();
217
223 void BindUniformBufferObject() const;
224
225 private:
226 uint32_t m_UniformsID;
227 };
228}
This file contains base classes for various kinds of buffers used by the Engine.
#define KARMA_API
Defining Karma's API macro for storage class information.
Definition Core.h:41
A format for vertex buffer say.
Definition Buffer.h:183
Abstract class for image buffer.
Definition Buffer.h:331
An abstract class for index buffer.
Definition Buffer.h:315
OpenGL's image buffer, used in agnostic Texture instance.
Definition OpenGLBuffer.h:149
static void SetUpImageBuffer(const char *filename)
Sets up the resources for supplied texture.
Definition OpenGLBuffer.cpp:69
static void BindTexture()
Bind the image buffer.
Definition OpenGLBuffer.cpp:102
OpenGLIndexBuffer(uint32_t *indices, uint32_t count)
Constructor.
Definition OpenGLBuffer.cpp:42
virtual uint32_t GetCount() const override
Returns the length of indexbuffer.
Definition OpenGLBuffer.h:138
virtual void Bind() const override
Binds the indexbuffer.
Definition OpenGLBuffer.cpp:57
virtual void UnBind() const override
UnBinds the buffer.
Definition OpenGLBuffer.cpp:62
virtual void Bind() const override
Binds the vertexbuffer.
Definition OpenGLBuffer.cpp:25
virtual const BufferLayout & GetLayout() const override
Getter for the layout of the vertex buffer.
Definition OpenGLBuffer.h:72
OpenGLVertexBuffer(float *vertices, uint32_t size)
Constructor.
Definition OpenGLBuffer.cpp:10
virtual void UnBind() const override
UnBinds the vertexbuffer (cleanup)
Definition OpenGLBuffer.cpp:30
An abstract class for vertex buffer.
Definition Buffer.h:298
OpenGL's uniform buffer, used in OpenGLShader type instance of Shader object.
Definition OpenGLBuffer.h:177
OpenGLUniformBuffer(std::vector< ShaderDataType > dataTypes, uint32_t bindingPointIndex)
Constructor Generate the buffers for uniforms and bind them.
Definition OpenGLBuffer.cpp:107
uint32_t GetUniformsID() const
Getter for the uniform id.
Definition OpenGLBuffer.h:194
UniformBufferObject(std::vector< ShaderDataType > dataTypes, uint32_t bindingPointIndex)
An agnostic constructor provided for precomputation of offset and buffer size.
Definition Buffer.cpp:78