Pioneer
Loading...
Searching...
No Matches
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
12namespace 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:
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),
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
IndexBuffer(Uint32 size, BufferUsage bu, IndexBufferSize el)
Definition VertexBufferDummy.h:43
virtual void Release() override final
Definition VertexBufferDummy.h:59
virtual Uint32 * Map(BufferMapMode) override final
Definition VertexBufferDummy.h:52
virtual void Bind() override final
Definition VertexBufferDummy.h:58
virtual Uint16 * Map16(BufferMapMode) override final
Definition VertexBufferDummy.h:53
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 void Release() override final
Definition VertexBufferDummy.h:81
virtual matrix4x4f * Map(BufferMapMode) override final
Definition VertexBufferDummy.h:74
Definition VertexBufferDummy.h:87
virtual Graphics::VertexBuffer * GetVertexBuffer() const override final
Definition VertexBufferDummy.h:95
virtual Graphics::IndexBuffer * GetIndexBuffer() const override final
Definition VertexBufferDummy.h:96
virtual void Bind() override final
Definition VertexBufferDummy.h:98
RefCountedPtr< IndexBuffer > m_idxBuffer
Definition VertexBufferDummy.h:103
RefCountedPtr< VertexBuffer > m_vtxBuffer
Definition VertexBufferDummy.h:102
virtual ~MeshObject() override final
Definition VertexBufferDummy.h:93
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