Saga3D API Documentation  1.0-RC4
CGPUMeshBuffer.h
Go to the documentation of this file.
1 #ifndef __CGPU_MESH_BUFFER_H_INCLUDED__
2 #define __CGPU_MESH_BUFFER_H_INCLUDED__
3 
4 #include "IMeshBuffer.h"
5 #include "SShaderBuffer.h"
6 
7 namespace saga
8 {
9 namespace scene
10 {
12  class CGPUMeshBuffer : public IMeshBuffer
13  {
14  public:
17  : ID(++RootID)
18  {
19 
20  }
21 
22  virtual bool isGPUBuffer() const override { return true; }
23 
24  virtual ~CGPUMeshBuffer() {}
25 
26  virtual std::uint64_t getID() const override { return ID; }
27 
28  virtual void buildBuffer(video::IVideoDriver& driver, const video::PipelineHandle pipeline) override {}
29 
31 
32  virtual void* getVertices() override { return nullptr; }
33 
35 
36  virtual const void* getData(const video::PipelineHandle pipeline) const override { return nullptr; }
37 
39 
40  virtual std::size_t getSize(const video::PipelineHandle pipeline) const override { return 0; }
41 
43 
44  void setVertexBuffer(const video::ShaderBufferHandle buffer) { VertexBuffer = buffer; }
45 
47 
48  auto getVertexBuffer() const { return VertexBuffer; }
49 
51  virtual void setVertexCount(const size_t count) override { VertexCount = count; }
52 
54 
55  virtual std::size_t getVertexCount() const override { return VertexCount; }
56 
58 
59  void setIndexBuffer(const video::ShaderBufferHandle buffer) { IndexBuffer = buffer; }
60 
62 
63  auto getIndexBuffer() const { return IndexBuffer; }
64 
66  virtual void setIndexCount(const std::uint32_t count) { IndexCount = count; }
67 
69 
70  virtual const std::uint32_t* getIndices() const override { return nullptr; }
71 
73 
74  virtual std::uint32_t* getIndices() override {return nullptr;}
75 
77  virtual std::uint32_t getIndex(std::size_t offset) const override { return 0; }
78 
80 
81  virtual std::uint32_t getIndexCount() const override { return IndexCount; }
82 
84 
85  virtual const core::aabbox3d<float>& getBoundingBox() const override { return {}; }
86 
88 
89  virtual void setBoundingBox(const core::aabbox3df& box) override {}
91 
93 
94  virtual void recalculateBoundingBox() override {}
95 
97  virtual const glm::vec3& getPosition(std::uint32_t i) const override { return {}; }
98 
100  virtual const glm::vec3& getNormal(std::uint32_t i) const override { return {}; }
101 
103  virtual const glm::vec2& getTCoords(std::uint32_t i) const override { return {}; }
104 
106  virtual const glm::vec3& getTangent(std::uint32_t i) const override { return {}; }
107 
109  virtual const glm::vec3& getBiTangent(std::uint32_t i) const override { return {}; }
110 
112 
116  virtual void append(std::vector<S3DVertex>&& vertices, std::vector<uint32_t>&& indices) override {}
117 
119 
123  virtual void appendAttribute(const char* buffer, const size_t size, const size_t stride) override {}
124 
126 
131  virtual void append(const IMeshBuffer* const other) override {}
132 
133  const std::uint64_t ID;
134 
136  std::size_t VertexCount = 0;
137 
139  std::uint32_t IndexCount = 0;
140  };
141 
142 } // namespace scene
143 } // namespace saga
144 
145 #endif
146 
147 
saga::scene::CGPUMeshBuffer::IndexCount
std::uint32_t IndexCount
Definition: CGPUMeshBuffer.h:139
saga::video::NULL_GPU_RESOURCE_HANDLE
constexpr SGPUResource::HandleType NULL_GPU_RESOURCE_HANDLE
Definition: SGPUResource.h:17
saga::scene::CGPUMeshBuffer
Implementation of the CPU IMeshBuffer interface.
Definition: CGPUMeshBuffer.h:12
saga::scene::CGPUMeshBuffer::append
virtual void append(std::vector< S3DVertex > &&vertices, std::vector< uint32_t > &&indices) override
Append the vertices and indices to the current buffer.
Definition: CGPUMeshBuffer.h:116
saga::video::PipelineHandle
SGPUResource::HandleType PipelineHandle
Definition: SPipeline.h:27
saga::scene::CGPUMeshBuffer::getIndices
virtual std::uint32_t * getIndices() override
Get pointer to indices.
Definition: CGPUMeshBuffer.h:74
saga::scene::CGPUMeshBuffer::VertexBuffer
video::ShaderBufferHandle VertexBuffer
Definition: CGPUMeshBuffer.h:135
saga::scene::CGPUMeshBuffer::setVertexCount
virtual void setVertexCount(const size_t count) override
Set number of vertices.
Definition: CGPUMeshBuffer.h:51
saga::scene::CGPUMeshBuffer::getIndexCount
virtual std::uint32_t getIndexCount() const override
Get number of indices.
Definition: CGPUMeshBuffer.h:81
saga::scene::CGPUMeshBuffer::setIndexCount
virtual void setIndexCount(const std::uint32_t count)
Set number of indices.
Definition: CGPUMeshBuffer.h:66
saga::scene::CGPUMeshBuffer::getTCoords
virtual const glm::vec2 & getTCoords(std::uint32_t i) const override
returns texture coord of vertex i
Definition: CGPUMeshBuffer.h:103
saga::scene::IMeshBuffer
Struct for holding a mesh with a single material.
Definition: IMeshBuffer.h:43
saga::scene::CGPUMeshBuffer::getIndexBuffer
auto getIndexBuffer() const
Get GPU index buffer.
Definition: CGPUMeshBuffer.h:63
saga::scene::CGPUMeshBuffer::getNormal
virtual const glm::vec3 & getNormal(std::uint32_t i) const override
returns normal of vertex i
Definition: CGPUMeshBuffer.h:100
saga::scene::CGPUMeshBuffer::ID
const std::uint64_t ID
Definition: CGPUMeshBuffer.h:133
saga::scene::CGPUMeshBuffer::getVertexCount
virtual std::size_t getVertexCount() const override
Get number of vertices.
Definition: CGPUMeshBuffer.h:55
saga::scene::CGPUMeshBuffer::getVertexBuffer
auto getVertexBuffer() const
Get GPU mesh buffer.
Definition: CGPUMeshBuffer.h:48
saga::scene::CGPUMeshBuffer::setIndexBuffer
void setIndexBuffer(const video::ShaderBufferHandle buffer)
Set a shader buffer as vertex buffer.
Definition: CGPUMeshBuffer.h:59
saga::ID
std::uint32_t ID
Type for node ID.
Definition: ID.h:11
saga::scene::CGPUMeshBuffer::~CGPUMeshBuffer
virtual ~CGPUMeshBuffer()
Definition: CGPUMeshBuffer.h:24
saga::video::ShaderBufferHandle
SGPUResource::HandleType ShaderBufferHandle
Definition: SShaderBuffer.h:23
saga::scene::CGPUMeshBuffer::setVertexBuffer
void setVertexBuffer(const video::ShaderBufferHandle buffer)
Set a shader buffer as MeshBuffer.
Definition: CGPUMeshBuffer.h:44
saga::video::IVideoDriver
Definition: IVideoDriver.h:68
saga::core::aabbox3d< float >
saga::scene::CGPUMeshBuffer::getPosition
virtual const glm::vec3 & getPosition(std::uint32_t i) const override
returns position of vertex i
Definition: CGPUMeshBuffer.h:97
saga::scene::CGPUMeshBuffer::getSize
virtual std::size_t getSize(const video::PipelineHandle pipeline) const override
Get size of GPU staging buffer.
Definition: CGPUMeshBuffer.h:40
saga::scene::CGPUMeshBuffer::getBoundingBox
virtual const core::aabbox3d< float > & getBoundingBox() const override
Get the axis aligned bounding box.
Definition: CGPUMeshBuffer.h:85
saga::scene::CGPUMeshBuffer::getID
virtual std::uint64_t getID() const override
Returns internal ID to identify mesh buffer.
Definition: CGPUMeshBuffer.h:26
saga::scene::CGPUMeshBuffer::getIndices
virtual const std::uint32_t * getIndices() const override
Get pointer to indices.
Definition: CGPUMeshBuffer.h:70
saga::scene::CGPUMeshBuffer::getTangent
virtual const glm::vec3 & getTangent(std::uint32_t i) const override
returns tangent of vertex i
Definition: CGPUMeshBuffer.h:106
saga::scene::CGPUMeshBuffer::appendAttribute
virtual void appendAttribute(const char *buffer, const size_t size, const size_t stride) override
Append the custom attribute buffer to the current mesh buffer.
Definition: CGPUMeshBuffer.h:123
saga::scene::CGPUMeshBuffer::getVertices
virtual void * getVertices() override
Get pointer to vertices.
Definition: CGPUMeshBuffer.h:32
saga::scene::CGPUMeshBuffer::getBiTangent
virtual const glm::vec3 & getBiTangent(std::uint32_t i) const override
returns bi-tangent of vertex i
Definition: CGPUMeshBuffer.h:109
saga::scene::CGPUMeshBuffer::CGPUMeshBuffer
CGPUMeshBuffer()
Default constructor for empty meshbuffer.
Definition: CGPUMeshBuffer.h:16
saga::scene::CGPUMeshBuffer::IndexBuffer
video::ShaderBufferHandle IndexBuffer
Definition: CGPUMeshBuffer.h:138
saga::scene::CGPUMeshBuffer::VertexCount
std::size_t VertexCount
Definition: CGPUMeshBuffer.h:136
saga::scene::CGPUMeshBuffer::getData
virtual const void * getData(const video::PipelineHandle pipeline) const override
Get pointer to GPU staging buffer.
Definition: CGPUMeshBuffer.h:36
saga::scene::CGPUMeshBuffer::getIndex
virtual std::uint32_t getIndex(std::size_t offset) const override
returns vertex index at this offset
Definition: CGPUMeshBuffer.h:77
IMeshBuffer.h
saga::scene::CGPUMeshBuffer::isGPUBuffer
virtual bool isGPUBuffer() const override
Definition: CGPUMeshBuffer.h:22
SShaderBuffer.h
saga::scene::CGPUMeshBuffer::buildBuffer
virtual void buildBuffer(video::IVideoDriver &driver, const video::PipelineHandle pipeline) override
Generate GPU-compatible data.
Definition: CGPUMeshBuffer.h:28
saga::scene::CGPUMeshBuffer::recalculateBoundingBox
virtual void recalculateBoundingBox() override
Recalculate the bounding box.
Definition: CGPUMeshBuffer.h:94
saga::scene::CGPUMeshBuffer::setBoundingBox
virtual void setBoundingBox(const core::aabbox3df &box) override
Set the axis aligned bounding box.
Definition: CGPUMeshBuffer.h:90
saga::scene::IMeshBuffer::RootID
static MeshBufferID RootID
To set ID for mesh buffer when created.
Definition: IMeshBuffer.h:256
saga
Definition: aabbox3d.h:11
saga::scene::CGPUMeshBuffer::append
virtual void append(const IMeshBuffer *const other) override
Append the meshbuffer to the current buffer.
Definition: CGPUMeshBuffer.h:131