Pioneer
VertexBufferDummy.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 #ifndef DUMMY_VERTEXBUFFER_H
5 #define DUMMY_VERTEXBUFFER_H
6 
7 #include "graphics/Types.h"
9 
10 #include <memory>
11 
12 namespace Graphics {
13 
14  namespace Dummy {
15 
17  public:
20  m_buffer(new Uint8[m_desc.numVertices * m_desc.stride])
21  {}
22 
23  // copies the contents of the VertexArray into the buffer
24  virtual bool Populate(const VertexArray &) override final { return true; }
25 
26  // change the buffer data without mapping
27  virtual void BufferData(const size_t, void *) override final {}
28 
29  virtual void Bind() override final {}
30  virtual void Release() override final {}
31 
32  virtual void Unmap() override final {}
33 
34  protected:
35  virtual Uint8 *MapInternal(BufferMapMode) override final { return m_buffer.get(); }
36 
37  private:
38  std::unique_ptr<Uint8[]> m_buffer;
39  };
40 
42  public:
43  IndexBuffer(Uint32 size, BufferUsage bu, IndexBufferSize el) :
44  Graphics::IndexBuffer(size, bu, el)
45  {
46  if (el == INDEX_BUFFER_32BIT)
47  m_buffer.reset(new Uint32[size]);
48  else
49  m_buffer16.reset(new Uint16[size]);
50  }
51 
52  virtual Uint32 *Map(BufferMapMode) override final { return m_buffer.get(); }
53  virtual Uint16 *Map16(BufferMapMode) override final { return m_buffer16.get(); }
54  virtual void Unmap() override final {}
55 
56  virtual void BufferData(const size_t, void *) override final {}
57 
58  virtual void Bind() override final {}
59  virtual void Release() override final {}
60 
61  private:
62  std::unique_ptr<Uint32[]> m_buffer;
63  std::unique_ptr<Uint16[]> m_buffer16;
64  };
65 
66  // Instance buffer
68  public:
69  InstanceBuffer(Uint32 size, BufferUsage hint) :
70  Graphics::InstanceBuffer(size, hint),
71  m_data(new matrix4x4f[size])
72  {}
73  virtual ~InstanceBuffer(){};
74  virtual matrix4x4f *Map(BufferMapMode) override final { return m_data.get(); }
75  virtual void Unmap() override final {}
76 
77  Uint32 GetSize() const { return m_size; }
78  BufferUsage GetUsage() const { return m_usage; }
79 
80  virtual void Bind() override final {}
81  virtual void Release() override final {}
82 
83  protected:
84  std::unique_ptr<matrix4x4f> m_data;
85  };
86 
87  class MeshObject final : public Graphics::MeshObject {
88  public:
90  m_vtxBuffer(v),
91  m_idxBuffer(i)
92  {}
93  virtual ~MeshObject() override final {}
94 
95  virtual Graphics::VertexBuffer *GetVertexBuffer() const override final { return m_vtxBuffer.Get(); }
96  virtual Graphics::IndexBuffer *GetIndexBuffer() const override final { return m_idxBuffer.Get(); }
97 
98  virtual void Bind() override final {}
99  virtual void Release() override final {}
100 
101  protected:
104  };
105 
106  } // namespace Dummy
107 } // namespace Graphics
108 
109 #endif
Definition: VertexBufferDummy.h:41
virtual void BufferData(const size_t, void *) override final
Definition: VertexBufferDummy.h:56
virtual Uint16 * Map16(BufferMapMode) override final
Definition: VertexBufferDummy.h:53
virtual Uint32 * Map(BufferMapMode) override final
Definition: VertexBufferDummy.h:52
IndexBuffer(Uint32 size, BufferUsage bu, IndexBufferSize el)
Definition: VertexBufferDummy.h:43
virtual void Release() override final
Definition: VertexBufferDummy.h:59
virtual void Bind() override final
Definition: VertexBufferDummy.h:58
virtual void Unmap() override final
Definition: VertexBufferDummy.h:54
Definition: VertexBufferDummy.h:67
BufferUsage GetUsage() const
Definition: VertexBufferDummy.h:78
virtual void Unmap() override final
Definition: VertexBufferDummy.h:75
std::unique_ptr< matrix4x4f > m_data
Definition: VertexBufferDummy.h:84
virtual ~InstanceBuffer()
Definition: VertexBufferDummy.h:73
Uint32 GetSize() const
Definition: VertexBufferDummy.h:77
InstanceBuffer(Uint32 size, BufferUsage hint)
Definition: VertexBufferDummy.h:69
virtual void Bind() override final
Definition: VertexBufferDummy.h:80
virtual matrix4x4f * Map(BufferMapMode) override final
Definition: VertexBufferDummy.h:74
virtual void Release() override final
Definition: VertexBufferDummy.h:81
Definition: VertexBufferDummy.h:87
virtual void Bind() override final
Definition: VertexBufferDummy.h:98
RefCountedPtr< IndexBuffer > m_idxBuffer
Definition: VertexBufferDummy.h:103
virtual Graphics::VertexBuffer * GetVertexBuffer() const override final
Definition: VertexBufferDummy.h:95
RefCountedPtr< VertexBuffer > m_vtxBuffer
Definition: VertexBufferDummy.h:102
virtual ~MeshObject() override final
Definition: VertexBufferDummy.h:93
virtual Graphics::IndexBuffer * GetIndexBuffer() const override final
Definition: VertexBufferDummy.h:96
MeshObject(VertexBuffer *v, IndexBuffer *i)
Definition: VertexBufferDummy.h:89
virtual void Release() override final
Definition: VertexBufferDummy.h:99
Definition: VertexBufferDummy.h:16
virtual void Unmap() override final
Definition: VertexBufferDummy.h:32
virtual Uint8 * MapInternal(BufferMapMode) override final
Definition: VertexBufferDummy.h:35
virtual void BufferData(const size_t, void *) override final
Definition: VertexBufferDummy.h:27
VertexBuffer(const VertexBufferDesc &d)
Definition: VertexBufferDummy.h:18
virtual bool Populate(const VertexArray &) override final
Definition: VertexBufferDummy.h:24
virtual void Bind() override final
Definition: VertexBufferDummy.h:29
virtual void Release() override final
Definition: VertexBufferDummy.h:30
Definition: VertexBuffer.h:102
Definition: VertexBuffer.h:127
BufferUsage m_usage
Definition: VertexBuffer.h:142
uint32_t m_size
Definition: BufferCommon.h:32
Definition: VertexBuffer.h:156
Definition: VertexArray.h:19
Definition: VertexBuffer.h:65
VertexBufferDesc m_desc
Definition: VertexBuffer.h:98
Definition: RefCounted.h:36
Definition: Background.h:14
IndexBufferSize
Definition: Types.h:76
@ INDEX_BUFFER_32BIT
Definition: Types.h:78
BufferUsage
Definition: Types.h:65
BufferMapMode
Definition: Types.h:70
Definition: VertexBuffer.h:43