36 : m_elements(elements)
38 CalculateOffsetAndStride();
42 : m_elements(elements)
44 CalculateOffsetAndStride();
47 inline const std::vector<BufferElement>&
GetElements()
const {
return m_elements; }
49 std::vector<BufferElement>::iterator
begin() {
return m_elements.begin(); }
50 std::vector<BufferElement>::iterator
end() {
return m_elements.end(); }
51 std::vector<BufferElement>::const_iterator
begin()
const {
return m_elements.begin(); }
52 std::vector<BufferElement>::const_iterator
end()
const {
return m_elements.end(); }
54 inline uint32_t
GetStride()
const {
return m_stride; }
56 void CalculateOffsetAndStride()
58 unsigned int offset = 0;
61 for (
auto& element : m_elements)
63 element.Offset = offset;
64 offset += element.Size;
65 m_stride += element.Size;
66 element.Index = index++;
70 std::vector<BufferElement> m_elements;
71 uint32_t m_stride = 0;
78 : m_data(vertices), m_size(size) { }
85 virtual void SetData(
const void* newData, uint32_t size) = 0;
86 virtual void Resize(uint32_t size) = 0;
88 virtual void Bind()
const = 0;
95 void SetSize(uint32_t newSize) { m_size = newSize; }
uint32_t GetStride() const
std::vector< BufferElement >::iterator end()
BufferLayout(const std::initializer_list< BufferElement > &elements)
std::vector< BufferElement >::const_iterator end() const
const std::vector< BufferElement > & GetElements() const
BufferLayout(const std::vector< BufferElement > &elements)
std::vector< BufferElement >::iterator begin()
std::vector< BufferElement >::const_iterator begin() const
virtual void Bind() const =0
virtual uint32_t GetCount() const =0
static IndexBuffer * Create(const void *vertices, uint32_t count)
virtual void Unbind() const =0
VertexBuffer(const void *vertices, uint32_t size)
virtual const BufferLayout & GetLayout() const =0
virtual ~VertexBuffer()=default
virtual void SetLayout(const BufferLayout &layout)=0
virtual void Resize(uint32_t size)=0
virtual void SetData(const void *newData, uint32_t size)=0
virtual void Unbind() const =0
virtual void Bind() const =0
static VertexBuffer * Create(const void *vertices, const uint32_t size)
void SetSize(uint32_t newSize)
uint32_t GetDataTypeSize(EngineDataType type)
EngineDataType ShaderDataType
uint32_t GetDataTypeCount(EngineDataType type)
BufferElement(ShaderDataType type, const std::string &name, bool normalized=false)