Pioneer
Loading...
Searching...
No Matches
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
9namespace 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
ScopedMapping< T > Map(BufferMapMode mode)
Definition UniformBuffer.h:20
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
virtual void * MapInternal(BufferMapMode mode)=0
BufferBinding< UniformBuffer > GetBufferBinding()
Definition UniformBuffer.h:37
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