Go to the documentation of this file. 1 #ifndef OGLPLUS_GL_API_API_HPP
9 #define OGLPLUS_GL_API_API_HPP
11 #include "../glsl/source_ref.hpp"
23 namespace eagine::oglp {
25 #define OGLPAFP(FUNC) decltype(c_api::FUNC), &c_api::FUNC
31 template <
typename ApiTraits>
61 using vertex_buffer_binding = uint_type;
85 constexpr
auto type_of(
buffer_name)
const noexcept {
102 #ifdef GL_PROGRAM_PIPELINE
111 return object_type(GL_PROGRAM);
113 return object_type(0);
117 constexpr
auto type_of(
query_name)
const noexcept {
119 return object_type(GL_QUERY);
121 return object_type(0);
126 #ifdef GL_RENDERBUFFER
127 return object_type(GL_RENDERBUFFER);
129 return object_type(0);
135 return object_type(GL_SAMPLER);
137 return object_type(0);
141 constexpr
auto type_of(
shader_name)
const noexcept {
143 return object_type(GL_SHADER);
145 return object_type(0);
151 return object_type(GL_TEXTURE);
153 return object_type(0);
158 #ifdef GL_TRANSFORM_FEEDBACK
159 return object_type(GL_TRANSFORM_FEEDBACK);
161 return object_type(0);
166 #ifdef GL_VERTEX_ARRAY
167 return object_type(GL_VERTEX_ARRAY);
169 return object_type(0);
173 template <
typename W, W c_api::*F,
typename Signature =
typename W::signature>
176 template <
typename W, W
c_api::*F,
typename RVC,
typename... Params>
177 class func<W, F, RVC(Params...)>
178 :
public wrapped_c_api_function<c_api, api_traits, nothing_t, W, F> {
179 using base = wrapped_c_api_function<c_api, api_traits, nothing_t, W, F>;
182 template <
typename Res>
183 constexpr
auto _check(Res&& res)
const noexcept {
184 res.error_code(this->api().
GetError());
185 return std::forward<Res>(res);
189 template <
typename... Args>
190 constexpr
auto _chkcall(Args&&... args)
const noexcept {
191 return this->_check(this->_call(std::forward<Args>(args)...));
196 template <
identifier_t I>
197 static constexpr
auto _conv(prog_var_location<I> loc) noexcept {
201 template <
typename T>
202 static constexpr
auto _conv(degrees_t<T> angle) noexcept {
203 return angle.value();
206 template <
typename... Args>
207 constexpr
auto _cnvchkcall(Args&&... args)
const noexcept {
208 return this->_chkcall(_conv(std::forward<Args>(args))...)
209 .cast_to(type_identity<RVC>{});
215 constexpr
auto operator()(Params... params)
const noexcept {
216 return this->_chkcall(_conv(params)...)
217 .cast_to(type_identity<RVC>{});
220 auto bind(Params... params)
const noexcept {
222 return (*
this)(params...);
229 typename PreTypeList,
230 typename QueryClassList,
231 typename PostTypeList,
232 typename QueryResult,
238 typename... PreParams,
239 typename... QueryClasses,
240 typename... PostParams,
241 typename QueryResult,
245 mp_list<PreParams...>,
246 mp_list<QueryClasses...>,
247 mp_list<PostParams...>,
251 using func<W, F>::func;
255 typename = std::enable_if_t<
256 (
true || ... || is_enum_class_value_v<QueryClasses, Query>)>,
257 typename = std::enable_if_t<!std::is_array_v<typename Query::tag_type>>>
258 constexpr
auto operator()(
259 PreParams... pre_params,
261 PostParams... post_params)
const noexcept {
262 using RV =
typename Query::tag_type;
263 QueryResult result{};
266 pre_params..., enum_type(query), post_params..., &result)
267 .replaced_with(result)
268 .cast_to(type_identity<RV>{});
273 typename = std::enable_if_t<
274 (
true || ... || is_enum_class_value_v<QueryClasses, Query>)>>
276 PreParams... pre_params,
278 PostParams... post_params,
279 span<QueryResult> dest)
const noexcept {
280 EAGINE_ASSERT(dest.size());
281 return this->_cnvchkcall(
282 pre_params..., enum_type(query), post_params..., dest.data());
290 constexpr
auto operator()(sync_condition cond)
const noexcept {
291 return this->_cnvchkcall(cond, bitfield_type(0));
294 constexpr
auto operator()(
296 enum_bitfield<sync_flag_bit> flags)
const noexcept {
297 return this->_cnvchkcall(cond, bitfield_type(flags));
301 template <
typename ObjTag,
typename W, W c_api::*GenObjects>
302 struct make_object_func : func<W, GenObjects> {
303 using func<W, GenObjects>::func;
305 constexpr
auto operator()(span<name_type> names)
const noexcept {
306 return this->_chkcall(sizei_type(names.size()), names.data());
309 constexpr
auto operator()(
311 return (*
this)(names.raw_handles());
314 constexpr
auto operator()() const noexcept {
316 return this->_chkcall(1, &n).replaced_with(n).cast_to(
317 type_identity<gl_owned_object_name<ObjTag>>{});
324 constexpr
auto operator()(shader_type type)
const noexcept {
325 return this->_cnvchkcall(type).cast_to(
326 type_identity<owned_shader_name>{});
333 constexpr
auto operator()() const noexcept {
334 return this->_chkcall().cast_to(
335 type_identity<owned_program_name>{});
339 make_object_func<buffer_tag, OGLPAFP(
GenBuffers)> gen_buffers;
341 make_object_func<buffer_tag, OGLPAFP(
CreateBuffers)> create_buffers;
349 gen_program_pipelines;
352 create_program_pipelines;
362 create_renderbuffers;
373 gen_transform_feedbacks;
376 create_transform_feedbacks;
382 create_vertex_arrays;
387 constexpr
auto operator()() const noexcept {
388 return this->_chkcall(1).cast_to(
389 type_identity<owned_path_nv_name>{});
397 constexpr
auto operator()(sync_type sync)
const noexcept {
398 return this->_chkcall(sync);
401 auto bind(sync_type sync)
const noexcept {
402 return [
this, sync] {
403 return (*
this)(sync);
407 auto later_by(cleanup_group& cleanup, sync_type sync)
const ->
auto& {
408 return cleanup.add_ret(bind(sync));
411 auto raii(sync_type& sync)
const noexcept {
416 template <
typename ObjTag,
typename W, W c_api::*DeleteObjects>
417 struct delete_object_func : func<W, DeleteObjects> {
418 using func<W, DeleteObjects>::func;
420 constexpr
auto operator()(span<const name_type> names)
const noexcept {
421 return this->_chkcall(sizei_type(names.size()), names.data());
424 constexpr
auto operator()(
426 return (*
this)(names.raw_handles());
430 operator()(gl_owned_object_name<ObjTag> name)
const noexcept {
431 auto n = name.release();
432 return this->_chkcall(1, &n);
435 auto bind(gl_owned_object_name<ObjTag>& name)
const noexcept {
436 return [
this, &name] {
437 (*this)(std::move(name));
442 cleanup_group& cleanup,
443 gl_owned_object_name<ObjTag>& name)
const ->
auto& {
444 return cleanup.add_ret(bind(name));
447 auto raii(gl_owned_object_name<ObjTag>& name)
const noexcept {
456 return this->_chkcall(name.release());
460 return [
this, &name] {
461 return (*
this)(std::move(name));
467 return cleanup.add_ret(bind(name));
479 return this->_chkcall(name.release());
483 return [
this, &name] {
484 return (*
this)(std::move(name));
490 return cleanup.add_ret(bind(name));
498 delete_object_func<buffer_tag, OGLPAFP(
DeleteBuffers)> delete_buffers;
504 delete_program_pipelines;
509 delete_renderbuffers;
516 delete_transform_feedbacks;
519 delete_vertex_arrays;
525 return [
this, &name] {
526 (*this)(std::move(name));
531 return this->_chkcall(name.release(), 1);
540 func<OGLPAFP(
IsSync), true_false(sync_type)> is_sync;
542 template <
typename ObjTag,
typename W, W c_api::*IsObject>
543 using is_object_func =
544 func<W, IsObject, true_false(gl_object_name<ObjTag>)>;
546 is_object_func<buffer_tag, OGLPAFP(
IsBuffer)> is_buffer;
566 is_transform_feedback;
573 func<OGLPAFP(
Enable), void(capability)> enable;
574 func<OGLPAFP(
Enablei), void(capability, uint_type)> enablei;
577 func<OGLPAFP(
Disable), void(capability)> disable;
578 func<OGLPAFP(
Disablei), void(capability, uint_type)> disablei;
581 func<OGLPAFP(
IsEnabled), true_false(capability)> is_enabled;
582 func<OGLPAFP(
IsEnabledi), true_false(capability, uint_type)> is_enabledi;
585 func<OGLPAFP(
MemoryBarrier), void(enum_bitfield<memory_barrier_bit>)>
589 memory_barrier_by_region;
593 using base = func<OGLPAFP(
Viewport)>;
596 using base::operator();
598 constexpr
auto operator()(sizei_type w, sizei_type h)
const noexcept {
599 return base::operator()(0, 0, w, h);
603 operator()(std::tuple<sizei_type, sizei_type> wh)
const noexcept {
604 return base::operator()(0, 0, std::get<0>(wh), std::get<1>(wh));
608 operator()(std::tuple<int_type, int_type, sizei_type, sizei_type> c)
610 return base::operator()(
611 std::get<0>(c), std::get<1>(c), std::get<2>(c), std::get<3>(c));
616 func<OGLPAFP(
StencilFunc), void(compare_function, int_type, uint_type)>
621 void(face_mode, compare_function, int_type, uint_type)>
622 stencil_func_separate;
627 void(stencil_operation, stencil_operation, stencil_operation)>
632 void(face_mode, stencil_operation, stencil_operation, stencil_operation)>
636 func<OGLPAFP(
DepthFunc), void(compare_function)> depth_func;
639 func<OGLPAFP(
ColorMask), void(true_false, true_false, true_false, true_false)>
644 void(uint_type, true_false, true_false, true_false, true_false)>
647 func<OGLPAFP(
DepthMask), void(true_false)> depth_mask;
649 func<OGLPAFP(
StencilMask), void(uint_type)> stencil_mask;
652 stencil_mask_separate;
658 func<OGLPAFP(
Clear), void(enum_bitfield<buffer_clear_bit>)> clear;
664 constexpr
auto operator()(
666 const glsl_source_ref& source)
const noexcept {
667 return this->_chkcall(
668 name_type(shdr), source.count(), source.parts(), source.lengths());
677 constexpr
auto operator()(
679 const glsl_source_ref& paths)
const noexcept {
680 return this->_chkcall(
681 name_type(shdr), paths.count(), paths.parts(), paths.lengths());
683 } compile_shader_include;
686 mp_list<shader_name>,
687 mp_list<shader_parameter>,
697 operator()(
shader_name shdr, span<char_type> dest)
const noexcept {
698 sizei_type real_len{0};
701 name_type(shdr), sizei_type(dest.size()), &real_len, dest.data())
704 } get_shader_info_log;
714 mp_list<program_name>,
715 mp_list<program_parameter>,
725 operator()(
program_name prog, span<char_type> dest)
const noexcept {
726 sizei_type real_len{0};
729 name_type(prog), sizei_type(dest.size()), &real_len, dest.data())
732 } get_program_info_log;
739 get_program_resource_index;
745 #ifdef GL_SHADER_STORAGE_BLOCK
747 ->_cnvchkcall(name_type(prog), GL_SHADER_STORAGE_BLOCK, name)
748 .cast_to(type_identity<shader_storage_block_index>{});
750 return this->_fake().cast_to(
751 type_identity<shader_storage_block_index>{});
754 } get_shader_storage_block_index;
759 get_program_resource_location;
764 constexpr
auto operator()(
766 program_interface intf,
768 span<char_type> dest)
const noexcept {
769 sizei_type real_len{0};
775 sizei_type(dest.size()),
780 } get_program_resource_name;
783 mp_list<program_name, program_interface>,
784 mp_list<program_property>,
788 get_program_interface_i;
795 program_interface intf,
797 enum_class_view<program_property> props,
798 span<int_type> dest)
const noexcept {
799 sizei_type real_len{0};
806 props.raw_enums().data(),
812 } get_program_resource_i;
819 program_interface intf,
821 enum_class_view<program_property> props,
822 span<float_type> dest)
const noexcept {
823 sizei_type real_len{0};
830 props.raw_enums().data(),
836 } get_program_resource_f;
841 bind_attrib_location;
851 constexpr
auto operator()(
854 span<char_type> dest)
const noexcept {
857 sizei_type real_len{0};
862 sizei_type(dest.size()),
869 } get_active_attrib_name;
874 bind_frag_data_location;
879 get_frag_data_location;
887 bind_frag_data_location_indexed;
890 get_uniform_location;
895 get_uniform_block_index;
900 constexpr
auto operator()(
903 span<char_type> dest)
const noexcept {
904 sizei_type real_len{0};
909 sizei_type(dest.size()),
914 } get_active_uniform_name;
919 get_subroutine_uniform_location;
924 constexpr
auto operator()(
926 shader_type shdr_type,
928 span<char_type> dest)
const noexcept {
929 sizei_type real_len{0};
933 enum_type(shdr_type),
935 sizei_type(dest.size()),
940 } get_active_subroutine_uniform_name;
945 get_subroutine_index;
950 constexpr
auto operator()(
952 shader_type shdr_type,
954 span<char_type> dest)
const noexcept {
955 sizei_type real_len{0};
966 } get_active_subroutine_name;
987 return this->_cnvchkcall(loc, sizei_type(v.size() / 1), v.data());
996 return this->_cnvchkcall(loc, sizei_type(v.size() / 2), v.data());
1005 return this->_cnvchkcall(loc, sizei_type(v.size() / 3), v.data());
1014 return this->_cnvchkcall(loc, sizei_type(v.size() / 4), v.data());
1034 return this->_cnvchkcall(loc, sizei_type(v.size() / 1), v.data());
1043 return this->_cnvchkcall(loc, sizei_type(v.size() / 2), v.data());
1052 return this->_cnvchkcall(loc, sizei_type(v.size() / 3), v.data());
1061 return this->_cnvchkcall(loc, sizei_type(v.size() / 4), v.data());
1081 constexpr
auto operator()(
1083 span<const float_type> v)
const noexcept {
1084 return this->_cnvchkcall(loc, sizei_type(v.size() / 1), v.data());
1091 constexpr
auto operator()(
1093 span<const float_type> v)
const noexcept {
1094 return this->_cnvchkcall(loc, sizei_type(v.size() / 2), v.data());
1101 constexpr
auto operator()(
1103 span<const float_type> v)
const noexcept {
1104 return this->_cnvchkcall(loc, sizei_type(v.size() / 3), v.data());
1111 constexpr
auto operator()(
1113 span<const float_type> v)
const noexcept {
1114 return this->_cnvchkcall(loc, sizei_type(v.size() / 4), v.data());
1122 constexpr
auto operator()(
1125 span<const float_type> v)
const noexcept {
1126 return this->_cnvchkcall(
1127 loc, sizei_type(v.size() / 4), transp, v.data());
1129 } uniform_matrix2fv;
1134 constexpr
auto operator()(
1137 span<const float_type> v)
const noexcept {
1138 return this->_cnvchkcall(
1139 loc, sizei_type(v.size() / 9), transp, v.data());
1141 } uniform_matrix3fv;
1146 constexpr
auto operator()(
1149 span<const float_type> v)
const noexcept {
1150 return this->_cnvchkcall(
1151 loc, sizei_type(v.size() / 16), transp, v.data());
1153 } uniform_matrix4fv;
1158 constexpr
auto operator()(
1161 span<const float_type> v)
const noexcept {
1162 return this->_cnvchkcall(
1163 loc, sizei_type(v.size() / 6), transp, v.data());
1165 } uniform_matrix2x3fv;
1170 constexpr
auto operator()(
1173 span<const float_type> v)
const noexcept {
1174 return this->_cnvchkcall(
1175 loc, sizei_type(v.size() / 8), transp, v.data());
1177 } uniform_matrix2x4fv;
1182 constexpr
auto operator()(
1185 span<const float_type> v)
const noexcept {
1186 return this->_cnvchkcall(
1187 loc, sizei_type(v.size() / 6), transp, v.data());
1189 } uniform_matrix3x2fv;
1194 constexpr
auto operator()(
1197 span<const float_type> v)
const noexcept {
1198 return this->_cnvchkcall(
1199 loc, sizei_type(v.size() / 12), transp, v.data());
1201 } uniform_matrix3x4fv;
1206 constexpr
auto operator()(
1209 span<const float_type> v)
const noexcept {
1210 return this->_cnvchkcall(
1211 loc, sizei_type(v.size() / 8), transp, v.data());
1213 } uniform_matrix4x2fv;
1218 constexpr
auto operator()(
1221 span<const float_type> v)
const noexcept {
1222 return this->_cnvchkcall(
1223 loc, sizei_type(v.size() / 12), transp, v.data());
1225 } uniform_matrix4x3fv;
1258 constexpr
auto operator()(
1261 span<const uint_type> v)
const noexcept {
1262 return this->_cnvchkcall(
1263 prog, loc, sizei_type(v.size() / 1), v.data());
1265 } program_uniform1uiv;
1270 constexpr
auto operator()(
1273 span<const uint_type> v)
const noexcept {
1274 return this->_cnvchkcall(
1275 prog, loc, sizei_type(v.size() / 2), v.data());
1277 } program_uniform2uiv;
1282 constexpr
auto operator()(
1285 span<const uint_type> v)
const noexcept {
1286 return this->_cnvchkcall(
1287 prog, loc, sizei_type(v.size() / 3), v.data());
1289 } program_uniform3uiv;
1294 constexpr
auto operator()(
1297 span<const uint_type> v)
const noexcept {
1298 return this->_cnvchkcall(
1299 prog, loc, sizei_type(v.size() / 4), v.data());
1301 } program_uniform4uiv;
1327 constexpr
auto operator()(
1330 span<const int_type> v)
const noexcept {
1331 return this->_cnvchkcall(
1332 prog, loc, sizei_type(v.size() / 1), v.data());
1334 } program_uniform1iv;
1339 constexpr
auto operator()(
1342 span<const int_type> v)
const noexcept {
1343 return this->_cnvchkcall(
1344 prog, loc, sizei_type(v.size() / 2), v.data());
1346 } program_uniform2iv;
1351 constexpr
auto operator()(
1354 span<const int_type> v)
const noexcept {
1355 return this->_cnvchkcall(
1356 prog, loc, sizei_type(v.size() / 3), v.data());
1358 } program_uniform3iv;
1363 constexpr
auto operator()(
1366 span<const int_type> v)
const noexcept {
1367 return this->_cnvchkcall(
1368 prog, loc, sizei_type(v.size() / 4), v.data());
1370 } program_uniform4iv;
1402 constexpr
auto operator()(
1405 span<const float_type> v)
const noexcept {
1406 return this->_cnvchkcall(
1407 prog, loc, sizei_type(v.size() / 1), v.data());
1409 } program_uniform1fv;
1414 constexpr
auto operator()(
1417 span<const float_type> v)
const noexcept {
1418 return this->_cnvchkcall(
1419 prog, loc, sizei_type(v.size() / 2), v.data());
1421 } program_uniform2fv;
1426 constexpr
auto operator()(
1429 span<const float_type> v)
const noexcept {
1430 return this->_cnvchkcall(
1431 prog, loc, sizei_type(v.size() / 3), v.data());
1433 } program_uniform3fv;
1438 constexpr
auto operator()(
1441 span<const float_type> v)
const noexcept {
1442 return this->_cnvchkcall(
1443 prog, loc, sizei_type(v.size() / 4), v.data());
1445 } program_uniform4fv;
1451 constexpr
auto operator()(
1455 span<const float_type> v)
const noexcept {
1456 return this->_cnvchkcall(
1457 prog, loc, sizei_type(v.size() / 4), transp, v.data());
1459 } program_uniform_matrix2fv;
1464 constexpr
auto operator()(
1468 span<const float_type> v)
const noexcept {
1469 return this->_cnvchkcall(
1470 prog, loc, sizei_type(v.size() / 9), transp, v.data());
1472 } program_uniform_matrix3fv;
1477 constexpr
auto operator()(
1481 span<const float_type> v)
const noexcept {
1482 return this->_cnvchkcall(
1483 prog, loc, sizei_type(v.size() / 16), transp, v.data());
1485 } program_uniform_matrix4fv;
1490 constexpr
auto operator()(
1494 span<const float_type> v)
const noexcept {
1495 return this->_cnvchkcall(
1496 prog, loc, sizei_type(v.size() / 6), transp, v.data());
1498 } program_uniform_matrix2x3fv;
1503 constexpr
auto operator()(
1507 span<const float_type> v)
const noexcept {
1508 return this->_cnvchkcall(
1509 prog, loc, sizei_type(v.size() / 8), transp, v.data());
1511 } program_uniform_matrix2x4fv;
1516 constexpr
auto operator()(
1520 span<const float_type> v)
const noexcept {
1521 return this->_cnvchkcall(
1522 prog, loc, sizei_type(v.size() / 6), transp, v.data());
1524 } program_uniform_matrix3x2fv;
1529 constexpr
auto operator()(
1533 span<const float_type> v)
const noexcept {
1534 return this->_cnvchkcall(
1535 prog, loc, sizei_type(v.size() / 12), transp, v.data());
1537 } program_uniform_matrix3x4fv;
1542 constexpr
auto operator()(
1546 span<const float_type> v)
const noexcept {
1547 return this->_cnvchkcall(
1548 prog, loc, sizei_type(v.size() / 8), transp, v.data());
1550 } program_uniform_matrix4x2fv;
1555 constexpr
auto operator()(
1559 span<const float_type> v)
const noexcept {
1560 return this->_cnvchkcall(
1561 prog, loc, sizei_type(v.size() / 12), transp, v.data());
1563 } program_uniform_matrix4x3fv;
1569 uniform_block_binding;
1574 shader_storage_block_binding;
1577 func<OGLPAFP(
BindBuffer), void(buffer_target, buffer_name)> bind_buffer;
1579 func<OGLPAFP(
BindBufferBase), void(buffer_target, uint_type, buffer_name)>
1584 void(buffer_target, uint_type, buffer_name, intptr_type, sizeiptr_type)>
1590 constexpr
auto operator()(
1593 const_void_ptr_type data,
1594 enum_bitfield<buffer_storage_bit> flags)
const noexcept {
1595 return this->_cnvchkcall(tgt, size, data, flags);
1599 operator()(buffer_target tgt, sizeiptr_type size)
const noexcept {
1600 return (*
this)(tgt, size,
nullptr, {});
1608 constexpr
auto operator()(
1611 const_void_ptr_type data,
1612 enum_bitfield<buffer_storage_bit> flags)
const noexcept {
1613 return this->_cnvchkcall(buf, size, data, flags);
1617 operator()(buffer_name buf, sizeiptr_type size)
const noexcept {
1618 return (*
this)(buf, size,
nullptr, {});
1620 } named_buffer_storage;
1625 constexpr
auto operator()(
1627 const buffer_data_spec& values,
1628 buffer_usage usg)
const noexcept {
1629 return this->_cnvchkcall(
1630 tgt, sizei_type(values.size()), values.data(), usg);
1637 constexpr
auto operator()(
1639 const buffer_data_spec& values,
1640 buffer_usage usg)
const noexcept {
1641 return this->_cnvchkcall(
1642 buf, sizei_type(values.size()), values.data(), usg);
1644 } named_buffer_data;
1649 constexpr
auto operator()(
1652 const buffer_data_spec& values)
const noexcept {
1653 return this->_cnvchkcall(
1654 tgt, offs, sizei_type(values.size()), values.data());
1661 constexpr
auto operator()(
1664 const buffer_data_spec& values)
const noexcept {
1665 return this->_cnvchkcall(
1666 buf, offs, sizei_type(values.size()), values.data());
1668 } named_buffer_sub_data;
1670 struct : func<OGLPAFP(ClearBufferData)> {
1671 using func<OGLPAFP(ClearBufferData)>::func;
1673 constexpr
auto operator()(
1675 pixel_internal_format ifmt,
1677 pixel_data_type type,
1678 const_void_ptr_type data)
const noexcept {
1679 return this->_cnvchkcall(tgt, ifmt, fmt, type, data);
1682 template <
typename T>
1683 constexpr
auto operator()(
1685 pixel_internal_format ifmt,
1686 const T& value)
const noexcept {
1688 tgt, ifmt, pixel_format_of<T>(), pixel_data_type_of<T>(), &value);
1691 template <
typename T>
1693 operator()(buffer_target tgt,
const T& value)
const noexcept {
1694 return (*
this)(tgt, internal_format_of<T>(), &value);
1697 template <
typename T>
1698 constexpr
auto operator()(
1700 pixel_internal_format ifmt,
1701 type_identity<T>)
const noexcept {
1703 tgt, ifmt, pixel_format_of<T>(), pixel_data_type_of<T>(),
nullptr);
1706 template <
typename T>
1708 operator()(buffer_target tgt, type_identity<T> tid)
const noexcept {
1709 return (*
this)(tgt, internal_format_of<T>(), tid);
1711 } clear_buffer_data;
1716 constexpr
auto operator()(
1718 pixel_internal_format ifmt,
1720 pixel_data_type type,
1721 const_void_ptr_type data)
const noexcept {
1722 return this->_cnvchkcall(buf, ifmt, fmt, type, data);
1725 template <
typename T>
1726 constexpr
auto operator()(
1728 pixel_internal_format ifmt,
1729 const T& value)
const noexcept {
1731 buf, ifmt, pixel_format_of<T>(), pixel_data_type_of<T>(), &value);
1734 template <
typename T>
1736 operator()(buffer_name buf,
const T& value)
const noexcept {
1737 return (*
this)(buf, internal_format_of<T>(), &value);
1740 template <
typename T>
1741 constexpr
auto operator()(
1743 pixel_internal_format ifmt,
1745 type_identity<T>)
const noexcept {
1746 return (*
this)(buf, ifmt, fmt, pixel_data_type_of<T>(),
nullptr);
1749 template <
typename T>
1751 operator()(buffer_name buf, type_identity<T> tid)
const noexcept {
1752 return (*
this)(buf, internal_format_of<T>(), tid);
1754 } clear_named_buffer_data;
1759 constexpr
auto operator()(
1761 pixel_internal_format ifmt,
1765 pixel_data_type type,
1766 const_void_ptr_type data)
const noexcept {
1767 return this->_cnvchkcall(tgt, ifmt, offs, size, fmt, type, data);
1770 template <
typename T>
1771 constexpr
auto operator()(
1774 sizeiptr_type count,
1775 pixel_internal_format ifmt,
1776 const T& value)
const noexcept {
1781 count * span_size_of<T>(),
1782 pixel_format_of<T>(),
1783 pixel_data_type_of<T>(),
1787 template <
typename T>
1788 constexpr
auto operator()(
1791 sizeiptr_type count,
1792 const T& value)
const noexcept {
1793 return (*
this)(tgt, offs, count, internal_format_of<T>(), value);
1795 } clear_buffer_sub_data;
1800 constexpr
auto operator()(
1802 pixel_internal_format ifmt,
1806 pixel_data_type type,
1807 const_void_ptr_type data)
const noexcept {
1808 return this->_cnvchkcall(buf, ifmt, offs, size, fmt, type, data);
1811 template <
typename T>
1812 constexpr
auto operator()(
1815 sizeiptr_type count,
1816 pixel_internal_format ifmt,
1817 const T& value)
const noexcept {
1822 count * span_size_of<T>(),
1823 pixel_format_of<T>(),
1824 pixel_data_type_of<T>(),
1828 template <
typename T>
1829 constexpr
auto operator()(
1832 sizeiptr_type count,
1833 const T& value)
const noexcept {
1834 return (*
this)(buf, offs, count, internal_format_of<T>(), value);
1836 } clear_named_buffer_sub_data;
1840 void_ptr_type(buffer_target, enum_bitfield<buffer_map_access_bit>)>
1845 void_ptr_type(buffer_name, enum_bitfield<buffer_map_access_bit>)>
1854 enum_bitfield<buffer_map_access_bit>)>
1863 enum_bitfield<buffer_map_access_bit>)>
1864 map_named_buffer_range;
1868 void_ptr_type(buffer_target, intptr_type, sizeiptr_type)>
1869 flush_mapped_buffer_range;
1873 void_ptr_type(buffer_name, intptr_type, sizeiptr_type)>
1874 flush_mapped_named_buffer_range;
1876 func<OGLPAFP(
UnmapBuffer), void_ptr_type(buffer_target)> unmap_buffer;
1882 invalidate_buffer_data;
1886 void(buffer_name, intptr_type, sizeiptr_type)>
1887 invalidate_buffer_sub_data;
1891 void(buffer_target, buffer_target, intptr_type, intptr_type, sizeiptr_type)>
1892 copy_buffer_sub_data;
1896 void(buffer_name, buffer_name, intptr_type, intptr_type, sizeiptr_type)>
1897 copy_named_buffer_sub_data;
1900 mp_list<buffer_target>,
1901 mp_list<buffer_parameter>,
1905 get_buffer_parameter_i;
1908 mp_list<buffer_name>,
1909 mp_list<buffer_parameter>,
1913 get_named_buffer_parameter_i;
1916 mp_list<buffer_target>,
1917 mp_list<buffer_parameter>,
1921 get_buffer_parameter_i64;
1924 mp_list<buffer_name>,
1925 mp_list<buffer_parameter>,
1929 get_named_buffer_parameter_i64;
1936 void(vertex_buffer_binding, buffer_name, intptr_type, sizei_type)>
1943 vertex_buffer_binding,
1947 vertex_array_vertex_buffer;
1950 vertex_array_element_buffer;
1953 enable_vertex_attrib_array;
1958 enable_vertex_array_attrib;
1961 disable_vertex_attrib_array;
1966 disable_vertex_array_attrib;
1971 vertex_attrib_format;
1976 vertex_attrib_iformat;
1981 vertex_attrib_lformat;
1992 vertex_array_attrib_format;
2002 vertex_array_attrib_iformat;
2012 vertex_array_attrib_lformat;
2017 constexpr
auto operator()(
2021 true_false norm)
const noexcept {
2022 return this->_cnvchkcall(loc, size, type, norm, 0,
nullptr);
2025 constexpr
auto operator()(
2031 const_void_ptr_type pointer)
const noexcept {
2032 return this->_cnvchkcall(loc, size, type, norm, stride, pointer);
2034 } vertex_attrib_pointer;
2039 constexpr
auto operator()(
2042 data_type type)
const noexcept {
2043 return this->_cnvchkcall(loc, size, type, 0,
nullptr);
2046 constexpr
auto operator()(
2051 const_void_ptr_type pointer)
const noexcept {
2052 return this->_cnvchkcall(loc, size, type, stride, pointer);
2054 } vertex_attrib_ipointer;
2059 constexpr
auto operator()(
2062 data_type type)
const noexcept {
2063 return this->_cnvchkcall(loc, size, type, 0,
nullptr);
2066 constexpr
auto operator()(
2071 const_void_ptr_type pointer)
const noexcept {
2072 return this->_cnvchkcall(loc, size, type, stride, pointer);
2074 } vertex_attrib_lpointer;
2079 vertex_attrib_binding;
2084 vertex_array_attrib_binding;
2087 vertex_binding_divisor;
2091 void(vertex_buffer_binding, uint_type)>
2092 vertex_array_binding_divisor;
2095 vertex_attrib_divisor;
2098 func<OGLPAFP(
ActiveTexture), void(texture_unit)> active_texture;
2101 struct : func<OGLPAFP(
BindTextures), void(uint_type, sizei_type,
const name_type*)> {
2104 void(uint_type, sizei_type,
const name_type*)>;
2109 operator()(uint_type first, span<const name_type> texs)
const noexcept {
2110 return base::operator()(
2111 first, sizei_type(texs.size()), texs.data());
2135 pixel_internal_format,
2146 pixel_internal_format,
2157 pixel_internal_format,
2164 void(
texture_name, sizei_type, pixel_internal_format, sizei_type, sizei_type)>
2169 void(texture_target, sizei_type, pixel_internal_format, sizei_type)>
2174 void(
texture_name, sizei_type, pixel_internal_format, sizei_type)>
2182 pixel_internal_format,
2187 tex_storage3d_multisample;
2194 pixel_internal_format,
2199 texture_storage3d_multisample;
2206 pixel_internal_format,
2210 tex_storage2d_multisample;
2217 pixel_internal_format,
2221 texture_storage2d_multisample;
2228 pixel_internal_format,
2243 pixel_internal_format,
2257 pixel_internal_format,
2295 texture_sub_image3d;
2323 texture_sub_image2d;
2347 texture_sub_image1d;
2354 pixel_internal_format,
2367 pixel_internal_format,
2386 copy_tex_sub_image3d;
2400 copy_texture_sub_image3d;
2413 copy_tex_sub_image2d;
2426 copy_texture_sub_image2d;
2430 void(texture_target, int_type, int_type, int_type, int_type, sizei_type)>
2431 copy_tex_sub_image1d;
2435 void(
texture_name, int_type, int_type, int_type, int_type, sizei_type)>
2436 copy_texture_sub_image1d;
2441 constexpr
auto operator()(
2444 pixel_internal_format ifmt,
2450 return this->_cnvchkcall(
2461 } compressed_tex_image3d;
2466 constexpr
auto operator()(
2469 pixel_internal_format ifmt,
2474 return this->_cnvchkcall(
2475 tgt, level, ifmt, width, height, border, data.size(), data.data());
2477 } compressed_tex_image2d;
2482 constexpr
auto operator()(
2485 pixel_internal_format ifmt,
2489 return this->_cnvchkcall(
2490 tgt, level, ifmt, width, border, data.size(), data.data());
2492 } compressed_tex_image1d;
2496 constexpr
auto operator()(
2507 return this->_cnvchkcall(
2520 } compressed_tex_sub_image3d;
2524 constexpr
auto operator()(
2535 return this->_cnvchkcall(
2548 } compressed_texture_sub_image3d;
2552 constexpr
auto operator()(
2561 return this->_cnvchkcall(
2572 } compressed_tex_sub_image2d;
2576 constexpr
auto operator()(
2585 return this->_cnvchkcall(
2596 } compressed_texture_sub_image2d;
2600 constexpr
auto operator()(
2607 return this->_cnvchkcall(
2608 tgt, level, xoffset, width, fmt, data.size(), data.data());
2610 } compressed_tex_sub_image1d;
2614 constexpr
auto operator()(
2621 return this->_cnvchkcall(
2622 tex, level, xoffset, width, fmt, data.size(), data.data());
2624 } compressed_texture_sub_image1d;
2628 void(texture_target, pixel_internal_format, buffer_name)>
2633 void(
texture_name, pixel_internal_format, buffer_name)>
2640 pixel_internal_format,
2650 pixel_internal_format,
2654 texture_buffer_range;
2658 void(texture_target, texture_parameter, float_type)>
2664 texture_parameter_f;
2672 typename = std::enable_if_t<
2673 is_enum_parameter_value_v<texture_parameter, TexParam, int_type, Value>>>
2674 constexpr
auto operator()(
2677 Value value)
const noexcept {
2678 return this->_chkcall(
2679 enum_type(tgt), enum_type(param), enum_type(value));
2689 typename = std::enable_if_t<
2690 is_enum_parameter_value_v<texture_parameter, TexParam, int_type, Value>>>
2692 operator()(
texture_name tex, TexParam param, Value value) noexcept {
2693 return this->_chkcall(
2694 name_type(tex), enum_type(param), enum_type(value));
2696 } texture_parameter_i;
2701 constexpr
auto operator()(
2703 texture_parameter param,
2704 span<const float_type> values) noexcept {
2705 return this->_cnvchkcall(tgt, param, values.data());
2712 constexpr
auto operator()(
2714 texture_parameter param,
2715 span<const float_type> values) noexcept {
2716 return this->_cnvchkcall(tex, param, values.data());
2718 } texture_parameter_fv;
2723 constexpr
auto operator()(
2725 texture_parameter param,
2726 span<const int_type> values) noexcept {
2727 return this->_cnvchkcall(tgt, param, values.data());
2734 constexpr
auto operator()(
2736 texture_parameter param,
2737 span<const int_type> values) noexcept {
2738 return this->_cnvchkcall(tex, param, values.data());
2740 } texture_parameter_iv;
2745 constexpr
auto operator()(
2747 texture_parameter param,
2748 span<const int_type> values) noexcept {
2749 return this->_cnvchkcall(tgt, param, values.data());
2751 } tex_parameter_iiv;
2756 constexpr
auto operator()(
2758 texture_parameter param,
2759 span<const int_type> values) noexcept {
2760 return this->_cnvchkcall(tex, param, values.data());
2762 } texture_parameter_iiv;
2767 constexpr
auto operator()(
2769 texture_parameter param,
2770 span<const uint_type> values) noexcept {
2771 return this->_cnvchkcall(tgt, param, values.data());
2773 } tex_parameter_iuiv;
2778 constexpr
auto operator()(
2780 texture_parameter param,
2781 span<const uint_type> values) noexcept {
2782 return this->_cnvchkcall(tex, param, values.data());
2784 } texture_parameter_iuiv;
2787 mp_list<texture_target>,
2788 mp_list<texture_parameter>,
2792 get_tex_parameter_f;
2795 mp_list<texture_name>,
2796 mp_list<texture_parameter>,
2800 get_texture_parameter_f;
2803 mp_list<texture_target>,
2804 mp_list<texture_parameter>,
2808 get_tex_parameter_i;
2811 mp_list<texture_name>,
2812 mp_list<texture_parameter>,
2816 get_texture_parameter_i;
2819 mp_list<texture_target>,
2820 mp_list<texture_parameter>,
2824 get_tex_parameter_ii;
2827 mp_list<texture_name>,
2828 mp_list<texture_parameter>,
2832 get_texture_parameter_ii;
2835 mp_list<texture_target>,
2836 mp_list<texture_parameter>,
2840 get_tex_parameter_iui;
2843 mp_list<texture_name>,
2844 mp_list<texture_parameter>,
2848 get_texture_parameter_iui;
2850 func<OGLPAFP(
GenerateMipmap), void(texture_target)> generate_mipmap;
2853 generate_texture_mipmap;
2861 sampler_parameter_f;
2866 sampler_parameter_i;
2871 constexpr
auto operator()(
2873 sampler_parameter param,
2874 span<const float_type> values) noexcept {
2875 return this->_cnvchkcall(sam, param, values.data());
2877 } sampler_parameter_fv;
2882 constexpr
auto operator()(
2884 sampler_parameter param,
2885 span<const int_type> values) noexcept {
2886 return this->_cnvchkcall(sam, param, values.data());
2888 } sampler_parameter_iv;
2893 constexpr
auto operator()(
2895 sampler_parameter param,
2896 span<const int_type> values) noexcept {
2897 return this->_cnvchkcall(sam, param, values.data());
2899 } sampler_parameter_iiv;
2904 constexpr
auto operator()(
2906 sampler_parameter param,
2907 span<const uint_type> values) noexcept {
2908 return this->_cnvchkcall(sam, param, values.data());
2910 } sampler_parameter_iuiv;
2913 mp_list<sampler_name>,
2914 mp_list<sampler_parameter>,
2918 get_sampler_parameter_f;
2921 mp_list<sampler_name>,
2922 mp_list<sampler_parameter>,
2926 get_sampler_parameter_i;
2929 mp_list<sampler_name>,
2930 mp_list<sampler_parameter>,
2934 get_sampler_parameter_ii;
2937 mp_list<sampler_name>,
2938 mp_list<sampler_parameter>,
2942 get_sampler_parameter_iui;
2950 void(renderbuffer_target, pixel_internal_format, sizei_type, sizei_type)>
2951 renderbuffer_storage;
2955 void(renderbuffer_target, pixel_internal_format, sizei_type, sizei_type)>
2956 named_renderbuffer_storage;
2961 renderbuffer_target,
2963 pixel_internal_format,
2966 renderbuffer_storage_multisample;
2971 renderbuffer_target,
2973 pixel_internal_format,
2976 named_renderbuffer_storage_multisample;
2979 mp_list<renderbuffer_target>,
2980 mp_list<renderbuffer_parameter>,
2984 get_renderbuffer_parameter_i;
2987 mp_list<renderbuffer_name>,
2988 mp_list<renderbuffer_parameter>,
2992 get_named_renderbuffer_parameter_i;
2998 func<OGLPAFP(DrawBuffer), void(surface_buffer)> draw_buffer;
3003 named_framebuffer_draw_buffer;
3005 func<OGLPAFP(
ReadBuffer), void(surface_buffer)> read_buffer;
3010 named_framebuffer_read_buffer;
3014 void(framebuffer_target, framebuffer_parameter, int_type)>
3015 framebuffer_parameter_i;
3020 named_framebuffer_parameter_i;
3023 mp_list<framebuffer_target>,
3024 mp_list<framebuffer_parameter>,
3028 get_framebuffer_parameter_i;
3031 mp_list<framebuffer_name>,
3032 mp_list<framebuffer_parameter>,
3036 get_named_framebuffer_parameter_i;
3039 mp_list<framebuffer_target, framebuffer_attachment>,
3040 mp_list<framebuffer_attachment_parameter>,
3044 get_framebuffer_attachment_parameter_i;
3047 mp_list<framebuffer_name, framebuffer_attachment>,
3048 mp_list<framebuffer_attachment_parameter>,
3052 get_named_framebuffer_attachment_parameter_i;
3058 oglp::framebuffer_attachment,
3059 renderbuffer_target,
3061 framebuffer_renderbuffer;
3067 oglp::framebuffer_attachment,
3068 renderbuffer_target,
3070 named_framebuffer_renderbuffer;
3076 oglp::framebuffer_attachment,
3079 framebuffer_texture;
3084 named_framebuffer_texture;
3090 oglp::framebuffer_attachment,
3093 framebuffer_texture1d;
3099 oglp::framebuffer_attachment,
3100 oglp::texture_target,
3103 framebuffer_texture2d;
3109 oglp::framebuffer_attachment,
3110 oglp::texture_target,
3113 framebuffer_texture3d;
3119 oglp::framebuffer_attachment,
3123 framebuffer_texture_layer;
3129 oglp::framebuffer_attachment,
3133 named_framebuffer_texture_layer;
3136 check_framebuffer_status;
3141 check_named_framebuffer_status;
3154 enum_bitfield<buffer_blit_bit>,
3171 enum_bitfield<buffer_blit_bit>,
3173 blit_named_framebuffer;
3179 bind_transform_feedback;
3182 begin_transform_feedback;
3193 transform_feedback_buffer_base;
3203 transform_feedback_buffer_range;
3206 mp_list<transform_feedback_name>,
3207 mp_list<transform_feedback_parameter>,
3211 get_transform_feedback_i;
3214 mp_list<transform_feedback_name>,
3215 mp_list<transform_feedback_parameter>,
3219 get_transform_feedback_ii;
3222 mp_list<transform_feedback_name>,
3223 mp_list<transform_feedback_parameter>,
3227 get_transform_feedback_i64i;
3231 mp_list<query_target>,
3232 mp_list<query_parameter>,
3239 mp_list<query_target, uint_type>,
3240 mp_list<query_parameter>,
3244 get_query_indexed_i;
3247 mp_list<query_name>,
3248 mp_list<query_parameter>,
3255 mp_list<query_name>,
3256 mp_list<query_parameter>,
3260 get_query_object_ui;
3263 mp_list<query_name>,
3264 mp_list<query_parameter>,
3268 get_query_object_i64;
3271 mp_list<query_name>,
3272 mp_list<query_parameter>,
3276 get_query_object_ui64;
3280 void(
query_name, buffer_name, query_parameter, intptr_type)>
3281 get_query_buffer_object_i;
3285 void(
query_name, buffer_name, query_parameter, intptr_type)>
3286 get_query_buffer_object_ui;
3290 void(
query_name, buffer_name, query_parameter, intptr_type)>
3291 get_query_buffer_object_i64;
3295 void(
query_name, buffer_name, query_parameter, intptr_type)>
3296 get_query_buffer_object_ui64;
3301 begin_query_indexed;
3303 func<OGLPAFP(
EndQuery), void(query_target)> end_query;
3314 begin_conditional_render;
3320 bind_program_pipeline;
3323 validate_program_pipeline;
3331 mp_list<program_name, shader_type>,
3332 mp_list<program_stage_parameter>,
3336 get_program_stage_i;
3339 mp_list<program_name>,
3340 mp_list<program_pipeline_parameter>,
3344 get_program_pipeline_i;
3349 constexpr
auto operator()(
3351 span<char_type> dest)
const noexcept {
3352 sizei_type real_len{0};
3355 name_type(pipe), sizei_type(dest.size()), &real_len, dest.data())
3358 } get_program_pipeline_info_log;
3361 active_shader_program;
3380 func<OGLPAFP(
PatchParameterfv), void(patch_parameter, span<const float_type>)>
3383 func<OGLPAFP(
FrontFace), void(face_orientation)> front_face;
3384 func<OGLPAFP(
CullFace), void(face_mode)> cull_face;
3386 func<OGLPAFP(
PolygonMode), void(face_mode, oglp::polygon_mode)> polygon_mode;
3391 func<OGLPAFP(
BlendEquation), void(oglp::blend_equation)> blend_equation;
3392 func<OGLPAFP(
BlendEquation), void(oglp::blend_equation, oglp::blend_equation)>
3393 blend_equation_separate;
3395 func<OGLPAFP(
BlendEquation), void(uint_type, oglp::blend_equation)>
3399 void(uint_type, oglp::blend_equation, oglp::blend_equation)>
3400 blend_equation_separatei;
3402 func<OGLPAFP(
BlendFunc), void(oglp::blend_function, oglp::blend_function)>
3408 oglp::blend_function,
3409 oglp::blend_function,
3410 oglp::blend_function,
3411 oglp::blend_function)>
3412 blend_func_separate;
3416 void(uint_type, oglp::blend_function, oglp::blend_function)>
3423 oglp::blend_function,
3424 oglp::blend_function,
3425 oglp::blend_function,
3426 oglp::blend_function)>
3427 blend_func_separatei;
3435 mp_list<sample_parameter>,
3448 void(
primitive_type, int_type, sizei_type, sizei_type, uint_type)>
3449 draw_arrays_instanced_base_instance;
3454 draw_arrays_instanced;
3457 draw_arrays_indirect;
3461 void(
primitive_type,
const int_type*,
const sizei_type*, sizei_type)>
3466 void(
primitive_type, const_void_ptr_type, sizei_type, sizei_type)>
3467 multi_draw_arrays_indirect;
3471 void(
primitive_type, const_void_ptr_type, intptr_type, sizei_type, sizei_type)>
3472 multi_draw_arrays_indirect_count;
3488 const_void_ptr_type)>
3489 draw_range_elements;
3497 const_void_ptr_type,
3500 draw_elements_instanced_base_instance;
3508 const_void_ptr_type,
3510 draw_elements_instanced;
3515 draw_elements_indirect;
3523 const_void_ptr_type,
3525 draw_elements_base_vertex;
3535 const_void_ptr_type,
3537 draw_range_elements_base_vertex;
3545 const_void_ptr_type,
3548 draw_elements_instanced_base_vertex;
3556 const_void_ptr_type,
3560 draw_elements_instanced_base_vertex_base_instance;
3582 mp_list<integer_query, binding_query>,
3591 mp_list<integer_query>,
3600 mp_list<float_query>,
3609 mp_list<float_query>,
3616 struct : func<OGLPAFP(GetString)> {
3617 using func<OGLPAFP(GetString)>::func;
3619 constexpr
auto operator()(string_query query)
const noexcept {
3620 return this->_cnvchkcall(query).transformed([](
auto src) {
3621 return src ?
string_view{
reinterpret_cast<const char*
>(src)}
3626 constexpr
auto operator()() const noexcept {
3627 return this->_fake_empty_c_str().cast_to(
3628 type_identity<string_view>{});
3633 auto get_strings(string_query query,
char separator) noexcept {
3634 return get_string(query).transformed([separator](
auto src) {
3635 return split_into_string_list(src, separator);
3640 auto get_extensions() const noexcept {
3641 #ifdef GL_EXTENSIONS
3642 return get_string(string_query(GL_EXTENSIONS))
3647 [](
auto src) {
return split_into_string_list(src,
' '); });
3651 auto has_extension(
string_view which)
const noexcept {
3652 if(ok extensions{get_extensions()}) {
3653 for(
auto ext_name : extensions) {
3666 constexpr
auto operator()(
3667 named_string_kind kind,
3670 return this->_cnvchkcall(
3671 kind, name.size(), name.data(), str.size(), str.data());
3678 constexpr
auto operator()(
string_view name)
const noexcept {
3679 return this->_cnvchkcall(name.size(), name.data());
3681 } delete_named_string;
3686 constexpr
auto operator()(
string_view name)
const noexcept {
3687 return this->_cnvchkcall(name.size(), name.data())
3688 .cast_to(type_identity<true_false>{});
3693 func<OGLPAFP(
Begin), void(old_primitive_type)> begin;
3694 func<OGLPAFP(
End)> end;
3703 func<OGLPAFP(
Color3i)> color3i;
3704 func<OGLPAFP(
Color4i)> color4i;
3705 func<OGLPAFP(
Color3f)> color3f;
3706 func<OGLPAFP(
Color4f)> color4f;
3724 func<OGLPAFP(
MultiTexCoord2i), void(texture_unit, int_type, int_type)>
3728 void(texture_unit, int_type, int_type, int_type)>
3732 void(texture_unit, int_type, int_type, int_type, int_type)>
3736 func<OGLPAFP(
MultiTexCoord2f), void(texture_unit, float_type, float_type)>
3740 void(texture_unit, float_type, float_type, float_type)>
3744 void(texture_unit, float_type, float_type, float_type, float_type)>
3747 func<OGLPAFP(
MatrixMode), void(matrix_mode)> matrix_mode;
3758 void(degrees_t<float_type>, float_type, float_type, float_type)>
3763 void(degrees_t<double_type>, double_type, double_type, double_type)>
3766 func<OGLPAFP(
Scalef)> scale_f;
3767 func<OGLPAFP(
Scaled)> scale_d;
3769 func<OGLPAFP(
Frustum)> frustum;
3770 func<OGLPAFP(
Ortho)> ortho;
3787 constexpr
auto operator()(
3788 debug_output_source source,
3789 debug_output_type type,
3790 debug_output_severity severity,
3791 span<const uint_type> ids,
3792 true_false enabled)
const noexcept {
3793 return this->_cnvchkcall(
3794 source, type, severity, ids.size(), ids.data(), enabled);
3797 constexpr
auto operator()(
3798 debug_output_source source,
3799 debug_output_type type,
3800 debug_output_severity severity,
3801 true_false enabled)
const noexcept {
3802 return (*
this)(source, type, severity, {}, enabled);
3805 } debug_message_control;
3810 constexpr
auto operator()(
3811 debug_output_source source,
3812 debug_output_type type,
3813 debug_output_severity severity,
3816 return this->_cnvchkcall(
3820 } debug_message_insert;
3825 constexpr
auto operator()(
3826 debug_callback_type* callback,
3827 const_void_ptr_type user_data)
const noexcept {
3828 return this->_chkcall(callback, user_data);
3831 } debug_message_callback;
3836 constexpr
auto operator()(
3837 debug_output_source source,
3840 return this->_cnvchkcall(
3851 template <
typename ObjTag>
3852 constexpr
auto operator()(
3853 gl_object_name<ObjTag> name,
3855 return this->_cnvchkcall(
3861 func<OGLPAFP(
Flush)> flush;
3862 func<OGLPAFP(
Finish)> finish;
3871 #endif // OGLPLUS_GL_API_API_HPP
GLsizei sizei_type
Signed integer size type.
Definition: config.hpp:88
gl_api_function< void(enum_type, uint_type, uint_type), nullptr > BindBufferBase
Definition: c_api.hpp:373
GLbitfield bitfield_type
Bit-field type.
Definition: config.hpp:55
gl_api_function< void(uint_type, int_type, sizei_type, const int_type *), nullptr > ProgramUniform1iv
Definition: c_api.hpp:3031
gl_api_function< void(uint_type, int_type, sizei_type, const uint_type *), nullptr > ProgramUniform4uiv
Definition: c_api.hpp:3108
gl_api_function< void(bitfield_type), nullptr > MemoryBarrierByRegion
Definition: c_api.hpp:154
gl_api_function< void(enum_type, int_type, sizei_type, sizei_type), nullptr > DrawArraysInstanced
Definition: c_api.hpp:4269
gl_api_function< void(uint_type, intptr_type, sizeiptr_type), nullptr > FlushMappedNamedBufferRange
Definition: c_api.hpp:506
gl_api_function< void(uint_type, int_type, int_type, int_type, int_type, int_type, int_type, sizei_type, sizei_type), nullptr > CopyTextureSubImage3D
Definition: c_api.hpp:956
gl_api_function< void(uint_type, uint_type, uint_type), nullptr > VertexArrayAttribBinding
Definition: c_api.hpp:284
GLchar char_type
String character type.
Definition: config.hpp:46
gl_api_function< void(sizei_type, uint_type *), nullptr > GenBuffers
Definition: c_api.hpp:340
gl_api_function< void(enum_type, int_type, uint_type), nullptr > StencilFunc
Definition: c_api.hpp:3982
gl_api_function< void(uint_type, int_type, sizei_type, bool_type, const float_type *), nullptr > ProgramUniformMatrix2fv
Definition: c_api.hpp:3171
gl_api_function< void(enum_type, enum_type, int_type *), nullptr > GetBufferParameteriv
Definition: c_api.hpp:551
gl_api_function< void(int_type, sizei_type, bool_type, const float_type *), nullptr > UniformMatrix3x2fv
Definition: c_api.hpp:2912
gl_api_function< void(float_type, float_type, float_type, float_type), nullptr > Rotatef
Definition: c_api.hpp:4934
gl_api_function< void(uint_type, intptr_type, sizeiptr_type, const_void_ptr_type), nullptr > NamedBufferSubData
Definition: c_api.hpp:422
gl_api_function< void(uint_type, bool_type, bool_type, bool_type, bool_type), nullptr > ColorMaski
Definition: c_api.hpp:4022
gl_api_function< void(enum_type, int_type, enum_type, sizei_type, sizei_type, sizei_type, int_type, sizei_type, const_void_ptr_type), nullptr > CompressedTexImage3D
Definition: c_api.hpp:994
gl_api_function< void(uint_type, uint_type), nullptr > ActiveShaderProgram
Definition: c_api.hpp:2331
gl_api_function< bool_type(enum_type), nullptr > IsEnabled
Definition: c_api.hpp:135
gl_api_function< void(uint_type, int_type, enum_type, sizei_type, const_void_ptr_type), nullptr > VertexAttribIPointer
Definition: c_api.hpp:3807
gl_api_function< void(sizei_type, uint_type *), nullptr > GenTextures
Definition: c_api.hpp:593
gl_api_function< void_ptr_type(enum_type, intptr_type, sizeiptr_type, bitfield_type), nullptr > MapBufferRange
Definition: c_api.hpp:485
gl_api_function< void(enum_type, enum_type, sizei_type, sizei_type), nullptr > RenderbufferStorage
Definition: c_api.hpp:1643
gl_api_function< void(enum_type, sizei_type, enum_type, sizei_type, sizei_type), nullptr > RenderbufferStorageMultisample
Definition: c_api.hpp:1657
static constexpr auto ends_with(basic_span< T1, P1, S1 > spn, basic_span< T2, P2, S2 > with) -> bool
Indicates if span spn ends with the content of with.
Definition: span_algo.hpp:187
gl_api_function< void(uint_type, uint_type), nullptr > EnableVertexArrayAttrib
Definition: c_api.hpp:298
basic_string_span< const char > string_view
Alias for const string views.
Definition: string_span.hpp:116
gl_api_function< void(int_type, int_type, int_type), nullptr > Color3i
Definition: c_api.hpp:4768
gl_api_function< void(double_type, double_type, double_type, double_type), nullptr > Rotated
Definition: c_api.hpp:4941
gl_api_function< void(sizei_type, const uint_type *), nullptr > DeleteTextures
Definition: c_api.hpp:607
gl_api_function< void(enum_type, uint_type), nullptr > Enablei
Definition: c_api.hpp:121
gl_api_function< void(uint_type, enum_type, enum_type, uint_type), nullptr > NamedFramebufferRenderbuffer
Definition: c_api.hpp:1891
primitive_type
The shape primitive type enumeration.
Definition: drawing.hpp:22
gl_api_function< void(uint_type, enum_type, int_type *), nullptr > GetTransformFeedbackiv
Definition: c_api.hpp:2102
gl_api_function< void(int_type, float_type, float_type), nullptr > Uniform2f
Definition: c_api.hpp:2835
gl_api_function< void(enum_type, sizei_type, enum_type, const_void_ptr_type, sizei_type, int_type, uint_type), nullptr > DrawElementsInstancedBaseVertexBaseInstance
Definition: c_api.hpp:4385
gl_api_function< void(enum_type, enum_type, float_type *), nullptr > GetTexParameterfv
Definition: c_api.hpp:1259
gl_api_function< sync_type(enum_type, bitfield_type), nullptr > FenceSync
Definition: c_api.hpp:163
gl_api_function< void(uint_type, int_type, sizei_type, bool_type, const float_type *), nullptr > ProgramUniformMatrix4x2fv
Definition: c_api.hpp:3213
gl_api_function< void(float_type, float_type, float_type, float_type), nullptr > TexCoord4f
Definition: c_api.hpp:4837
prog_var_location< EAGINE_ID_V(Uniform)> uniform_location
Alias for shader program uniform location wrapper.
Definition: prog_var_loc.hpp:115
gl_api_function< void(enum_type, enum_type, uint_type *), nullptr > GetTexParameterIuiv
Definition: c_api.hpp:1280
gl_object_name< renderbuffer_tag > renderbuffer_name
Alias for GL renderbuffer object handle.
Definition: object_name.hpp:138
gl_api_function< void(enum_type, enum_type), nullptr > BlendFunc
Definition: c_api.hpp:4216
gl_api_function< bool_type(uint_type), nullptr > IsRenderbuffer
Definition: c_api.hpp:1629
gl_api_function< void(enum_type, sizei_type, enum_type, sizei_type, sizei_type, sizei_type), nullptr > TexStorage3D
Definition: c_api.hpp:659
gl_api_function< void(enum_type), nullptr > Enable
Definition: c_api.hpp:116
gl_api_function< void(enum_type, uint_type), nullptr > BeginQuery
Definition: c_api.hpp:2219
gl_api_function< void(enum_type, sizeiptr_type, const_void_ptr_type, bitfield_type), nullptr > BufferStorage
Definition: c_api.hpp:387
static constexpr auto span_size(T v) noexcept
Converts argument to span size type.
Definition: types.hpp:59
gl_api_function< void(enum_type, sizei_type, enum_type, const_void_ptr_type, sizei_type, int_type), nullptr > DrawElementsInstancedBaseVertex
Definition: c_api.hpp:4371
gl_object_name< vertex_array_tag > vertex_array_name
Alias for GL vertex array object handle.
Definition: object_name.hpp:163
EAGINE_MSG_TYPE(gl, Sampler) sampler_tag
Tag type denoting GL sampler objects.
Definition: object_name.hpp:88
gl_api_function< void(uint_type), nullptr > UseProgram
Definition: c_api.hpp:2475
gl_api_function< bool_type(uint_type), nullptr > IsBuffer
Definition: c_api.hpp:359
gl_api_function< void(uint_type, uint_type, uint_type), nullptr > DispatchCompute
Definition: c_api.hpp:4472
gl_api_function< void(uint_type, int_type, sizei_type, bool_type, const float_type *), nullptr > ProgramUniformMatrix3x4fv
Definition: c_api.hpp:3220
EAGINE_MSG_TYPE(gl, PrgPpline) program_pipeline_tag
Tag type denoting GL program pipeline objects.
Definition: object_name.hpp:72
gl_api_function< void(uint_type, uint_type, uint_type), nullptr > UniformBlockBinding
Definition: c_api.hpp:3234
gl_api_function< void(float_type, float_type, float_type, float_type), nullptr > Color4f
Definition: c_api.hpp:4782
ApiTraits api_traits
Alias for the traits policy class.
Definition: api.hpp:36
gl_api_function< void(double_type, double_type, double_type, double_type, double_type, double_type), nullptr > Frustum
Definition: c_api.hpp:4988
gl_api_function< void(uint_type), nullptr > EnableVertexAttribArray
Definition: c_api.hpp:291
gl_owned_object_name< path_nv_tag > owned_path_nv_name
Alias for owned GL path object handle.
Definition: object_name.hpp:229
gl_api_function< void(uint_type, uint_type, uint_type), nullptr > VertexArrayBindingDivisor
Definition: c_api.hpp:326
gl_api_function< void(enum_type, uint_type), nullptr > BindFramebuffer
Definition: c_api.hpp:1711
gl_api_function< void(), nullptr > PauseTransformFeedback
Definition: c_api.hpp:2071
gl_api_function< void(uint_type, enum_type, const uint_type *), nullptr > SamplerParameterIuiv
Definition: c_api.hpp:1575
gl_api_function< void(uint_type, bitfield_type), nullptr > SampleMaski
Definition: c_api.hpp:4173
gl_api_function< void(enum_type, sizei_type, enum_type, const_void_ptr_type, sizei_type, uint_type), nullptr > DrawElementsInstancedBaseInstance
Definition: c_api.hpp:4330
gl_api_function< void(sizei_type, uint_type *), nullptr > CreateTransformFeedbacks
Definition: c_api.hpp:2038
gl_api_function< void(sizei_type, const uint_type *), nullptr > DeleteQueries
Definition: c_api.hpp:2137
gl_api_function< uint_type(), nullptr > CreateProgram
Definition: c_api.hpp:2422
gl_api_function< void(enum_type, sizei_type, enum_type, sizei_type, sizei_type), nullptr > TexStorage2D
Definition: c_api.hpp:666
gl_api_function< void(enum_type, float_type), nullptr > MultiTexCoord1f
Definition: c_api.hpp:4862
gl_owned_object_name< shader_tag > owned_shader_name
Alias for owned GL shader object handle.
Definition: object_name.hpp:208
gl_api_function< void(uint_type, enum_type, float_type), nullptr > SamplerParameterf
Definition: c_api.hpp:1540
gl_api_function< void(const float_type[16]), nullptr > MultTransposeMatrixf
Definition: c_api.hpp:5085
gl_api_function< void(uint_type, enum_type, int64_type *), nullptr > GetQueryObjecti64v
Definition: c_api.hpp:2177
gl_api_function< void(enum_type), nullptr > ActiveTexture
Definition: c_api.hpp:617
gl_api_function< void(enum_type, uint_type), nullptr > StencilMaskSeparate
Definition: c_api.hpp:4039
GLenum enum_type
Enumeration type.
Definition: config.hpp:52
gl_api_function< void(bool_type), nullptr > DepthMask
Definition: c_api.hpp:4027
gl_api_function< void(uint_type, int_type, sizei_type, bool_type, const float_type *), nullptr > ProgramUniformMatrix3fv
Definition: c_api.hpp:3178
gl_api_function< void(uint_type, enum_type, int_type *), nullptr > GetSamplerParameteriv
Definition: c_api.hpp:1589
gl_api_function< void(uint_type, int_type, enum_type, uint_type), nullptr > VertexAttribLFormat
Definition: c_api.hpp:3766
gl_api_function< void(int_type, int_type), nullptr > Vertex2i
Definition: c_api.hpp:4742
gl_api_function< void(double_type, double_type, double_type, double_type, double_type, double_type), nullptr > Ortho
Definition: c_api.hpp:5001
gl_api_function< void(float_type, float_type, float_type, float_type), nullptr > SecondaryColor4f
Definition: c_api.hpp:4802
gl_api_function< void(enum_type, enum_type, uint_type, enum_type, int_type, const char_type *), nullptr > DebugMessageInsert
Definition: c_api.hpp:4676
gl_api_function< void(enum_type, int_type, sizei_type), nullptr > DrawArrays
Definition: c_api.hpp:4255
gl_api_function< void(uint_type, sizei_type), nullptr > DeletePathsNV
Definition: c_api.hpp:5153
gl_api_function< void(uint_type, int_type, int_type, int_type, sizei_type, sizei_type, enum_type, enum_type, const_void_ptr_type), nullptr > TextureSubImage2D
Definition: c_api.hpp:926
gl_api_function< void(uint_type, sizei_type, enum_type, sizei_type, sizei_type), nullptr > NamedRenderbufferStorageMultisample
Definition: c_api.hpp:1664
GLint int_type
Signed integer type.
Definition: config.hpp:70
gl_api_function< void(int_type, sizei_type, bool_type, const float_type *), nullptr > UniformMatrix4x2fv
Definition: c_api.hpp:2926
basic_block< true > const_block
Alias for const byte memory span.
Definition: block.hpp:32
gl_api_function< void(sizei_type, uint_type *), nullptr > GenProgramPipelines
Definition: c_api.hpp:2263
gl_api_function< void(enum_type), nullptr > EndQuery
Definition: c_api.hpp:2230
basic_handle_view< gl_object_name< Tag > > gl_object_name_view
Alias for template wrapping a const span of GL object handles.
Definition: object_name.hpp:44
gl_api_function< void(uint_type, uint_type, sizei_type, sizei_type *, int_type *, enum_type *, char_type *), nullptr > GetActiveAttrib
Definition: c_api.hpp:2596
prog_var_location< EAGINE_ID_V(Resource)> program_resource_location
Alias for generic shader program resource location wrapper.
Definition: prog_var_loc.hpp:93
gl_api_function< void(int_type, sizei_type, bool_type, const float_type *), nullptr > UniformMatrix2fv
Definition: c_api.hpp:2884
gl_api_function< void(uint_type, int_type, enum_type, uint_type), nullptr > VertexAttribIFormat
Definition: c_api.hpp:3759
gl_api_function< void(uint_type, int_type, int_type, int_type, int_type, int_type), nullptr > ProgramUniform4i
Definition: c_api.hpp:3024
gl_object_name< sampler_tag > sampler_name
Alias for GL sampler object handle.
Definition: object_name.hpp:143
gl_api_function< void(uint_type, enum_type, int_type *), nullptr > GetNamedFramebufferParameteriv
Definition: c_api.hpp:1863
gl_api_function< void(int_type, sizei_type, bool_type, const float_type *), nullptr > UniformMatrix4x3fv
Definition: c_api.hpp:2940
gl_api_function< void_ptr_type(uint_type, enum_type), nullptr > MapNamedBuffer
Definition: c_api.hpp:478
gl_api_function< void(uint_type, int_type, sizei_type, const int_type *), nullptr > ProgramUniform3iv
Definition: c_api.hpp:3045
gl_api_function< void(enum_type, enum_type, uint_type), nullptr > TexBuffer
Definition: c_api.hpp:1147
gl_api_function< void(enum_type, enum_type, float_type), nullptr > TexParameterf
Definition: c_api.hpp:1175
gl_api_function< void(enum_type, int_type, int_type, int_type, int_type, int_type, sizei_type, sizei_type), nullptr > CopyTexSubImage2D
Definition: c_api.hpp:843
gl_api_function< void(uint_type, int_type, sizei_type, const uint_type *), nullptr > ProgramUniform2uiv
Definition: c_api.hpp:3094
EAGINE_MSG_TYPE(gl, Frmebuffer) framebuffer_tag
Tag type denoting GL framebuffer objects.
Definition: object_name.hpp:68
gl_api_function< void(uint_type, int_type, sizei_type, const uint_type *), nullptr > ProgramUniform3uiv
Definition: c_api.hpp:3101
basic_handle_span< gl_object_name< Tag > > gl_object_name_span
Alias for template wrapping a mutable span of GL object handles.
Definition: object_name.hpp:37
gl_api_function< void(enum_type, sizeiptr_type, const_void_ptr_type, enum_type), nullptr > BufferData
Definition: c_api.hpp:401
gl_api_function< void(uint_type), nullptr > GenerateTextureMipmap
Definition: c_api.hpp:1426
gl_api_function< int_type(uint_type, const char_type *), nullptr > GetFragDataIndex
Definition: c_api.hpp:2701
gl_api_function< void(enum_type, enum_type, int_type *), nullptr > GetFramebufferParameteriv
Definition: c_api.hpp:1856
gl_api_function< void(uint_type, int_type, enum_type, sizei_type, const_void_ptr_type), nullptr > VertexAttribLPointer
Definition: c_api.hpp:3814
gl_api_function< void(int_type, sizei_type, bool_type, const float_type *), nullptr > UniformMatrix3x4fv
Definition: c_api.hpp:2933
gl_api_function< bool_type(uint_type), nullptr > IsTransformFeedback
Definition: c_api.hpp:2052
gl_api_function< void(enum_type, enum_type, int_type *), nullptr > GetTexParameteriv
Definition: c_api.hpp:1266
gl_api_function< void(enum_type, uint_type), nullptr > BindRenderbuffer
Definition: c_api.hpp:1636
static constexpr auto head(basic_span< T, P, S > s, L l) noexcept -> basic_span< T, P, S >
Returns the first l elements from the front of a span.
Definition: span_algo.hpp:99
gl_api_function< void(uint_type, enum_type, uint_type *), nullptr > GetQueryObjectuiv
Definition: c_api.hpp:2170
gl_api_function< void(enum_type, int_type, int_type), nullptr > MultiTexCoord2i
Definition: c_api.hpp:4846
gl_api_function< void(uint_type, sizeiptr_type, const_void_ptr_type, enum_type), nullptr > NamedBufferData
Definition: c_api.hpp:408
gl_api_function< void(enum_type, uint_type), nullptr > BindBuffer
Definition: c_api.hpp:366
gl_api_function< void(uint_type, enum_type, uint_type), nullptr > TextureBuffer
Definition: c_api.hpp:1161
gl_api_function< void(uint_type, int_type, sizei_type, const float_type *), nullptr > ProgramUniform2fv
Definition: c_api.hpp:3150
gl_api_function< void(int_type, sizei_type, const float_type *), nullptr > Uniform4fv
Definition: c_api.hpp:2877
gl_api_function< void(const double_type[16]), nullptr > MultTransposeMatrixd
Definition: c_api.hpp:5089
gl_api_function< bool_type(uint_type), nullptr > UnmapNamedBuffer
Definition: c_api.hpp:518
gl_api_function< void(float_type, float_type, float_type, float_type), nullptr > Vertex4f
Definition: c_api.hpp:4764
gl_api_function< void(double_type), nullptr > ClearDepth
Definition: c_api.hpp:4056
gl_api_function< void(uint_type, uint_type, enum_type, intptr_type), nullptr > GetQueryBufferObjectiv
Definition: c_api.hpp:2191
gl_api_function< void(uint_type, enum_type, uint_type, sizei_type, sizei_type *, char_type *), nullptr > GetProgramResourceName
Definition: c_api.hpp:2524
basic_block< false > block
Alias for non-const byte memory span.
Definition: block.hpp:27
gl_api_function< void(enum_type, int_type), nullptr > MultiTexCoord1i
Definition: c_api.hpp:4841
gl_api_function< void(uint_type, enum_type, uint_type, sizei_type, const enum_type *, sizei_type, sizei_type *, float_type *), nullptr > GetProgramResourcefvNV
Definition: c_api.hpp:2568
EAGINE_MSG_TYPE(gl, TransfFdbk) transform_feedback_tag
Tag type denoting GL transform feedback objects.
Definition: object_name.hpp:100
gl_api_function< void(uint_type, enum_type, uint_type, sizei_type, const enum_type *, sizei_type, sizei_type *, int_type *), nullptr > GetProgramResourceiv
Definition: c_api.hpp:2553
EAGINE_MSG_TYPE(gl, VertexArry) vertex_array_tag
Tag type denoting GL vertex array objects.
Definition: object_name.hpp:104
gl_api_function< void(uint_type, uint_type, uint_type), nullptr > ShaderStorageBlockBinding
Definition: c_api.hpp:3241
gl_api_function< void(enum_type, int_type, enum_type, sizei_type, int_type, sizei_type, const_void_ptr_type), nullptr > CompressedTexImage1D
Definition: c_api.hpp:1023
gl_api_function< bool_type(uint_type), nullptr > IsPathNV
Definition: c_api.hpp:5158
gl_api_function< void(enum_type, enum_type, const_void_ptr_type), nullptr > DrawElementsIndirect
Definition: c_api.hpp:4392
gl_api_function< void(uint_type, uint_type), nullptr > VertexBindingDivisor
Definition: c_api.hpp:319
gl_api_function< void(), nullptr > ResumeTransformFeedback
Definition: c_api.hpp:2076
gl_api_function< void(enum_type, sizei_type, enum_type, const_void_ptr_type, sizei_type), nullptr > DrawElementsInstanced
Definition: c_api.hpp:4337
gl_api_function< bool_type(uint_type), nullptr > IsQuery
Definition: c_api.hpp:2142
GLuint64 uint64_type
Unsigned 64-bit integer type.
Definition: config.hpp:79
prog_var_location< EAGINE_ID_V(FragData)> frag_data_location
Alias for shader program fragment data variable location wrapper.
Definition: prog_var_loc.hpp:148
gl_api_function< void(const float_type[16]), nullptr > LoadTransposeMatrixf
Definition: c_api.hpp:5067
gl_api_function< void(uint_type), nullptr > PrimitiveRestartIndex
Definition: c_api.hpp:4072
gl_api_function< void(int_type, float_type, float_type, float_type), nullptr > Uniform3f
Definition: c_api.hpp:2842
gl_api_function< void(uint_type, enum_type, uint_type, intptr_type, sizeiptr_type), nullptr > TextureBufferRange
Definition: c_api.hpp:1168
gl_api_function< void(int_type, sizei_type, bool_type, const float_type *), nullptr > UniformMatrix4fv
Definition: c_api.hpp:2898
gl_api_function< void(uint_type, enum_type, int_type *), nullptr > GetSamplerParameterIiv
Definition: c_api.hpp:1596
gl_object_name< program_tag > program_name
Alias for GL program object handle.
Definition: object_name.hpp:128
gl_api_function< void(enum_type, enum_type, enum_type, int_type *), nullptr > GetFramebufferAttachmentParameteriv
Definition: c_api.hpp:1870
gl_api_function< void(float_type, float_type, float_type), nullptr > Color3f
Definition: c_api.hpp:4777
gl_api_function< void(int_type, sizei_type, const int_type *), nullptr > Uniform4iv
Definition: c_api.hpp:2769
gl_api_function< void(enum_type, int64_type *), nullptr > GetInteger64v
Definition: c_api.hpp:4550
gl_api_function< void(uint_type, enum_type), nullptr > NamedFramebufferDrawBuffer
Definition: c_api.hpp:1723
gl_api_function< void(enum_type, int_type, enum_type, sizei_type, sizei_type, int_type, sizei_type, const_void_ptr_type), nullptr > CompressedTexImage2D
Definition: c_api.hpp:1009
gl_api_function< void(enum_type, enum_type, int64_type *), nullptr > GetBufferParameteri64v
Definition: c_api.hpp:558
gl_api_function< void(enum_type), nullptr > Disable
Definition: c_api.hpp:125
@ float_type
Floating-point pixel data.
gl_api_function< void(uint_type, uint_type, int_type, bool_type, int_type, enum_type, enum_type), nullptr > BindImageTexture
Definition: c_api.hpp:645
gl_api_function< void(enum_type, const_void_ptr_type), nullptr > DrawArraysIndirect
Definition: c_api.hpp:4276
gl_api_function< void(uint_type, enum_type, int_type *), nullptr > GetTextureParameterIiv
Definition: c_api.hpp:1343
gl_api_function< void(uint_type, sizei_type, const char_type *const *, const int_type *), nullptr > CompileShaderInclude
Definition: c_api.hpp:2365
gl_api_function< void(uint_type, sizei_type, enum_type, sizei_type, sizei_type, bool_type), nullptr > TextureStorage2DMultisample
Definition: c_api.hpp:892
gl_api_function< void(enum_type, int_type, int_type, sizei_type, int_type, enum_type, enum_type, const_void_ptr_type), nullptr > TexImage1D
Definition: c_api.hpp:742
gl_api_function< void_ptr_type(enum_type, enum_type), nullptr > MapBuffer
Definition: c_api.hpp:471
GLuint uint_type
Unsigned integer type.
Definition: config.hpp:73
gl_object_name< program_pipeline_tag > program_pipeline_name
Alias for GL program pipeline object handle.
Definition: object_name.hpp:123
gl_api_function< void(enum_type, enum_type, const uint_type *), nullptr > TexParameterIuiv
Definition: c_api.hpp:1210
gl_api_function< void(enum_type, int_type, int_type, int_type, sizei_type, sizei_type, enum_type, enum_type, const_void_ptr_type), nullptr > TexSubImage2D
Definition: c_api.hpp:798
gl_api_function< void(enum_type, enum_type, const int_type *), nullptr > TexParameterIiv
Definition: c_api.hpp:1203
gl_api_function< void(enum_type, int_type, const char_type *, int_type, const char_type *), nullptr > NamedString
Definition: c_api.hpp:4627
gl_api_function< void(uint_type, enum_type, int_type *), nullptr > GetNamedRenderbufferParameteriv
Definition: c_api.hpp:1678
gl_api_function< void(float_type), nullptr > LineWidth
Definition: c_api.hpp:4082
gl_api_function< void(int_type, int_type), nullptr > Uniform1i
Definition: c_api.hpp:2720
gl_api_function< void(uint_type, int_type, int_type, int_type), nullptr > ProgramUniform2i
Definition: c_api.hpp:3010
gl_api_function< void(enum_type, int_type, int_type, int_type, int_type), nullptr > MultiTexCoord4i
Definition: c_api.hpp:4858
gl_api_function< void(int_type, sizei_type, const float_type *), nullptr > Uniform1fv
Definition: c_api.hpp:2856
gl_api_function< void(uint_type, int_type, sizei_type, const float_type *), nullptr > ProgramUniform3fv
Definition: c_api.hpp:3157
gl_api_function< void(uint_type, int_type, uint_type, uint_type), nullptr > ProgramUniform2ui
Definition: c_api.hpp:3066
gl_object_name< texture_tag > texture_name
Alias for GL texture object handle.
Definition: object_name.hpp:153
gl_api_function< void(enum_type), nullptr > Begin
Definition: c_api.hpp:4734
gl_api_function< void(uint_type, uint_type, int_type, enum_type, uint_type), nullptr > VertexArrayAttribIFormat
Definition: c_api.hpp:3780
@ int64_type
64-bit integer value type.
gl_api_function< void(sizei_type, uint_type *), nullptr > GenRenderbuffers
Definition: c_api.hpp:1610
gl_api_function< void(), nullptr > End
Definition: c_api.hpp:4738
gl_api_function< bool_type(uint_type), nullptr > IsFramebuffer
Definition: c_api.hpp:1704
gl_api_function< void(sizei_type, const uint_type *), nullptr > DeleteTransformFeedbacks
Definition: c_api.hpp:2045
gl_api_function< void(uint_type, uint_type), nullptr > VertexAttribBinding
Definition: c_api.hpp:277
gl_api_function< void(enum_type, enum_type, int_type *), nullptr > GetQueryiv
Definition: c_api.hpp:2149
gl_api_function< void(uint_type, enum_type, int_type *), nullptr > GetNamedBufferParameteriv
Definition: c_api.hpp:565
gl_api_function< void(uint_type, int_type, int_type, int_type, int_type, sizei_type, sizei_type, sizei_type, enum_type, sizei_type, const_void_ptr_type), nullptr > CompressedTextureSubImage3D
Definition: c_api.hpp:1089
gl_api_function< void(enum_type, enum_type, intptr_type, intptr_type, sizeiptr_type), nullptr > CopyBufferSubData
Definition: c_api.hpp:537
gl_api_function< void_ptr_type(uint_type, intptr_type, sizeiptr_type, bitfield_type), nullptr > MapNamedBufferRange
Definition: c_api.hpp:492
Typed enumeration for GL object type constants.
Definition: enum_types.hpp:106
gl_api_function< void(uint_type, enum_type, int_type *), nullptr > GetShaderiv
Definition: c_api.hpp:2391
gl_api_function< void(const double_type[16]), nullptr > MultMatrixd
Definition: c_api.hpp:5053
gl_api_function< int_type(uint_type, enum_type, const char_type *), nullptr > GetSubroutineUniformLocation
Definition: c_api.hpp:2645
gl_api_function< void(enum_type, float_type), nullptr > PointParameterf
Definition: c_api.hpp:4101
Non-owning wrapper for C-API opaque handle types.
Definition: handle.hpp:26
gl_api_function< bool_type(uint_type), nullptr > IsShader
Definition: c_api.hpp:2346
gl_api_function< void(sizei_type, uint_type *), nullptr > CreateVertexArrays
Definition: c_api.hpp:207
gl_api_function< bool_type(uint_type), nullptr > IsVertexArray
Definition: c_api.hpp:219
gl_api_function< void(uint_type, uint_type, enum_type, intptr_type), nullptr > GetQueryBufferObjectui64v
Definition: c_api.hpp:2212
gl_api_function< bool_type(uint_type), nullptr > IsTexture
Definition: c_api.hpp:612
gl_api_function< void(int_type, float_type, float_type, float_type, float_type), nullptr > Uniform4f
Definition: c_api.hpp:2849
gl_api_function< void(uint_type, int_type, float_type, float_type, float_type), nullptr > ProgramUniform3f
Definition: c_api.hpp:3129
gl_api_function< void(enum_type, intptr_type, sizeiptr_type), nullptr > FlushMappedBufferRange
Definition: c_api.hpp:499
gl_api_function< void(sizei_type, const uint_type *), nullptr > DeleteVertexArrays
Definition: c_api.hpp:214
gl_api_function< void(uint_type, sizei_type, sizei_type *, char_type *), nullptr > GetProgramPipelineInfoLog
Definition: c_api.hpp:2324
gl_api_function< void(enum_type, uint_type), nullptr > Disablei
Definition: c_api.hpp:130
gl_api_function< uint_type(uint_type, enum_type, const char_type *), nullptr > GetProgramResourceIndex
Definition: c_api.hpp:2517
gl_api_function< uint_type(sizei_type), nullptr > GenPathsNV
Definition: c_api.hpp:5146
gl_api_function< void(uint_type, enum_type, int_type), nullptr > SamplerParameteri
Definition: c_api.hpp:1547
gl_api_function< void(enum_type, enum_type, uint_type, intptr_type, sizeiptr_type), nullptr > TexBufferRange
Definition: c_api.hpp:1154
gl_api_function< bool_type(int_type, const char_type *), nullptr > IsNamedString
Definition: c_api.hpp:4641
gl_api_function< void(sync_type), nullptr > DeleteSync
Definition: c_api.hpp:168
gl_api_function< void(enum_type, enum_type, intptr_type, sizeiptr_type, enum_type, enum_type, const_void_ptr_type), nullptr > ClearBufferSubData
Definition: c_api.hpp:450
gl_api_function< void(int_type, int_type, sizei_type, sizei_type), nullptr > Viewport
Definition: c_api.hpp:3926
gl_api_function< void(enum_type, int_type, enum_type, int_type, int_type, sizei_type, int_type), nullptr > CopyTexImage1D
Definition: c_api.hpp:764
gl_api_function< void(uint_type, sizeiptr_type, const_void_ptr_type, bitfield_type), nullptr > NamedBufferStorage
Definition: c_api.hpp:394
gl_api_function< void(enum_type), nullptr > BlendEquation
Definition: c_api.hpp:4190
gl_api_function< void(float_type, float_type, float_type), nullptr > Translatef
Definition: c_api.hpp:4912
gl_object_name< framebuffer_tag > framebuffer_name
Alias for GL framebuffer object handle.
Definition: object_name.hpp:118
gl_api_function< void(), nullptr > Flush
Definition: c_api.hpp:5669
gl_api_function< void(enum_type, uint_type), nullptr > EndQueryIndexed
Definition: c_api.hpp:2237
gl_api_function< void(uint_type, sizei_type, enum_type, sizei_type, sizei_type, sizei_type, bool_type), nullptr > TextureStorage3DMultisample
Definition: c_api.hpp:885
gl_api_function< void(uint_type, int_type, float_type, float_type, float_type, float_type), nullptr > ProgramUniform4f
Definition: c_api.hpp:3136
gl_api_function< void(uint_type, enum_type, const int_type *), nullptr > TextureParameterIiv
Definition: c_api.hpp:1245
gl_api_function< uint_type(uint_type, enum_type, const char_type *), nullptr > GetSubroutineIndex
Definition: c_api.hpp:2624
gl_api_function< void(enum_type, enum_type, const int_type *), nullptr > TexParameteriv
Definition: c_api.hpp:1196
gl_api_function< void(uint_type, enum_type, int64_type *), nullptr > GetNamedBufferParameteri64v
Definition: c_api.hpp:572
gl_api_function< void(uint_type, int_type, float_type, float_type), nullptr > ProgramUniform2f
Definition: c_api.hpp:3122
gl_api_function< void(float_type), nullptr > PointSize
Definition: c_api.hpp:4087
gl_api_function< void(int_type, uint_type, uint_type), nullptr > Uniform2ui
Definition: c_api.hpp:2781
gl_api_function< void(uint_type, sizei_type, enum_type, sizei_type), nullptr > TextureStorage1D
Definition: c_api.hpp:871
GLsizeiptr sizeiptr_type
Signed integer size type.
Definition: config.hpp:91
gl_api_function< void(uint_type, enum_type, int_type *), nullptr > GetProgramiv
Definition: c_api.hpp:2496
gl_api_function< void(int_type, uint_type), nullptr > Uniform1ui
Definition: c_api.hpp:2774
const GLvoid * const_void_ptr_type
Untyped const pointer type.
Definition: config.hpp:43
gl_api_function< void(debug_callback_type *, const_void_ptr_type), nullptr > DebugMessageCallback
Definition: c_api.hpp:4662
gl_api_function< void(int_type, const char_type *), nullptr > DeleteNamedString
Definition: c_api.hpp:4634
gl_api_function< void(int_type, int_type, int_type), nullptr > Uniform2i
Definition: c_api.hpp:2727
prog_var_location< EAGINE_ID_V(SubrtUnfrm)> subroutine_uniform_location
Alias for shader program subroutine uniform location wrapper.
Definition: prog_var_loc.hpp:126
gl_api_function< void(int_type, sizei_type, bool_type, const float_type *), nullptr > UniformMatrix2x3fv
Definition: c_api.hpp:2905
gl_api_function< void(enum_type, sizei_type, uint_type *), nullptr > CreateTextures
Definition: c_api.hpp:600
gl_object_name< shader_tag > shader_name
Alias for GL shader object handle.
Definition: object_name.hpp:148
gl_api_function< void(enum_type, float_type *), nullptr > GetFloatv
Definition: c_api.hpp:4564
gl_api_function< void(int_type, float_type), nullptr > Uniform1f
Definition: c_api.hpp:2828
gl_api_function< void(enum_type, int_type, int_type, int_type, int_type, sizei_type, sizei_type, sizei_type, enum_type, enum_type, const_void_ptr_type), nullptr > TexSubImage3D
Definition: c_api.hpp:782
gl_api_function< void(enum_type, uint_type, uint_type, intptr_type, sizeiptr_type), nullptr > BindBufferRange
Definition: c_api.hpp:380
gl_api_function< enum_type(), nullptr > GetError
Definition: c_api.hpp:107
gl_api_function< void(float_type, float_type, float_type), nullptr > Vertex3f
Definition: c_api.hpp:4759
gl_api_function< void(bool_type, bool_type, bool_type, bool_type), nullptr > ColorMask
Definition: c_api.hpp:4015
gl_api_function< void(uint_type, enum_type, const int_type *), nullptr > SamplerParameterIiv
Definition: c_api.hpp:1568
gl_api_function< void(enum_type, enum_type, enum_type, uint_type, int_type), nullptr > FramebufferTexture2D
Definition: c_api.hpp:1919
gl_api_function< void(int_type, sizei_type, const float_type *), nullptr > Uniform2fv
Definition: c_api.hpp:2863
gl_api_function< void(uint_type, enum_type, int_type), nullptr > NamedFramebufferParameteri
Definition: c_api.hpp:1849
gl_api_function< void(uint_type, int_type, sizei_type, bool_type, const float_type *), nullptr > ProgramUniformMatrix2x3fv
Definition: c_api.hpp:3192
gl_api_function< void(uint_type, int_type, enum_type, bool_type, uint_type), nullptr > VertexAttribFormat
Definition: c_api.hpp:3752
gl_api_function< void(uint_type, uint_type, uint_type, intptr_type, sizeiptr_type), nullptr > TransformFeedbackBufferRange
Definition: c_api.hpp:2095
gl_api_function< void(uint_type, enum_type, uint_type *), nullptr > GetSamplerParameterIuiv
Definition: c_api.hpp:1603
extension ARB_debug_output
Definition: api.hpp:70
gl_api_function< void(uint_type, uint_type), nullptr > DetachShader
Definition: c_api.hpp:2453
Class wrapping the functions from the GL API.
Definition: api.hpp:32
gl_api_function< void(sizei_type, uint_type *), nullptr > CreateBuffers
Definition: c_api.hpp:347
gl_api_function< void(enum_type), nullptr > MatrixMode
Definition: c_api.hpp:4883
gl_api_function< void(uint_type, enum_type, int_type *), nullptr > GetQueryObjectiv
Definition: c_api.hpp:2163
gl_api_function< void(int_type, sizei_type, const int_type *), nullptr > Uniform2iv
Definition: c_api.hpp:2755
GLboolean bool_type
Boolean type.
Definition: config.hpp:49
gl_api_function< void(uint_type, enum_type, int_type *), nullptr > GetTextureParameteriv
Definition: c_api.hpp:1336
prog_var_location< EAGINE_ID_V(VertexAttr)> vertex_attrib_location
Alias for program vertex attribute location wrapper.
Definition: prog_var_loc.hpp:104
gl_api_function< void(double_type, double_type, double_type), nullptr > Scaled
Definition: c_api.hpp:4963
gl_api_function< void(int_type, int_type, int_type), nullptr > Vertex3i
Definition: c_api.hpp:4746
gl_api_function< void(uint_type), nullptr > DisableVertexAttribArray
Definition: c_api.hpp:305
gl_api_function< void(uint_type, sizei_type, sizei_type *, char_type *), nullptr > GetShaderInfoLog
Definition: c_api.hpp:2398
gl_api_function< void(sizei_type, uint_type *), nullptr > GenTransformFeedbacks
Definition: c_api.hpp:2031
gl_api_function< void(uint_type, enum_type, enum_type, int_type *), nullptr > GetNamedFramebufferAttachmentParameteriv
Definition: c_api.hpp:1877
gl_api_function< void(), nullptr > LoadIdentity
Definition: c_api.hpp:4903
gl_api_function< void(int_type), nullptr > TexCoord1i
Definition: c_api.hpp:4806
gl_api_function< void(uint_type, uint_type, uint_type, const char_type *), nullptr > BindFragDataLocationIndexed
Definition: c_api.hpp:2687
gl_api_function< void(enum_type, int_type, enum_type, int_type, int_type, sizei_type, sizei_type, int_type), nullptr > CopyTexImage2D
Definition: c_api.hpp:757
static auto finally(Func func) -> func_on_scope_exit< Func >
Function constructing on-scope-exit actions.
Definition: scope_exit.hpp:144
gl_api_function< void(int_type), nullptr > ClearStencil
Definition: c_api.hpp:4061
gl_api_function< void(enum_type, intptr_type, sizeiptr_type, const_void_ptr_type), nullptr > BufferSubData
Definition: c_api.hpp:415
gl_api_function< void(int_type, sizei_type, const int_type *), nullptr > Uniform3iv
Definition: c_api.hpp:2762
gl_api_function< void(float_type, float_type, float_type), nullptr > PolygonOffsetClamp
Definition: c_api.hpp:4159
gl_api_function< void(enum_type, int_type, int_type, int_type), nullptr > MultiTexCoord3i
Definition: c_api.hpp:4851
gl_object_name< transform_feedback_tag > transform_feedback_name
Alias for GL transform feedback object handle.
Definition: object_name.hpp:158
gl_api_function< void(sizei_type, uint_type *), nullptr > CreateSamplers
Definition: c_api.hpp:1507
gl_api_function< void(enum_type, sizei_type, enum_type, sizei_type, sizei_type, bool_type), nullptr > TexStorage2DMultisample
Definition: c_api.hpp:694
gl_api_function< void(int_type, int_type, int_type, int_type, int_type), nullptr > Uniform4i
Definition: c_api.hpp:2741
gl_api_function< void(uint_type, enum_type, uint64_type *), nullptr > GetQueryObjectui64v
Definition: c_api.hpp:2184
gl_api_function< bool_type(uint_type), nullptr > IsProgram
Definition: c_api.hpp:2439
gl_api_function< void(uint_type, enum_type, uint_type, int_type *), nullptr > GetTransformFeedbacki_v
Definition: c_api.hpp:2109
gl_api_function< void(enum_type, enum_type, enum_type), nullptr > StencilOp
Definition: c_api.hpp:3996
gl_api_function< void(uint_type, int_type, int_type, sizei_type, enum_type, sizei_type, const_void_ptr_type), nullptr > CompressedTextureSubImage1D
Definition: c_api.hpp:1119
void(enum_type, enum_type, uint_type, enum_type, sizei_type, const char_type *, const_void_ptr_type) debug_callback_type
Alias for the debug callback function type.
Definition: c_api.hpp:91
gl_api_function< void(uint_type, enum_type, uint_type *), nullptr > GetTextureParameterIuiv
Definition: c_api.hpp:1350
gl_api_function< void(uint_type, int_type, sizei_type, bool_type, const float_type *), nullptr > ProgramUniformMatrix2x4fv
Definition: c_api.hpp:3206
gl_api_function< void(sizei_type, uint_type *), nullptr > CreateRenderbuffers
Definition: c_api.hpp:1617
gl_api_function< void(uint_type, enum_type, uint_type, int64_type *), nullptr > GetTransformFeedbacki64_v
Definition: c_api.hpp:2116
gl_api_function< void(sizei_type, const uint_type *), nullptr > DeleteRenderbuffers
Definition: c_api.hpp:1624
gl_api_function< void(enum_type, uint_type, sizei_type, const char_type *), nullptr > ObjectLabel
Definition: c_api.hpp:4694
EAGINE_MSG_TYPE(gl, Query) query_tag
Tag type denoting GL query objects.
Definition: object_name.hpp:80
gl_api_function< void(uint_type, uint_type), nullptr > DisableVertexArrayAttrib
Definition: c_api.hpp:312
EAGINE_MSG_TYPE(gl, Rndrbuffer) renderbuffer_tag
Tag type denoting GL renderbuffer objects.
Definition: object_name.hpp:84
gl_api_function< void(sizei_type, uint_type *), nullptr > GenFramebuffers
Definition: c_api.hpp:1685
gl_api_function< void(uint_type), nullptr > BindProgramPipeline
Definition: c_api.hpp:2289
EAGINE_MSG_TYPE(gl, Texture) texture_tag
Tag type denoting GL texture objects.
Definition: object_name.hpp:96
gl_api_function< void(enum_type, enum_type, enum_type, enum_type), nullptr > StencilOpSeparate
Definition: c_api.hpp:4003
gl_api_function< void(enum_type, float_type, float_type, float_type, float_type), nullptr > MultiTexCoord4f
Definition: c_api.hpp:4879
gl_api_function< void(enum_type, const_void_ptr_type, sizei_type, sizei_type), nullptr > MultiDrawArraysIndirect
Definition: c_api.hpp:4290
gl_api_function< void(uint_type, enum_type, enum_type, enum_type, const_void_ptr_type), nullptr > ClearNamedBufferData
Definition: c_api.hpp:436
gl_api_function< void(uint_type, int_type, uint_type, uint_type, uint_type), nullptr > ProgramUniform3ui
Definition: c_api.hpp:3073
gl_api_function< void(uint_type, int_type, sizei_type, bool_type, const float_type *), nullptr > ProgramUniformMatrix4x3fv
Definition: c_api.hpp:3227
gl_api_function< void(uint_type, int_type, uint_type, uint_type, uint_type, uint_type), nullptr > ProgramUniform4ui
Definition: c_api.hpp:3080
gl_api_function< void(enum_type, uint_type), nullptr > BindTransformFeedback
Definition: c_api.hpp:2059
gl_api_function< void(uint_type), nullptr > InvalidateBufferData
Definition: c_api.hpp:523
gl_api_function< void(int_type, int_type, int_type, int_type), nullptr > Color4i
Definition: c_api.hpp:4773
gl_api_function< void(int_type, int_type, sizei_type, sizei_type, enum_type, enum_type, void_ptr_type), nullptr > ReadPixels
Definition: c_api.hpp:4500
gl_api_function< void(enum_type, enum_type, uint_type, int_type, int_type), nullptr > FramebufferTextureLayer
Definition: c_api.hpp:1933
gl_api_function< void(uint_type), nullptr > DeleteProgram
Definition: c_api.hpp:2434
gl_api_function< void(int_type, sizei_type, const uint_type *), nullptr > Uniform3uiv
Definition: c_api.hpp:2816
gl_api_function< void(int_type, uint_type, uint_type, uint_type, uint_type), nullptr > Uniform4ui
Definition: c_api.hpp:2795
gl_api_function< void(uint_type, uint_type, uint_type), nullptr > TransformFeedbackBufferBase
Definition: c_api.hpp:2088
gl_api_function< void(float_type, float_type, float_type, float_type), nullptr > ClearColor
Definition: c_api.hpp:4046
gl_api_function< void(sizei_type, const uint_type *), nullptr > DeleteProgramPipelines
Definition: c_api.hpp:2277
gl_api_function< void(const double_type[16]), nullptr > LoadTransposeMatrixd
Definition: c_api.hpp:5071
GLintptr intptr_type
Signed integer size type.
Definition: config.hpp:94
GLdouble double_type
Double-precision floating-point type.
Definition: config.hpp:85
gl_api_function< void(enum_type, const float_type *), nullptr > PatchParameterfv
Definition: c_api.hpp:4129
gl_api_function< void(enum_type, enum_type, uint_type, int_type), nullptr > FramebufferTexture
Definition: c_api.hpp:1898
basic_gl_c_api< ApiTraits > c_api
Alias for the basic GL API wrapper.
Definition: api.hpp:39
gl_api_function< void(uint_type, int_type, sizei_type, const float_type *), nullptr > ProgramUniform1fv
Definition: c_api.hpp:3143
gl_api_function< void(uint_type, int_type, int_type, int_type, int_type), nullptr > ProgramUniform3i
Definition: c_api.hpp:3017
gl_api_function< void(), nullptr > Finish
Definition: c_api.hpp:5673
gl_api_function< void(uint_type, enum_type, float_type *), nullptr > GetTextureParameterfv
Definition: c_api.hpp:1329
gl_api_function< void(enum_type), nullptr > GenerateMipmap
Definition: c_api.hpp:1419
gl_api_function< void(int_type, int_type, int_type, int_type), nullptr > Vertex4i
Definition: c_api.hpp:4751
gl_api_function< void(enum_type, sizei_type, enum_type, sizei_type), nullptr > TexStorage1D
Definition: c_api.hpp:673
GLfloat float_type
Floating-point type.
Definition: config.hpp:82
gl_api_function< void(), nullptr > EndTransformFeedback
Definition: c_api.hpp:2081
gl_api_function< void(int_type, int_type), nullptr > TexCoord2i
Definition: c_api.hpp:4810
gl_api_function< void(enum_type, const_void_ptr_type, intptr_type, sizei_type, sizei_type), nullptr > MultiDrawArraysIndirectCount
Definition: c_api.hpp:4297
@ message
Message protocol.
gl_api_function< void(double_type, double_type, double_type), nullptr > Translated
Definition: c_api.hpp:4917
gl_api_function< void(uint_type, int_type, sizei_type, const uint_type *), nullptr > ProgramUniform1uiv
Definition: c_api.hpp:3087
gl_api_function< void(sizei_type, const uint_type *), nullptr > DeleteSamplers
Definition: c_api.hpp:1514
gl_api_function< void(float_type, float_type), nullptr > PolygonOffset
Definition: c_api.hpp:4152
gl_api_function< void(enum_type, sizei_type, enum_type, const_void_ptr_type, int_type), nullptr > DrawElementsBaseVertex
Definition: c_api.hpp:4344
gl_api_function< void(uint_type, bitfield_type, uint_type), nullptr > UseProgramStages
Definition: c_api.hpp:2303
gl_api_function< void(uint_type, sizei_type, const char_type *const *, const int_type *), nullptr > ShaderSource
Definition: c_api.hpp:2353
gl_api_function< void(const float_type[16]), nullptr > MultMatrixf
Definition: c_api.hpp:5049
gl_api_function< void(bitfield_type), nullptr > MemoryBarrier
Definition: c_api.hpp:147
gl_api_function< void(float_type, float_type), nullptr > TexCoord2f
Definition: c_api.hpp:4827
gl_api_function< void(sizei_type, const uint_type *), nullptr > DeleteFramebuffers
Definition: c_api.hpp:1699
GLvoid * void_ptr_type
Untyped pointer type.
Definition: config.hpp:40
gl_api_function< void(uint_type, uint_type, enum_type, intptr_type), nullptr > GetQueryBufferObjectuiv
Definition: c_api.hpp:2198
gl_api_function< void(uint_type, uint_type, intptr_type, sizei_type), nullptr > BindVertexBuffer
Definition: c_api.hpp:238
gl_api_function< void(sizei_type, uint_type *), nullptr > GenVertexArrays
Definition: c_api.hpp:200
gl_api_function< void(uint_type, enum_type, const uint_type *), nullptr > TextureParameterIuiv
Definition: c_api.hpp:1252
gl_api_function< void(int_type, sizei_type, bool_type, const float_type *), nullptr > UniformMatrix2x4fv
Definition: c_api.hpp:2919
gl_api_function< void(), nullptr > EndConditionalRender
Definition: c_api.hpp:2256
gl_api_function< void(uint_type, enum_type), nullptr > QueryCounter
Definition: c_api.hpp:2244
gl_api_function< void(uint_type, int_type, int_type, int_type, int_type, sizei_type), nullptr > CopyTextureSubImage1D
Definition: c_api.hpp:978
gl_api_function< void(enum_type, int_type, int_type, sizei_type, sizei_type, sizei_type, int_type, enum_type, enum_type, const_void_ptr_type), nullptr > TexImage3D
Definition: c_api.hpp:711
gl_api_function< void(enum_type), nullptr > BeginTransformFeedback
Definition: c_api.hpp:2066
gl_api_function< void(enum_type), nullptr > ReadBuffer
Definition: c_api.hpp:1959
gl_api_function< void(uint_type, enum_type, int_type *), nullptr > GetProgramPipelineiv
Definition: c_api.hpp:2317
gl_api_function< void(uint_type, enum_type), nullptr > BeginConditionalRender
Definition: c_api.hpp:2251
gl_api_function< void(uint_type, int_type, sizei_type, const float_type *), nullptr > ProgramUniform4fv
Definition: c_api.hpp:3164
gl_api_function< void(uint_type, uint_type, intptr_type, intptr_type, sizeiptr_type), nullptr > CopyNamedBufferSubData
Definition: c_api.hpp:544
gl_api_function< void(void), nullptr > PushMatrix
Definition: c_api.hpp:4887
gl_api_function< void(uint_type, enum_type, uint_type, sizei_type, sizei_type *, char_type *), nullptr > GetActiveSubroutineUniformName
Definition: c_api.hpp:2638
uint_type name_type
Object handle type.
Definition: config.hpp:124
gl_api_function< void(const double_type[16]), nullptr > LoadMatrixd
Definition: c_api.hpp:5035
gl_api_function< void(enum_type, sizei_type, uint_type *), nullptr > CreateQueries
Definition: c_api.hpp:2130
gl_api_function< void(uint_type, enum_type, const float_type *), nullptr > TextureParameterfv
Definition: c_api.hpp:1231
gl_api_function< void(uint_type, uint_type), nullptr > BindTextureUnit
Definition: c_api.hpp:638
gl_api_function< void(uint_type, enum_type, int_type), nullptr > TextureParameteri
Definition: c_api.hpp:1224
gl_api_function< void(uint_type), nullptr > CompileShader
Definition: c_api.hpp:2358
gl_api_function< bool_type(enum_type, uint_type), nullptr > IsEnabledi
Definition: c_api.hpp:142
gl_api_function< void(enum_type, int_type, int_type, int_type, int_type, sizei_type), nullptr > CopyTexSubImage1D
Definition: c_api.hpp:850
gl_api_function< void(uint_type, uint_type), nullptr > VertexAttribDivisor
Definition: c_api.hpp:333
gl_api_function< void(int_type, uint_type, uint_type, uint_type), nullptr > Uniform3ui
Definition: c_api.hpp:2788
gl_api_function< void(void), nullptr > PopMatrix
Definition: c_api.hpp:4891
gl_api_function< void(enum_type, uint_type, float_type *), nullptr > GetMultisamplefv
Definition: c_api.hpp:4185
gl_api_function< void(enum_type, int_type, int_type, int_type, int_type, sizei_type, sizei_type, sizei_type, enum_type, sizei_type, const_void_ptr_type), nullptr > CompressedTexSubImage3D
Definition: c_api.hpp:1041
gl_api_function< void(int_type, sizei_type, bool_type, const float_type *), nullptr > UniformMatrix3fv
Definition: c_api.hpp:2891
gl_api_function< bool_type(uint_type), nullptr > IsSampler
Definition: c_api.hpp:1519
gl_api_function< void(uint_type, uint_type, const char_type *), nullptr > BindAttribLocation
Definition: c_api.hpp:2575
gl_api_function< void(float_type, float_type, float_type), nullptr > TexCoord3f
Definition: c_api.hpp:4832
gl_api_function< void(enum_type, enum_type), nullptr > PolygonMode
Definition: c_api.hpp:4145
gl_api_function< void(uint_type, enum_type, float_type), nullptr > TextureParameterf
Definition: c_api.hpp:1217
gl_api_function< void(float_type), nullptr > MinSampleShading
Definition: c_api.hpp:4178
gl_api_function< void(enum_type, enum_type, int_type *), nullptr > GetTexParameterIiv
Definition: c_api.hpp:1273
gl_api_function< void(sizei_type, uint_type *), nullptr > GenSamplers
Definition: c_api.hpp:1500
gl_api_function< void(int_type, sizei_type, const uint_type *), nullptr > Uniform4uiv
Definition: c_api.hpp:2823
gl_api_function< void(int_type, sizei_type, const int_type *), nullptr > Uniform1iv
Definition: c_api.hpp:2748
gl_api_function< void(uint_type, uint_type, int_type, enum_type, bool_type, uint_type), nullptr > VertexArrayAttribFormat
Definition: c_api.hpp:3773
gl_api_function< void(enum_type, int_type *), nullptr > GetIntegerv
Definition: c_api.hpp:4536
gl_api_function< void(uint_type, uint_type), nullptr > AttachShader
Definition: c_api.hpp:2446
gl_api_function< void(enum_type, uint_type, enum_type, int_type *), nullptr > GetQueryIndexediv
Definition: c_api.hpp:2156
gl_api_function< void(uint_type, sizei_type, enum_type, sizei_type, sizei_type), nullptr > TextureStorage2D
Definition: c_api.hpp:864
gl_api_function< void(enum_type, enum_type, enum_type, uint_type, int_type), nullptr > FramebufferTexture1D
Definition: c_api.hpp:1912
gl_api_function< void(uint_type, uint_type, const char_type *), nullptr > BindFragDataLocation
Definition: c_api.hpp:2680
gl_api_function< void(int_type, int_type, int_type, int_type), nullptr > SecondaryColor4i
Definition: c_api.hpp:4792
Class wrapping the C-functions from the GL API.
Definition: c_api.hpp:35
gl_api_function< void(int_type, int_type, int_type, int_type), nullptr > TexCoord4i
Definition: c_api.hpp:4819
gl_api_function< void(uint_type, enum_type, const int_type *), nullptr > TextureParameteriv
Definition: c_api.hpp:1238
gl_api_function< void(uint_type, int_type, int_type), nullptr > ProgramUniform1i
Definition: c_api.hpp:3003
gl_api_function< void(uint_type, enum_type, uint_type, int_type, int_type), nullptr > NamedFramebufferTextureLayer
Definition: c_api.hpp:1940
gl_api_function< void(enum_type, const int_type *, const sizei_type *, sizei_type), nullptr > MultiDrawArrays
Definition: c_api.hpp:4283
prog_var_location< EAGINE_ID_V(ShdrStrBlk)> shader_storage_block_index
Alias for program shader storage block location wrapper.
Definition: prog_var_loc.hpp:170
gl_api_function< void(enum_type, double_type *), nullptr > GetDoublev
Definition: c_api.hpp:4578
gl_api_function< void(enum_type, int_type, int_type, int_type, sizei_type, sizei_type, enum_type, sizei_type, const_void_ptr_type), nullptr > CompressedTexSubImage2D
Definition: c_api.hpp:1057
gl_api_function< void(int_type, sizei_type, const uint_type *), nullptr > Uniform1uiv
Definition: c_api.hpp:2802
gl_api_function< void(enum_type), nullptr > FrontFace
Definition: c_api.hpp:4134
gl_api_function< void(uint_type, enum_type, uint_type, sizei_type, sizei_type *, char_type *), nullptr > GetActiveSubroutineName
Definition: c_api.hpp:2631
gl_api_function< void(enum_type, enum_type, int_type, uint_type), nullptr > StencilFuncSeparate
Definition: c_api.hpp:3989
gl_api_function< void(uint_type, int_type, int_type, int_type, int_type, int_type, sizei_type, sizei_type), nullptr > CopyTextureSubImage2D
Definition: c_api.hpp:971
gl_api_function< void(uint_type, enum_type, intptr_type, sizeiptr_type, enum_type, enum_type, const_void_ptr_type), nullptr > ClearNamedBufferSubData
Definition: c_api.hpp:464
gl_api_function< int_type(uint_type, const char_type *), nullptr > GetFragDataLocation
Definition: c_api.hpp:2694
gl_api_function< void(sizei_type, const uint_type *), nullptr > DeleteBuffers
Definition: c_api.hpp:354
gl_api_function< void(enum_type, float_type, float_type), nullptr > MultiTexCoord2f
Definition: c_api.hpp:4867
gl_api_function< bool_type(uint_type), nullptr > IsProgramPipeline
Definition: c_api.hpp:2284
gl_api_function< void(enum_type, uint_type, uint_type), nullptr > BeginQueryIndexed
Definition: c_api.hpp:2226
gl_api_function< void(int_type, int_type, int_type), nullptr > SecondaryColor3i
Definition: c_api.hpp:4787
gl_api_function< void(uint_type, int_type, int_type, int_type, int_type, sizei_type, sizei_type, sizei_type, enum_type, enum_type, const_void_ptr_type), nullptr > TextureSubImage3D
Definition: c_api.hpp:910
extension ARB_compatibility
Definition: api.hpp:74
gl_api_function< void(float_type, float_type, float_type), nullptr > Scalef
Definition: c_api.hpp:4959
gl_api_function< void(float_type, float_type, float_type), nullptr > SecondaryColor3f
Definition: c_api.hpp:4797
gl_api_function< void(enum_type, int_type), nullptr > PatchParameteri
Definition: c_api.hpp:4122
gl_api_function< bool_type(enum_type), nullptr > UnmapBuffer
Definition: c_api.hpp:511
gl_api_function< void(uint_type, enum_type, sizei_type, sizei_type), nullptr > NamedRenderbufferStorage
Definition: c_api.hpp:1650
gl_api_function< void(enum_type, int_type, int_type, sizei_type, enum_type, enum_type, const_void_ptr_type), nullptr > TexSubImage1D
Definition: c_api.hpp:812
gl_api_function< void(enum_type, enum_type, int_type), nullptr > FramebufferParameteri
Definition: c_api.hpp:1842
gl_api_function< void(sizei_type, uint_type *), nullptr > CreateProgramPipelines
Definition: c_api.hpp:2270
gl_api_function< void(enum_type), nullptr > CullFace
Definition: c_api.hpp:4138
gl_api_function< int_type(uint_type, enum_type, const char_type *), nullptr > GetProgramResourceLocation
Definition: c_api.hpp:2531
gl_api_function< void(uint_type), nullptr > ValidateProgramPipeline
Definition: c_api.hpp:2296
gl_object_name< query_tag > query_name
Alias for GL query object handle.
Definition: object_name.hpp:133
gl_api_function< void(uint_type), nullptr > BindVertexArray
Definition: c_api.hpp:224
GLint64 int64_type
Signed 64-bit integer type.
Definition: config.hpp:76
gl_api_function< void(uint_type, uint_type, int_type, enum_type, uint_type), nullptr > VertexArrayAttribLFormat
Definition: c_api.hpp:3787
gl_api_function< void(uint_type, int_type, sizei_type, const int_type *), nullptr > ProgramUniform4iv
Definition: c_api.hpp:3052
gl_api_function< void(float_type, bool_type), nullptr > SampleCoverage
Definition: c_api.hpp:4166
gl_api_function< void(enum_type, enum_type, const float_type *), nullptr > TexParameterfv
Definition: c_api.hpp:1189
gl_api_function< void(sizei_type, uint_type *), nullptr > GenQueries
Definition: c_api.hpp:2123
gl_api_function< void(enum_type), nullptr > ProvokingVertex
Definition: c_api.hpp:4077
gl_api_function< void(uint_type, enum_type, const int_type *), nullptr > SamplerParameteriv
Definition: c_api.hpp:1561
gl_api_function< void(enum_type, int_type, sizei_type, sizei_type, uint_type), nullptr > DrawArraysInstancedBaseInstance
Definition: c_api.hpp:4262
prog_var_location< EAGINE_ID_V(UniformBlk)> uniform_block_index
Alias for shader program uniform block location wrapper.
Definition: prog_var_loc.hpp:159
gl_api_function< int_type(uint_type, const char_type *), nullptr > GetAttribLocation
Definition: c_api.hpp:2582
gl_api_function< void(uint_type), nullptr > StencilMask
Definition: c_api.hpp:4032
gl_api_function< void(uint_type, uint_type, enum_type, intptr_type), nullptr > GetQueryBufferObjecti64v
Definition: c_api.hpp:2205
gl_api_function< void(int_type, sizei_type, const float_type *), nullptr > Uniform3fv
Definition: c_api.hpp:2870
gl_api_function< void(enum_type, int_type, int_type, sizei_type, enum_type, sizei_type, const_void_ptr_type), nullptr > CompressedTexSubImage1D
Definition: c_api.hpp:1071
extension ARB_shading_language_include
Definition: api.hpp:82
gl_api_function< void(uint_type, sizei_type, sizei_type *, char_type *), nullptr > GetProgramInfoLog
Definition: c_api.hpp:2503
GLsync sync_type
Sync handle type.
Definition: config.hpp:97
gl_api_function< void(enum_type, enum_type, enum_type, uint_type, int_type, int_type), nullptr > FramebufferTexture3D
Definition: c_api.hpp:1926
EAGINE_MSG_TYPE(gl, Program) program_tag
Tag type denoting GL program objects.
Definition: object_name.hpp:76
gl_api_function< void(int_type, int_type, int_type, int_type, int_type, int_type, int_type, int_type, bitfield_type, enum_type), nullptr > BlitFramebuffer
Definition: c_api.hpp:1983
gl_api_function< void(enum_type, int_type), nullptr > PointParameteri
Definition: c_api.hpp:4094
gl_api_function< void(int_type, sizei_type, const uint_type *), nullptr > Uniform2uiv
Definition: c_api.hpp:2809
gl_api_function< enum_type(uint_type, enum_type), nullptr > CheckNamedFramebufferStatus
Definition: c_api.hpp:1954
gl_api_function< void(enum_type, int_type, int_type, int_type, int_type, int_type, int_type, sizei_type, sizei_type), nullptr > CopyTexSubImage3D
Definition: c_api.hpp:828
index_data_type
Shape element index type enumeration.
Definition: drawing.hpp:111
gl_api_function< void(uint_type, enum_type, uint_type, int_type), nullptr > NamedFramebufferTexture
Definition: c_api.hpp:1905
gl_api_function< void(intptr_type), nullptr > DispatchComputeIndirect
Definition: c_api.hpp:4479
gl_api_function< void(uint_type, enum_type, const float_type *), nullptr > SamplerParameterfv
Definition: c_api.hpp:1554
gl_api_function< void(enum_type, uint_type, uint_type, sizei_type, enum_type, const_void_ptr_type), nullptr > DrawRangeElements
Definition: c_api.hpp:4317
gl_api_function< void(enum_type, enum_type, int_type *), nullptr > GetRenderbufferParameteriv
Definition: c_api.hpp:1671
gl_api_function< enum_type(enum_type), nullptr > CheckFramebufferStatus
Definition: c_api.hpp:1947
gl_api_function< void(uint_type, int_type, enum_type, bool_type, sizei_type, const_void_ptr_type), nullptr > VertexAttribPointer
Definition: c_api.hpp:3800
gl_api_function< void(uint_type), nullptr > LinkProgram
Definition: c_api.hpp:2470
gl_api_function< void(enum_type, uint_type), nullptr > BindTexture
Definition: c_api.hpp:624
gl_api_function< void(sizei_type, uint_type *), nullptr > CreateFramebuffers
Definition: c_api.hpp:1692
gl_api_function< void(uint_type, uint_type, int_type, int_type, int_type, int_type, int_type, int_type, int_type, int_type, bitfield_type, enum_type), nullptr > BlitNamedFramebuffer
Definition: c_api.hpp:2002
gl_api_function< void(uint_type, uint_type), nullptr > VertexArrayElementBuffer
Definition: c_api.hpp:231
gl_api_function< void(uint_type, sizei_type, const uint_type *), nullptr > BindTextures
Definition: c_api.hpp:631
gl_api_function< void(const float_type[16]), nullptr > LoadMatrixf
Definition: c_api.hpp:5031
gl_api_function< void(uint_type, enum_type, enum_type, int_type *), nullptr > GetProgramStageiv
Definition: c_api.hpp:2310
gl_api_function< void(uint_type, uint_type, uint_type, intptr_type, sizei_type), nullptr > VertexArrayVertexBuffer
Definition: c_api.hpp:245
gl_api_function< void(enum_type), nullptr > DepthFunc
Definition: c_api.hpp:4008
gl_api_function< uint_type(enum_type), nullptr > CreateShader
Definition: c_api.hpp:2336
gl_api_function< void(uint_type, int_type, sizei_type, bool_type, const float_type *), nullptr > ProgramUniformMatrix3x2fv
Definition: c_api.hpp:3199
gl_api_function< void(uint_type, enum_type, enum_type, int_type *), nullptr > GetProgramInterfaceiv
Definition: c_api.hpp:2510
gl_api_function< void(uint_type, enum_type), nullptr > NamedFramebufferReadBuffer
Definition: c_api.hpp:1966
gl_api_function< void(int_type, int_type, int_type, int_type), nullptr > Uniform3i
Definition: c_api.hpp:2734
gl_api_function< void(enum_type, float_type, float_type, float_type), nullptr > MultiTexCoord3f
Definition: c_api.hpp:4872
gl_api_function< void(float_type), nullptr > TexCoord1f
Definition: c_api.hpp:4823
gl_api_function< void(bitfield_type), nullptr > Clear
Definition: c_api.hpp:4065
Wrapper for GL extension information getter.
Definition: extensions.hpp:21
gl_api_function< void(uint_type, int_type, sizei_type, bool_type, const float_type *), nullptr > ProgramUniformMatrix4fv
Definition: c_api.hpp:3185
gl_api_function< void(uint_type, int_type, int_type, int_type, sizei_type, sizei_type, enum_type, sizei_type, const_void_ptr_type), nullptr > CompressedTextureSubImage2D
Definition: c_api.hpp:1105
gl_api_function< bool_type(sync_type), nullptr > IsSync
Definition: c_api.hpp:172
gl_owned_object_name< program_tag > owned_program_name
Alias for owned GL program object handle.
Definition: object_name.hpp:188
extension ARB_robustness
Definition: api.hpp:78
gl_api_function< void(uint_type, int_type, sizei_type, const int_type *), nullptr > ProgramUniform2iv
Definition: c_api.hpp:3038
gl_api_function< void(uint_type), nullptr > DeleteShader
Definition: c_api.hpp:2341
gl_api_function< void(enum_type, sizei_type, enum_type, sizei_type, sizei_type, sizei_type, bool_type), nullptr > TexStorage3DMultisample
Definition: c_api.hpp:687
gl_api_function< void(uint_type, uint_type), nullptr > BindSampler
Definition: c_api.hpp:1526
gl_api_function< void(enum_type, enum_type, int_type), nullptr > TexParameteri
Definition: c_api.hpp:1182
gl_api_function< void(uint_type, uint_type, sizei_type, sizei_type *, char_type *), nullptr > GetActiveUniformName
Definition: c_api.hpp:2617
gl_api_function< void(enum_type, enum_type, enum_type, uint_type), nullptr > FramebufferRenderbuffer
Definition: c_api.hpp:1884
gl_api_function< void(uint_type, int_type, float_type), nullptr > ProgramUniform1f
Definition: c_api.hpp:3115
gl_api_function< void(enum_type, uint_type, sizei_type, const char_type *), nullptr > PushDebugGroup
Definition: c_api.hpp:4683
gl_api_function< void(enum_type, sizei_type, enum_type, const_void_ptr_type), nullptr > DrawElements
Definition: c_api.hpp:4304
EAGINE_MSG_TYPE(gl, Shader) shader_tag
Tag type denoting GL shader objects.
Definition: object_name.hpp:92
EAGINE_MSG_TYPE(gl, PathNV) path_nv_tag
Tag type denoting GL path objects.
Definition: object_name.hpp:108
gl_api_function< void(), nullptr > PopDebugGroup
Definition: c_api.hpp:4687
gl_api_function< void(int_type, int_type, int_type), nullptr > TexCoord3i
Definition: c_api.hpp:4814
gl_api_function< void(enum_type, int_type, int_type, sizei_type, sizei_type, int_type, enum_type, enum_type, const_void_ptr_type), nullptr > TexImage2D
Definition: c_api.hpp:727
gl_api_function< void(float_type, float_type), nullptr > Vertex2f
Definition: c_api.hpp:4755
gl_api_function< void(uint_type, int_type, uint_type), nullptr > ProgramUniform1ui
Definition: c_api.hpp:3059
gl_api_function< void(uint_type, enum_type, float_type *), nullptr > GetSamplerParameterfv
Definition: c_api.hpp:1582
gl_api_function< void(uint_type, sizei_type, enum_type, sizei_type, sizei_type, sizei_type), nullptr > TextureStorage3D
Definition: c_api.hpp:857
gl_api_function< int_type(uint_type, const char_type *), nullptr > GetUniformBlockIndex
Definition: c_api.hpp:2610
prog_var_location< EAGINE_ID_V(Subroutine)> subroutine_location
Alias for shader program subroutine location wrapper.
Definition: prog_var_loc.hpp:137
gl_api_function< void(enum_type, enum_type, enum_type, sizei_type, const uint_type *, bool_type), nullptr > DebugMessageControl
Definition: c_api.hpp:4669