7 #include <utility/dllexport.h>
8 #include <nap/resource.h>
10 #include <nap/numeric.h>
12 #include "vulkan/vulkan_core.h"
34 virtual void* getRawData() = 0;
39 virtual VkFormat getFormat()
const = 0;
44 virtual int getCount()
const = 0;
49 virtual size_t getCapacity()
const = 0;
54 virtual void reserve(
size_t numElements) = 0;
74 template<
typename ELEMENTTYPE>
86 virtual void reserve(
size_t numElements)
override {
mData.reserve(numElements); }
97 void resize(
size_t numElements) {
mData.resize(numElements); }
118 void addData(
const ELEMENTTYPE& element) {
mData.emplace_back(element); }
124 void addData(
const ELEMENTTYPE&& element) noexcept {
mData.emplace_back(std::move(element)); }
131 void addData(
const ELEMENTTYPE* elements,
int numElements);
137 void setData(
const std::vector<ELEMENTTYPE>& values) {
setData(&(values.front()), values.size()); }
144 void setData(
const ELEMENTTYPE* elements,
int numElements);
149 virtual VkFormat
getFormat()
const override;
154 virtual int getCount()
const override {
return static_cast<int>(
mData.size()); }
197 template<
typename ELEMENTTYPE>
200 mData.resize(numElements);
201 memcpy(mData.data(), elements, numElements *
sizeof(ELEMENTTYPE));
204 template<
typename ELEMENTTYPE>
207 int cur_num_elements = mData.size();
208 mData.resize(cur_num_elements + numElements);
209 memcpy((
void*)&mData[cur_num_elements], elements, numElements *
sizeof(ELEMENTTYPE));
212 template<
typename ELEMENTTYPE>
215 return static_cast<void*
>(mData.data());
std::vector< ELEMENTTYPE > & getData()
Definition: vertexattribute.h:112
void setData(const std::vector< ELEMENTTYPE > &values)
Definition: vertexattribute.h:137
void addData(const ELEMENTTYPE &element)
Definition: vertexattribute.h:118
rtti::TypeInfo mElementType
Element type.
Definition: vertexattribute.h:62
void clear()
Definition: vertexattribute.h:102
Definition: vertexattribute.h:75
virtual void * getRawData() override
Definition: vertexattribute.h:213
Definition: vertexattribute.h:21
VertexAttribute()
Definition: vertexattribute.h:80
std::string mAttributeID
Name/ID of the attribute.
Definition: vertexattribute.h:61
void resize(size_t numElements)
Definition: vertexattribute.h:97
const nap::rtti::TypeInfo & getElementType() const
Definition: vertexattribute.h:59
virtual size_t getCapacity() const override
Definition: vertexattribute.h:91
void addData(const ELEMENTTYPE &&element) noexcept
Definition: vertexattribute.h:124
const std::vector< ELEMENTTYPE > & getData() const
Definition: vertexattribute.h:107
virtual int getCount() const override
Definition: vertexattribute.h:154
ELEMENTTYPE & operator[](std::size_t index)
Definition: vertexattribute.h:161
Definition: templateapp.h:17
virtual void reserve(size_t numElements) override
Definition: vertexattribute.h:86
Definition: resource.h:19
const ELEMENTTYPE & operator[](std::size_t index) const
Definition: vertexattribute.h:168
rttr::type TypeInfo
Definition: typeinfo.h:141
virtual VkFormat getFormat() const override
std::vector< ELEMENTTYPE > mData
Actual typed data of the attribute.
Definition: vertexattribute.h:170