SLProject  4.2.000
A platform independent 3D computer graphics framework for desktop OS, Android, iOS and online in web browsers
SLGLUniform< T > Class Template Reference

Template for a single GLSL uniform variable. More...

#include <SLGLUniform.h>

Inheritance diagram for SLGLUniform< T >:
[legend]

Public Member Functions

 SLGLUniform (SLUniformType type, const SLchar *name, T value, T inc=0.0f, T min=0.0f, T max=0.0f, SLKey keyInc=K_none)
 
 SLGLUniform (const SLchar *name, function< T(void)> getFunc)
 
const SLcharname ()
 
value ()
 
SLbool onKeyPress (const SLKey key, const SLKey mod) override
 Key press event-handler. More...
 
- Public Member Functions inherited from SLEventHandler
 SLEventHandler ()
 
virtual ~SLEventHandler ()
 
virtual SLbool onMouseDown (const SLMouseButton button, const SLint x, const SLint y, const SLKey mod)
 
virtual SLbool onMouseUp (const SLMouseButton button, const SLint x, const SLint y, const SLKey mod)
 
virtual SLbool onMouseMove (const SLMouseButton button, const SLint x, const SLint y, const SLKey mod)
 
virtual SLbool onDoubleClick (const SLMouseButton button, const SLint x, const SLint y, const SLKey mod)
 
virtual SLbool onMouseWheel (const SLint delta, const SLKey mod)
 
virtual SLbool onTouch2Down (const SLint x1, const SLint y1, const SLint x2, const SLint y2)
 
virtual SLbool onTouch2Move (const SLint x1, const SLint y1, const SLint x2, const SLint y2)
 
virtual SLbool onTouch2Up (const SLint x1, const SLint y1, const SLint x2, const SLint y2)
 
virtual SLbool onTouch3Down (const SLint x1, const SLint y1)
 
virtual SLbool onTouch3Move (const SLint x1, const SLint y1)
 
virtual SLbool onTouch3Up (const SLint x1, const SLint y1)
 
virtual SLbool onKeyRelease (const SLKey key, const SLKey mod)
 
virtual SLbool onRotationPYR (const SLfloat pitchRAD, const SLfloat yawRAD, const SLfloat rollRAD)
 
void mouseRotationFactor (SLfloat rf)
 
SLfloat mouseRotationFactor ()
 

Private Attributes

SLstring _name
 Name of the variable. More...
 
_value
 Current value. More...
 
_max
 Max. value for IncInc, IncDec & random types. More...
 
_min
 Min. value for IncInc, IncDec & random types. More...
 
_inc
 Increment value for IncInc, IncDec & Inc types. More...
 
SLUniformType _type
 Uniform1f type. More...
 
SLKey _keyInc
 keyboard key incrementing const values More...
 
function< T(void)> getValue
 lambda getter function More...
 

Additional Inherited Members

- Protected Attributes inherited from SLEventHandler
SLfloat _mouseRotationFactor
 Mouse rotation sensibility. More...
 
SLfloat _keyboardDeltaPos
 Delta dist. for keyboard translation. More...
 

Detailed Description

template<class T>
class SLGLUniform< T >

Template for a single GLSL uniform variable.

Class for GLSL uniform variables that change per frame. An SLGLProgram holds a list of this type of uniform variables that are applied within the beginUse method.

Definition at line 23 of file SLGLUniform.h.

Constructor & Destructor Documentation

◆ SLGLUniform() [1/2]

template<class T >
SLGLUniform< T >::SLGLUniform ( SLUniformType  type,
const SLchar name,
value,
inc = 0.0f,
min = 0.0f,
max = 0.0f,
SLKey  keyInc = K_none 
)
inline

Definition at line 26 of file SLGLUniform.h.

33  {
34  _name = name;
35  _value = value;
36  _min = min;
37  _max = max;
38  _inc = inc;
39  _type = type;
40  _keyInc = keyInc;
41  }
T _min
Min. value for IncInc, IncDec & random types.
Definition: SLGLUniform.h:142
SLstring _name
Name of the variable.
Definition: SLGLUniform.h:139
T _max
Max. value for IncInc, IncDec & random types.
Definition: SLGLUniform.h:141
SLKey _keyInc
keyboard key incrementing const values
Definition: SLGLUniform.h:145
T _value
Current value.
Definition: SLGLUniform.h:140
SLUniformType _type
Uniform1f type.
Definition: SLGLUniform.h:144
const SLchar * name()
Definition: SLGLUniform.h:51
T _inc
Increment value for IncInc, IncDec & Inc types.
Definition: SLGLUniform.h:143

◆ SLGLUniform() [2/2]

template<class T >
SLGLUniform< T >::SLGLUniform ( const SLchar name,
function< T(void)>  getFunc 
)
inline

Definition at line 43 of file SLGLUniform.h.

45  {
46  _name = name;
47  _type = UT_lambda;
48  getValue = getFunc;
49  }
@ UT_lambda
lambda getter function
Definition: SLEnums.h:239
function< T(void)> getValue
lambda getter function
Definition: SLGLUniform.h:146

Member Function Documentation

◆ name()

template<class T >
const SLchar* SLGLUniform< T >::name ( )
inline

Definition at line 51 of file SLGLUniform.h.

51 { return _name.c_str(); }

◆ onKeyPress()

template<class T >
SLbool SLGLUniform< T >::onKeyPress ( const SLKey  key,
const SLKey  mod 
)
inlineoverridevirtual

Key press event-handler.

Reimplemented from SLEventHandler.

Definition at line 103 of file SLGLUniform.h.

104  {
105  if (_keyInc != K_none)
106  {
107  if (key == _keyInc)
108  {
109  if (mod == K_none)
110  {
111  if (_value < _max)
112  {
113  _value += _inc;
114  // std::cout << "Uniform: " << _name.c_str() << " = " << _value << std::endl;
115  return true;
116  }
117  else if (_inc == _max) // Toggle between min & max
118  {
119  _value = _min;
120  // std::cout << "Uniform: " << _name.c_str() << " = " << _value << std::endl;
121  return true;
122  }
123  }
124  else if (mod == K_shift)
125  {
126  if (_value > _min)
127  {
128  _value -= _inc;
129  // std::cout << "Uniform: " << _name.c_str() << " = " << _value << std::endl;
130  return true;
131  }
132  }
133  }
134  }
135  return false;
136  }
@ K_none
Definition: SLEnums.h:17
@ K_shift
Definition: SLEnums.h:62
T mod(T a, T b)
Definition: Utils.h:250

◆ value()

template<class T >
T SLGLUniform< T >::value ( )
inline

calculates the current value & returns it. This method is called on every frame.

Definition at line 57 of file SLGLUniform.h.

58  {
59  if (_type == UT_const)
60  return _value;
61 
62  if (_type == UT_lambda)
63  return getValue();
64 
65  if (_type == UT_incDec)
66  {
67  if ((_inc > 0.0f && _value >= _max) ||
68  (_inc < 0.0f && _value <= _min)) _inc *= -1;
69  _value += _inc;
70  return _value;
71  }
72 
73  if (_type == UT_incInc)
74  {
75  if (_inc > 0 && _value >= _max) _value = _min;
76  if (_inc < 0 && _value <= _min) _value = _max;
77  _value += _inc;
78  return _value;
79  }
80 
81  if (_type == UT_inc)
82  {
83  _value += _inc;
84  return _value;
85  }
86 
87  if (_type == UT_random)
88  {
89  _value = _min + ((T)rand() / (T)RAND_MAX) * (_max - _min);
90  return _value;
91  }
92 
93  if (_type == UT_seconds)
94  {
95  _value = (T)clock() / CLOCKS_PER_SEC;
96  return _value;
97  }
98  else
99  return _value;
100  }
@ UT_seconds
seconds since the process has started
Definition: SLEnums.h:238
@ UT_incDec
never ending loop from min to max and max to min
Definition: SLEnums.h:234
@ UT_inc
never ending increment
Definition: SLEnums.h:236
@ UT_incInc
never ending loop from min to max
Definition: SLEnums.h:235
@ UT_random
random values between min and max
Definition: SLEnums.h:237
@ UT_const
constant value
Definition: SLEnums.h:233

Member Data Documentation

◆ _inc

template<class T >
T SLGLUniform< T >::_inc
private

Increment value for IncInc, IncDec & Inc types.

Definition at line 143 of file SLGLUniform.h.

◆ _keyInc

template<class T >
SLKey SLGLUniform< T >::_keyInc
private

keyboard key incrementing const values

Definition at line 145 of file SLGLUniform.h.

◆ _max

template<class T >
T SLGLUniform< T >::_max
private

Max. value for IncInc, IncDec & random types.

Definition at line 141 of file SLGLUniform.h.

◆ _min

template<class T >
T SLGLUniform< T >::_min
private

Min. value for IncInc, IncDec & random types.

Definition at line 142 of file SLGLUniform.h.

◆ _name

template<class T >
SLstring SLGLUniform< T >::_name
private

Name of the variable.

Definition at line 139 of file SLGLUniform.h.

◆ _type

template<class T >
SLUniformType SLGLUniform< T >::_type
private

Uniform1f type.

Definition at line 144 of file SLGLUniform.h.

◆ _value

template<class T >
T SLGLUniform< T >::_value
private

Current value.

Definition at line 140 of file SLGLUniform.h.

◆ getValue

template<class T >
function<T(void)> SLGLUniform< T >::getValue
private

lambda getter function

Definition at line 146 of file SLGLUniform.h.


The documentation for this class was generated from the following file: