Pioneer
UniformBuffer.h
Go to the documentation of this file.
1 // Copyright © 2008-2023 Pioneer Developers. See AUTHORS.txt for details
2 // Licensed under the terms of the GPL v3. See licenses/GPL-3.txt
3 
4 #pragma once
5 
7 #include "graphics/Types.h"
8 
9 namespace Graphics {
10 
11  class UniformBuffer : public Mappable {
12  public:
13  UniformBuffer(uint32_t size, BufferUsage usage) :
14  Mappable(size),
15  m_usage(usage)
16  {}
17  virtual ~UniformBuffer(){};
18 
19  template <typename T>
21  {
22  return ScopedMapping<T>(reinterpret_cast<T *>(MapInternal(mode)), this);
23  }
24 
25  virtual void Unmap() = 0;
26 
27  // copies the contents of the passed object into the buffer
28  template <typename T>
29  void BufferData(const T &obj)
30  {
31  return BufferData(sizeof(T), (void *)&obj);
32  }
33 
34  // change the buffer data without mapping
35  virtual void BufferData(const size_t, void *) = 0;
36 
38 
39  protected:
40  virtual void *MapInternal(BufferMapMode mode) = 0;
42  };
43 
44 } // namespace Graphics
Definition: BufferCommon.h:16
uint32_t m_size
Definition: BufferCommon.h:32
Definition: UniformBuffer.h:11
BufferBinding< UniformBuffer > GetBufferBinding()
Definition: UniformBuffer.h:37
virtual void * MapInternal(BufferMapMode mode)=0
virtual ~UniformBuffer()
Definition: UniformBuffer.h:17
void BufferData(const T &obj)
Definition: UniformBuffer.h:29
virtual void Unmap()=0
virtual void BufferData(const size_t, void *)=0
ScopedMapping< T > Map(BufferMapMode mode)
Definition: UniformBuffer.h:20
BufferUsage m_usage
Definition: UniformBuffer.h:41
UniformBuffer(uint32_t size, BufferUsage usage)
Definition: UniformBuffer.h:13
Definition: Background.h:14
BufferUsage
Definition: Types.h:65
BufferMapMode
Definition: Types.h:70
Definition: BufferCommon.h:63
Definition: BufferCommon.h:38