RunicVTT Open Source Virtual Tabletop for TTRPG using P2P
Loading...
Searching...
No Matches
VertexBufferLayout.h
Go to the documentation of this file.
1#pragma once
2
3#include <vector>
4#include "GL/glew.h"
5#include "Renderer.h"
6#include <stdexcept>
7
9{
10 unsigned int type;
11 unsigned int count;
12 unsigned char normalized;
13
14 static unsigned int GetSizeOfType(unsigned int type)
15 {
16 switch (type)
17 {
18 case GL_FLOAT:
19 return 4;
20 case GL_UNSIGNED_INT:
21 return 4;
22 case GL_UNSIGNED_BYTE:
23 return 1;
24 }
25 ASSERT(false);
26 return 0;
27 }
28};
29
31{
32private:
33 std::vector<VertexBufferElement> m_Elements;
34 unsigned int m_Stride;
35
36public:
39
40 template <typename T>
41 void Push(unsigned int count)
42 {
43 std::runtime_error(false);
44 }
45
46 template <>
47 void Push<float>(unsigned int count)
48 {
49 VertexBufferElement vbe = {GL_FLOAT, count, GL_FALSE};
50 m_Elements.push_back(vbe);
52 }
53
54 template <>
55 void Push<unsigned int>(unsigned int count)
56 {
57 VertexBufferElement vbe = {GL_UNSIGNED_INT, count, GL_FALSE};
58 m_Elements.push_back(vbe);
59 m_Stride += count * VertexBufferElement::GetSizeOfType(GL_UNSIGNED_INT);
60 }
61
62 template <>
63 void Push<unsigned char>(unsigned int count)
64 {
65 VertexBufferElement vbe = {GL_UNSIGNED_BYTE, count, GL_TRUE};
66 m_Elements.push_back(vbe);
67 m_Stride += count * VertexBufferElement::GetSizeOfType(GL_UNSIGNED_BYTE);
68 }
69
70 inline const std::vector<VertexBufferElement> GetElements() const
71 {
72 return m_Elements;
73 };
74 inline unsigned int GetStride() const
75 {
76 return m_Stride;
77 };
78};
#define ASSERT(x)
Definition Renderer.h:9
std::vector< VertexBufferElement > m_Elements
void Push(unsigned int count)
unsigned int GetStride() const
const std::vector< VertexBufferElement > GetElements() const
static unsigned int GetSizeOfType(unsigned int type)