NAP
structbuffer.h
1 /* This Source Code Form is subject to the terms of the Mozilla Public
2  * License, v. 2.0. If a copy of the MPL was not distributed with this
3  * file, You can obtain one at https://mozilla.org/MPL/2.0/. */
4 
5 #pragma once
6 
7 // Local Includes
8 #include "gpubuffer.h"
9 #include "uniform.h"
10 #include "structfillpolicy.h"
11 
12 // External Includes
13 #include <nap/resourceptr.h>
14 #include <glm/glm.hpp>
15 
16 namespace nap
17 {
36  class NAPAPI StructBuffer final : public GPUBuffer
37  {
38  RTTI_ENABLE(GPUBuffer)
39  public:
40  StructBuffer(Core& core) :
41  GPUBuffer(core)
42  { }
43 
44  StructBuffer(Core& core, EMemoryUsage usage) :
45  GPUBuffer(core, usage)
46  { }
47 
52  virtual bool init(utility::ErrorState& errorState) override;
53 
57  virtual uint getCount() const override { return mDescriptor.mCount; };
58 
62  virtual size_t getSize() const override { return mDescriptor.mCount * mElementSize; };
63 
67  virtual uint32 getElementSize() const override { return mElementSize; };
68 
72  virtual bool isInitialized() const override { return mInitialized; };
73 
82  bool setData(void* data, size_t size, utility::ErrorState& error);
83 
84  bool mClear = false;
85  ResourcePtr<StructFillPolicy> mFillPolicy = nullptr;
87 
88  private:
89  // Whether the buffer was successfully initialized
90  bool mInitialized = false;
91 
92  // Cached element size
93  uint mElementSize = 0;
94  };
95 }
nap::uint
unsigned int uint
Definition: numeric.h:23
nap::StructBuffer::isInitialized
virtual bool isInitialized() const override
Definition: structbuffer.h:72
nap::rtti::ObjectPtr
Definition: objectptr.h:154
nap::EMemoryUsage
EMemoryUsage
Definition: gpubuffer.h:41
nap::StructBuffer::StructBuffer
StructBuffer(Core &core, EMemoryUsage usage)
Definition: structbuffer.h:44
nap::utility::ErrorState
Definition: errorstate.h:19
nap::StructBuffer::getSize
virtual size_t getSize() const override
Definition: structbuffer.h:62
nap::StructBuffer::StructBuffer
StructBuffer(Core &core)
Definition: structbuffer.h:40
nap::uint32
uint32_t uint32
Definition: numeric.h:20
nap::StructBufferDescriptor
Definition: structbufferdescriptor.h:22
nap::Core
Definition: core.h:82
nap::StructBuffer::getCount
virtual uint getCount() const override
Definition: structbuffer.h:57
nap::StructBuffer
Definition: structbuffer.h:36
nap::StructBuffer::getElementSize
virtual uint32 getElementSize() const override
Definition: structbuffer.h:67
nap
Definition: templateapp.h:17
nap::GPUBuffer
Definition: gpubuffer.h:64
nap::StructBuffer::mDescriptor
StructBufferDescriptor mDescriptor
Property 'Descriptor' The descriptor that defines the buffer layout.
Definition: structbuffer.h:86