13 #ifndef OGLPLUS_PROG_VAR_CALLERS_1107121519_HPP
14 #define OGLPLUS_PROG_VAR_CALLERS_1107121519_HPP
19 #include <oglplus/prog_var/varpara_fns.hpp>
21 #include <type_traits>
27 class ProgVarCallers<tag::ImplicitSel, T>
30 template <
typename UI>
31 static void _call_set_v(
34 void(GLAPIENTRY *_fn)(UI,
const T*),
41 template <
typename UI,
typename SI>
42 static void _call_set_v(
45 void(GLAPIENTRY *_fn)(UI, SI,
const T*),
52 template <
typename UI,
typename SI>
53 static void _call_set_vn(
57 void(GLAPIENTRY *_fn)(UI, SI,
const T*),
64 template <
typename UI,
typename P>
65 static void _call_set_t(
68 void(GLAPIENTRY *_fn)(UI, P),
75 template <
typename UI,
typename P>
76 static void _call_set_t(
79 void(GLAPIENTRY *_fn)(UI, P, P),
83 _fn(location, v0, v1);
86 template <
typename UI,
typename P>
87 static void _call_set_t(
90 void(GLAPIENTRY *_fn)(UI, P, P, P),
94 _fn(location, v0, v1, v2);
97 template <
typename UI,
typename P>
98 static void _call_set_t(
101 void(GLAPIENTRY *_fn)(UI, P, P, P, P),
102 P v0, P v1, P v2, P v3
105 _fn(location, v0, v1, v2, v3);
108 template <
typename ID,
typename CT,
typename TP>
109 static void _call_set_m(
114 void(GLAPIENTRY *_fn)(ID, CT, TP,
const T*),
118 _fn(location, count, transpose, v);
122 template <
typename T>
123 class ProgVarCallers<tag::DirectState, T>
126 template <
typename UI>
127 static void _call_set_v(
130 void(GLAPIENTRY *_fn)(GLuint, UI,
const T*),
134 _fn(program, location, v);
137 template <
typename UI,
typename SI>
138 static void _call_set_v(
141 void(GLAPIENTRY *_fn)(GLuint, UI, SI,
const T*),
145 _fn(program, location, 1, v);
148 template <
typename UI,
typename SI>
149 static void _call_set_vn(
153 void(GLAPIENTRY *_fn)(GLuint, UI, SI,
const T*),
157 _fn(program, location, n, v);
160 template <
typename UI,
typename P>
161 static void _call_set_t(
164 void(GLAPIENTRY *_fn)(GLuint, UI, P),
168 _fn(program, location, v0);
171 template <
typename UI,
typename P>
172 static void _call_set_t(
175 void(GLAPIENTRY *_fn)(GLuint, UI, P, P),
179 _fn(program, location, v0, v1);
182 template <
typename UI,
typename P>
183 static void _call_set_t(
186 void(GLAPIENTRY *_fn)(GLuint, UI, P, P, P),
190 _fn(program, location, v0, v1, v2);
193 template <
typename UI,
typename P>
194 static void _call_set_t(
197 void(GLAPIENTRY *_fn)(GLuint, UI, P, P, P, P),
198 P v0, P v1, P v2, P v3
201 _fn(program, location, v0, v1, v2, v3);
204 template <
typename ID,
typename CT,
typename TP>
205 static void _call_set_m(
210 void(GLAPIENTRY *_fn)(GLuint, ID, CT, TP,
const T*),
214 _fn(program, location, count, transpose, v);
220 #endif // include guard
Helper macro for optional checking of availability of GL function.
Declaration of basic OGLplus' exceptions.