NAP
nap
system_modules
naprender
src
fillpolicy.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
// External includes
8
#include <nap/resource.h>
9
#include <nap/numeric.h>
10
11
// Local Includes
12
#include "mathutils.h"
13
14
namespace
nap
15
{
26
class
NAPAPI
BaseFillPolicy
:
public
Resource
27
{
28
RTTI_ENABLE(
Resource
)
29
public
:
30
BaseFillPolicy
() =
default
;
31
virtual
~
BaseFillPolicy
() =
default
;
32
};
33
34
46
template
<
typename
T>
47
class
NAPAPI
FillPolicy
:
public
BaseFillPolicy
48
{
49
RTTI_ENABLE(
BaseFillPolicy
)
50
public
:
56
virtual
void
fill(
uint
numElements, T* data)
const
= 0;
57
};
58
59
70
template
<
typename
T>
71
class
ConstantFillPolicy
:
public
FillPolicy
<T>
72
{
73
RTTI_ENABLE(
FillPolicy<T>
)
74
public
:
80
virtual
void
fill
(
uint
numElements, T* data)
const override
;
81
82
T
mConstant
= T();
83
};
84
85
87
// BaseFillPolicyNumeric type definitions
89
90
using
FillPolicyUInt
=
FillPolicy<uint>
;
91
using
FillPolicyInt
=
FillPolicy<int>
;
92
using
FillPolicyFloat
=
FillPolicy<float>
;
93
using
FillPolicyVec2
=
FillPolicy<glm::vec2>
;
94
using
FillPolicyVec3
=
FillPolicy<glm::vec3>
;
95
using
FillPolicyVec4
=
FillPolicy<glm::vec4>
;
96
using
FillPolicyMat4
=
FillPolicy<glm::mat4>
;
97
98
100
// ConstantBufferFillPolicy type definitions
102
103
using
ConstantFillPolicyUInt
=
ConstantFillPolicy<uint>
;
104
using
ConstantFillPolicyInt
=
ConstantFillPolicy<int>
;
105
using
ConstantFillPolicyFloat
=
ConstantFillPolicy<float>
;
106
using
ConstantFillPolicyVec2
=
ConstantFillPolicy<glm::vec2>
;
107
using
ConstantFillPolicyVec3
=
ConstantFillPolicy<glm::vec3>
;
108
using
ConstantFillPolicyVec4
=
ConstantFillPolicy<glm::vec4>
;
109
using
ConstantFillPolicyMat4
=
ConstantFillPolicy<glm::mat4>
;
110
111
113
// Template definitions
115
116
template
<
typename
T>
117
void
ConstantFillPolicy<T>::fill
(
uint
numElements, T* data)
const
118
{
119
for
(
uint
i = 0; i < numElements; i++)
120
{
121
*data = mConstant;
122
++data;
123
}
124
}
125
}
nap::uint
unsigned int uint
Definition:
numeric.h:23
nap::ConstantFillPolicy::mConstant
T mConstant
Property 'Constant'.
Definition:
fillpolicy.h:82
nap::ConstantFillPolicy::fill
virtual void fill(uint numElements, T *data) const override
Definition:
fillpolicy.h:117
nap::BaseFillPolicy
Definition:
fillpolicy.h:26
nap::ConstantFillPolicy
Definition:
fillpolicy.h:71
nap
Definition:
templateapp.h:17
nap::Resource
Definition:
resource.h:19
nap::FillPolicy
Definition:
fillpolicy.h:47
Generated by doxygen