Tatooine
glfunctions.h
Go to the documentation of this file.
1#ifndef TATOOINE_GL_GL_FUNCTIONS_WRAPPER_H
2#define TATOOINE_GL_GL_FUNCTIONS_WRAPPER_H
3//==============================================================================
8
9#include <iostream>
10//==============================================================================
11namespace tatooine::gl {
12//==============================================================================
13class camera;
14static bool verbose = TATOOINE_GL_VERBOSE;
15static std::ostream& verbose_ostream = std::cerr;
16//============================================================================
17// MISC
18//============================================================================
19DLL_API auto polygon_mode(GLenum face, GLenum mode) -> void;
20DLL_API auto cull_face(GLenum mode) -> void;
21DLL_API auto front_face(GLenum mode) -> void;
22DLL_API auto point_size(GLfloat size) -> void;
23//----------------------------------------------------------------------------
24DLL_API auto line_width(GLfloat width) -> void;
25//----------------------------------------------------------------------------
26DLL_API auto get_boolean_v(GLenum pname, GLboolean* params) -> void;
27DLL_API auto get_double_v(GLenum pname, GLdouble* params) -> void;
28DLL_API auto get_float_v(GLenum pname, GLfloat* params) -> void;
29DLL_API auto get_integer_v(GLenum pname, GLint* params) -> void;
30DLL_API auto get_integer64_v(GLenum pname, GLint64* params) -> void;
31//----------------------------------------------------------------------------
32DLL_API auto get_booleani_v(GLenum target, GLuint index, GLboolean* data)
33 -> void;
34DLL_API auto get_integeri_v(GLenum target, GLuint index, GLint* data) -> void;
35DLL_API auto get_floati_v(GLenum target, GLuint index, GLfloat* data) -> void;
36DLL_API auto get_doublei_v(GLenum target, GLuint index, GLdouble* data) -> void;
37DLL_API auto get_integer64i_v(GLenum target, GLuint index, GLint64* data)
38 -> void;
39//----------------------------------------------------------------------------
40DLL_API auto enable(GLenum cap) -> void;
41//----------------------------------------------------------------------------
42DLL_API auto is_enabled(GLenum cap) -> GLboolean;
43//----------------------------------------------------------------------------
44DLL_API auto disable(GLenum cap) -> void;
45//----------------------------------------------------------------------------
46DLL_API auto get_string(GLenum name) -> const GLubyte*;
47//----------------------------------------------------------------------------
48DLL_API auto get_error() -> GLenum;
49//----------------------------------------------------------------------------
50DLL_API auto depth_func(GLenum func) -> void;
51//----------------------------------------------------------------------------
52DLL_API auto scissor(GLint x, GLint y, GLsizei width, GLsizei height) -> void;
53
54//============================================================================
55// BACKBUFFER RELATED
56//============================================================================
57DLL_API auto clear(GLbitfield mask) -> void;
58//----------------------------------------------------------------------------
59DLL_API auto clear_color(GLfloat red, GLfloat green, GLfloat blue,
60 GLfloat alpha) -> void;
61//----------------------------------------------------------------------------
62DLL_API auto viewport(GLint x, GLint y, GLsizei width, GLsizei height) -> void;
63//----------------------------------------------------------------------------
64DLL_API auto viewport(camera const& cam) -> void;
65//----------------------------------------------------------------------------
66DLL_API auto flush() -> void;
67//----------------------------------------------------------------------------
68DLL_API auto depth_mask(GLboolean flag) -> void;
69//----------------------------------------------------------------------------
70DLL_API auto blend_func(GLenum sfactor, GLenum dfactor) -> void;
71DLL_API auto blend_func_i(GLuint buf, GLenum sfactor, GLenum dfactor) -> void;
72//----------------------------------------------------------------------------
73DLL_API auto blend_func_separate(GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha,
74 GLenum dstAlpha) -> void;
75DLL_API auto blend_func_separate_i(GLuint buf, GLenum srcRGB, GLenum dstRGB,
76 GLenum srcAlpha, GLenum dstAlpha) -> void;
77//----------------------------------------------------------------------------
78DLL_API auto blend_equation(GLenum mode) -> void;
79DLL_API auto blend_equation_i(GLuint buf, GLenum mode) -> void;
80//----------------------------------------------------------------------------
81DLL_API auto blend_equation_separate(GLenum modeRGB, GLenum modeAlpha) -> void;
82DLL_API auto blend_equation_separate_i(GLuint buf, GLenum modeRGB,
83 GLenum modeAlpha) -> void;
84
85//============================================================================
86// VERTEXBUFFER RELATED
87//============================================================================
89//----------------------------------------------------------------------------
91//----------------------------------------------------------------------------
92DLL_API auto enable_vertex_attrib_array(GLuint vaobj, GLuint index) -> void;
93//----------------------------------------------------------------------------
94DLL_API auto vertex_attrib_pointer(GLuint index, GLint size, GLenum type,
95 GLboolean normalized, GLsizei stride,
96 const GLvoid* pointer) -> void;
97//----------------------------------------------------------------------------
98DLL_API auto vertex_attrib_i_pointer(GLuint index, GLint size, GLenum type,
99 GLsizei stride, const GLvoid* pointer)
100 -> void;
101//----------------------------------------------------------------------------
102DLL_API auto vertex_attrib_l_pointer(GLuint index, GLint size, GLenum type,
103 GLsizei stride, const GLvoid* pointer)
104 -> void;
105//----------------------------------------------------------------------------
106DLL_API auto draw_arrays(GLenum mode, GLint first, GLsizei count) -> void;
107//============================================================================
108// VERTEXARRAY RELATED
109//============================================================================
110DLL_API auto create_vertex_arrays(GLsizei n, GLuint* arrays) -> void;
111//----------------------------------------------------------------------------
112DLL_API auto delete_vertex_arrays(GLsizei n, GLuint* arrays) -> void;
113//----------------------------------------------------------------------------
114DLL_API auto bind_vertex_array(GLuint array) -> void;
115//----------------------------------------------------------------------------
116DLL_API auto draw_elements(GLenum mode, GLsizei count, GLenum type,
117 const GLvoid* indices) -> void;
118//============================================================================
119// BUFFER RELATED
120//============================================================================
121DLL_API auto buffer_data(GLenum target, GLsizeiptr size, const void* data,
122 GLenum usage) -> void;
123//----------------------------------------------------------------------------
124DLL_API auto named_buffer_data(GLuint buffer, GLsizeiptr size, const void* data,
125 GLenum usage) -> void;
126//----------------------------------------------------------------------------
127DLL_API auto bind_buffer(GLenum target, GLuint buffer) -> void;
128//----------------------------------------------------------------------------
129DLL_API auto bind_buffer_base(GLenum target, GLuint index, GLuint buffer)
130 -> void;
131
132//----------------------------------------------------------------------------
133DLL_API auto create_buffers(GLsizei n, GLuint* buffers) -> void;
134//----------------------------------------------------------------------------
135DLL_API auto delete_buffers(GLsizei n, GLuint* buffers) -> void;
136//----------------------------------------------------------------------------
137DLL_API auto copy_named_buffer_sub_data(GLuint readBuffer, GLuint writeBuffer,
138 GLintptr readOffset,
139 GLintptr writeOffset, GLsizei size)
140 -> void;
141//----------------------------------------------------------------------------
142DLL_API auto map_buffer(GLenum target, GLenum access) -> void*;
143//----------------------------------------------------------------------------
144DLL_API auto map_named_buffer(GLuint buffer, GLenum access) -> void*;
145//----------------------------------------------------------------------------
146DLL_API auto map_buffer_range(GLenum target, GLintptr offset, GLsizeiptr length,
147 GLbitfield access) -> void*;
148//----------------------------------------------------------------------------
149DLL_API auto map_named_buffer_range(GLuint buffer, GLintptr offset,
150 GLsizei length, GLbitfield access) -> void*;
151//----------------------------------------------------------------------------
152template <typename T>
153auto named_buffer_data(GLuint buffer, GLsizei size, const T* data, GLenum usage)
154 -> void {
155 if (verbose) {
156 if constexpr (std::is_arithmetic_v<T>) {
157 verbose_ostream << "glNamedBufferData(" << buffer << ", " << size << ", "
158 << "[";
159 verbose_ostream << data[0];
160 for (GLsizei i = 1;
161 i < std::min<GLsizei>(size / static_cast<GLsizei>(sizeof(T)), 3);
162 ++i) {
163 verbose_ostream << ", " << data[i];
164 }
165 if (size / static_cast<GLsizei>(sizeof(T)) > 3) {
166 verbose_ostream << ", ...";
167 }
168 verbose_ostream << "], " << to_string(usage) << ")\n";
169 } else {
170 verbose_ostream << "glNamedBufferData(" << buffer << ", " << size << ", "
171 << data << ", " << to_string(usage) << ")\n";
172 }
173 }
174 glNamedBufferData(buffer, size, data, usage);
175 auto err = gl::get_error();
176 if (err != GL_NO_ERROR) {
177 auto err_str = gl_error_to_string(err);
178 if (err == GL_INVALID_VALUE) {
179 throw gl_error{
180 "glNamedBufferData",
181 err_str + " (size should be negative: " + std::to_string(size) + ")"};
182 }
183 throw gl_error{"glNamedBufferData", err_str};
184 }
185}
186//----------------------------------------------------------------------------
187DLL_API auto unmap_buffer(GLenum target) -> GLboolean;
188//----------------------------------------------------------------------------
189DLL_API auto unmap_named_buffer(GLuint buffer) -> GLboolean;
190//----------------------------------------------------------------------------
191DLL_API auto buffer_sub_data(GLenum target, GLintptr offset, GLsizeiptr size,
192 const GLvoid* data) -> void;
193//----------------------------------------------------------------------------
194DLL_API auto named_buffer_sub_data(GLuint buffer, GLintptr offset, GLsizei size,
195 const void* data) -> void;
196//----------------------------------------------------------------------------
197DLL_API auto get_buffer_parameter_iv(GLenum target, GLenum value, GLint* data)
198 -> void;
199//----------------------------------------------------------------------------
200DLL_API auto clear_named_buffer_data(GLuint buffer, GLenum internalformat,
201 GLenum format, GLenum type,
202 const void* data) -> void;
203//============================================================================
204// SHADER RELATED
205//============================================================================
206DLL_API auto create_program() -> GLuint;
207//----------------------------------------------------------------------------
208DLL_API auto attach_shader(GLuint program, GLuint shader) -> void;
209//----------------------------------------------------------------------------
210DLL_API auto link_program(GLuint program) -> void;
211//----------------------------------------------------------------------------
212DLL_API auto delete_program(GLuint program) -> void;
213//----------------------------------------------------------------------------
214DLL_API auto use_program(GLuint program) -> void;
215//----------------------------------------------------------------------------
216DLL_API auto create_shader(GLenum shaderType) -> GLuint;
217//----------------------------------------------------------------------------
218DLL_API auto shader_source(GLuint shader, GLsizei count, const GLchar** string,
219 const GLint* length) -> void;
220//----------------------------------------------------------------------------
221DLL_API auto compile_shader(GLuint shader) -> void;
222//----------------------------------------------------------------------------
223DLL_API auto delete_shader(GLuint shader) -> void;
224//----------------------------------------------------------------------------
225DLL_API auto dispatch_compute(GLuint num_groups_x, GLuint num_groups_y,
226 GLuint num_groups_z) -> void;
227//----------------------------------------------------------------------------
228DLL_API auto get_shader_iv(GLuint shader, GLenum pname, GLint* params) -> void;
229//----------------------------------------------------------------------------
231//----------------------------------------------------------------------------
232DLL_API auto get_shader_info_log(GLuint shader, GLsizei maxLength,
233 GLsizei* length, GLchar* infoLog) -> void;
234//----------------------------------------------------------------------------
235DLL_API auto get_shader_info_log(GLuint shader, GLsizei maxLength)
236 -> std::string;
237//----------------------------------------------------------------------------
238DLL_API auto get_shader_info_log(GLuint shader) -> std::string;
239//----------------------------------------------------------------------------
240DLL_API auto program_uniform_1f(GLuint program, GLint location, GLfloat v0)
241 -> void;
242//----------------------------------------------------------------------------
243DLL_API auto program_uniform_2f(GLuint program, GLint location, GLfloat v0,
244 GLfloat v1) -> void;
245//----------------------------------------------------------------------------
246DLL_API auto program_uniform_3f(GLuint program, GLint location, GLfloat v0,
247 GLfloat v1, GLfloat v2) -> void;
248//----------------------------------------------------------------------------
249DLL_API auto program_uniform_4f(GLuint program, GLint location, GLfloat v0,
250 GLfloat v1, GLfloat v2, GLfloat v3) -> void;
251//----------------------------------------------------------------------------
252DLL_API auto program_uniform_1i(GLuint program, GLint location, GLint v0)
253 -> void;
254//----------------------------------------------------------------------------
255DLL_API auto program_uniform_2i(GLuint program, GLint location, GLint v0,
256 GLint v1) -> void;
257//----------------------------------------------------------------------------
258DLL_API auto program_uniform_3i(GLuint program, GLint location, GLint v0,
259 GLint v1, GLint v2) -> void;
260//----------------------------------------------------------------------------
261DLL_API auto program_uniform_4i(GLuint program, GLint location, GLint v0,
262 GLint v1, GLint v2, GLint v3) -> void;
263//----------------------------------------------------------------------------
264DLL_API auto program_uniform_1ui(GLuint program, GLint location, GLuint v0)
265 -> void;
266//----------------------------------------------------------------------------
267DLL_API auto program_uniform_2ui(GLuint program, GLint location, GLuint v0,
268 GLuint v1) -> void;
269//----------------------------------------------------------------------------
270DLL_API auto program_uniform_3ui(GLuint program, GLint location, GLuint v0,
271 GLuint v1, GLuint v2) -> void;
272//----------------------------------------------------------------------------
273DLL_API auto program_uniform_4ui(GLuint program, GLint location, GLuint v0,
274 GLuint v1, GLuint v2, GLuint v3) -> void;
275//----------------------------------------------------------------------------
276DLL_API auto program_uniform_1fv(GLuint program, GLint location, GLsizei count,
277 const GLfloat* value) -> void;
278//----------------------------------------------------------------------------
279DLL_API auto program_uniform_2fv(GLuint program, GLint location, GLsizei count,
280 const GLfloat* value) -> void;
281//----------------------------------------------------------------------------
282DLL_API auto program_uniform_3fv(GLuint program, GLint location, GLsizei count,
283 const GLfloat* value) -> void;
284//----------------------------------------------------------------------------
285DLL_API auto program_uniform_4fv(GLuint program, GLint location, GLsizei count,
286 const GLfloat* value) -> void;
287//----------------------------------------------------------------------------
288DLL_API auto program_uniform_1iv(GLuint program, GLint location, GLsizei count,
289 const GLint* value) -> void;
290//----------------------------------------------------------------------------
291DLL_API auto program_uniform_2iv(GLuint program, GLint location, GLsizei count,
292 const GLint* value) -> void;
293//----------------------------------------------------------------------------
294DLL_API auto program_uniform_3iv(GLuint program, GLint location, GLsizei count,
295 const GLint* value) -> void;
296//----------------------------------------------------------------------------
297DLL_API auto program_uniform_4iv(GLuint program, GLint location, GLsizei count,
298 const GLint* value) -> void;
299//----------------------------------------------------------------------------
300DLL_API auto program_uniform_1uiv(GLuint program, GLint location, GLsizei count,
301 const GLuint* value) -> void;
302//----------------------------------------------------------------------------
303DLL_API auto program_uniform_2uiv(GLuint program, GLint location, GLsizei count,
304 const GLuint* value) -> void;
305//----------------------------------------------------------------------------
306DLL_API auto program_uniform_3uiv(GLuint program, GLint location, GLsizei count,
307 const GLuint* value) -> void;
308//----------------------------------------------------------------------------
309DLL_API auto program_uniform_4uiv(GLuint program, GLint location, GLsizei count,
310 const GLuint* value) -> void;
311//----------------------------------------------------------------------------
312DLL_API auto program_uniform_matrix_2fv(GLuint program, GLint location,
313 GLsizei count, GLboolean transpose,
314 const GLfloat* value) -> void;
315//----------------------------------------------------------------------------
316DLL_API auto program_uniform_matrix_3fv(GLuint program, GLint location,
317 GLsizei count, GLboolean transpose,
318 const GLfloat* value) -> void;
319//----------------------------------------------------------------------------
320DLL_API auto program_uniform_matrix_4fv(GLuint program, GLint location,
321 GLsizei count, GLboolean transpose,
322 const GLfloat* value) -> void;
323//----------------------------------------------------------------------------
324DLL_API auto program_uniform_matrix_2x3fv(GLuint program, GLint location,
325 GLsizei count, GLboolean transpose,
326 const GLfloat* value) -> void;
327//----------------------------------------------------------------------------
328DLL_API auto program_uniform_matrix_3x2fv(GLuint program, GLint location,
329 GLsizei count, GLboolean transpose,
330 const GLfloat* value) -> void;
331//----------------------------------------------------------------------------
332DLL_API auto program_uniform_matrix_2x4fv(GLuint program, GLint location,
333 GLsizei count, GLboolean transpose,
334 const GLfloat* value) -> void;
335//----------------------------------------------------------------------------
336DLL_API auto program_uniform_matrix_4x2fv(GLuint program, GLint location,
337 GLsizei count, GLboolean transpose,
338 const GLfloat* value) -> void;
339//----------------------------------------------------------------------------
340DLL_API auto program_uniform_matrix_3x4fv(GLuint program, GLint location,
341 GLsizei count, GLboolean transpose,
342 const GLfloat* value) -> void;
343//----------------------------------------------------------------------------
344DLL_API auto program_uniform_matrix_4x3fv(GLuint program, GLint location,
345 GLsizei count, GLboolean transpose,
346 const GLfloat* value) -> void;
347//----------------------------------------------------------------------------
348DLL_API auto get_program_iv(GLuint program, GLenum pname, GLint* params)
349 -> void;
350//----------------------------------------------------------------------------
351DLL_API auto get_program_info_log(GLuint program, GLsizei maxLength,
352 GLsizei* length, GLchar* infoLog) -> void;
353//----------------------------------------------------------------------------
354DLL_API auto get_uniform_location(GLuint program, const GLchar* name) -> GLint;
355//============================================================================
356// TEXTURE RELATED
357//============================================================================
358DLL_API auto create_textures(GLenum target, GLsizei n, GLuint* textures)
359 -> void;
360//----------------------------------------------------------------------------
361DLL_API auto delete_textures(GLsizei n, GLuint* textures) -> void;
362//----------------------------------------------------------------------------
363DLL_API auto active_texture(GLenum texture) -> void;
364//----------------------------------------------------------------------------
365DLL_API auto bind_texture(GLenum target, GLuint texture) -> void;
366//----------------------------------------------------------------------------
367DLL_API auto bind_image_texture(GLuint unit, GLuint texture, GLint level,
368 GLboolean layered, GLint layer, GLenum access,
369 GLenum format) -> void;
370//----------------------------------------------------------------------------
371DLL_API auto tex_image_1d(GLenum target, GLint level, GLint internal_format,
372 GLsizei width, GLint border, GLenum format,
373 GLenum type, const GLvoid* data) -> void;
374//----------------------------------------------------------------------------
375DLL_API auto tex_image_2d(GLenum target, GLint level, GLint internal_format,
376 GLsizei width, GLsizei height, GLint border,
377 GLenum format, GLenum type, const GLvoid* data)
378 -> void;
379//----------------------------------------------------------------------------
380DLL_API auto tex_sub_image_2d(GLenum target, GLint level, GLint xoffset,
381 GLint yoffset, GLsizei width, GLsizei height,
382 GLenum format, GLenum type, const GLvoid* pixels)
383 -> void;
384//----------------------------------------------------------------------------
385DLL_API auto texture_sub_image_1d(GLuint texture, GLint level, GLint xoffset,
386 GLsizei width, GLenum format, GLenum type,
387 const void* pixels) -> void;
388//----------------------------------------------------------------------------
389DLL_API auto texture_sub_image_2d(GLuint texture, GLint level, GLint xoffset,
390 GLint yoffset, GLsizei width, GLsizei height,
391 GLenum format, GLenum type,
392 const void* pixels) -> void;
393//----------------------------------------------------------------------------
394DLL_API auto texture_sub_image_3d(GLuint texture, GLint level, GLint xoffset,
395 GLint yoffset, GLint zoffset, GLsizei width,
396 GLsizei height, GLsizei depth, GLenum format,
397 GLenum type, const void* pixels) -> void;
398//----------------------------------------------------------------------------
399DLL_API auto tex_image_3d(GLenum target, GLint level, GLint internal_format,
400 GLsizei width, GLsizei height, GLsizei depth,
401 GLint border, GLenum format, GLenum type,
402 const GLvoid* data) -> void;
403//----------------------------------------------------------------------------
404DLL_API auto copy_image_sub_data(GLuint srcName, GLenum srcTarget,
405 GLint srcLevel, GLint srcX, GLint srcY,
406 GLint srcZ, GLuint dstName, GLenum dstTarget,
407 GLint dstLevel, GLint dstX, GLint dstY,
408 GLint dstZ, GLsizei srcWidth,
409 GLsizei srcHeight, GLsizei srcDepth) -> void;
410//----------------------------------------------------------------------------
411DLL_API auto get_tex_image(GLenum target, GLint level, GLenum format,
412 GLenum type, GLvoid* pixels) -> void;
413//----------------------------------------------------------------------------
414DLL_API auto get_n_tex_image(GLenum target, GLint level, GLenum format,
415 GLenum type, GLsizei bufSize, void* pixels)
416 -> void;
417//----------------------------------------------------------------------------
418DLL_API auto get_texture_image(GLuint texture, GLint level, GLenum format,
419 GLenum type, GLsizei bufSize, void* pixels)
420 -> void;
421//----------------------------------------------------------------------------
422DLL_API auto get_texture_sub_image(GLuint texture, GLint level, GLint xoffset,
423 GLint yoffset, GLint zoffset, GLsizei width,
424 GLsizei height, GLsizei depth, GLenum format,
425 GLenum type, GLsizei bufSize, void* pixels)
426 -> void;
427//----------------------------------------------------------------------------
428DLL_API auto tex_parameter_f(GLenum target, GLenum pname, GLfloat param)
429 -> void;
430//----------------------------------------------------------------------------
431DLL_API auto tex_parameter_i(GLenum target, GLenum pname, GLint param) -> void;
432//----------------------------------------------------------------------------
433DLL_API auto texture_parameter_f(GLuint texture, GLenum pname, GLfloat param)
434 -> void;
435//----------------------------------------------------------------------------
436DLL_API auto texture_parameter_i(GLuint texture, GLenum pname, GLint param)
437 -> void;
438//----------------------------------------------------------------------------
439DLL_API auto tex_parameter_fv(GLenum target, GLenum pname,
440 const GLfloat* params) -> void;
441//----------------------------------------------------------------------------
442DLL_API auto tex_parameter_iv(GLenum target, GLenum pname, const GLint* params)
443 -> void;
444//----------------------------------------------------------------------------
445DLL_API auto tex_parameter_Iiv(GLenum target, GLenum pname, const GLint* params)
446 -> void;
447//----------------------------------------------------------------------------
448DLL_API auto tex_parameter_Iuiv(GLenum target, GLenum pname,
449 const GLuint* params) -> void;
450//----------------------------------------------------------------------------
451DLL_API auto texture_parameter_fv(GLuint texture, GLenum pname,
452 const GLfloat* paramtexture) -> void;
453//----------------------------------------------------------------------------
454DLL_API auto texture_parameter_iv(GLuint texture, GLenum pname,
455 const GLint* param) -> void;
456//----------------------------------------------------------------------------
457DLL_API auto texture_parameter_Iiv(GLuint texture, GLenum pname,
458 const GLint* param) -> void;
459//----------------------------------------------------------------------------
460DLL_API auto texture_parameter_Iuiv(GLuint texture, GLenum pname,
461 const GLuint* param) -> void;
462//----------------------------------------------------------------------------
463DLL_API auto clear_tex_image(GLuint texture, GLint level, GLenum format,
464 GLenum type, const void* data) -> void;
465//----------------------------------------------------------------------------
466DLL_API auto is_texture(GLuint texture) -> GLboolean;
467//----------------------------------------------------------------------------
468DLL_API auto bind_sampler(GLuint unit, GLuint sampler) -> void;
469//============================================================================
470// FRAMEBUFFER RELATED
471//============================================================================
472DLL_API auto create_framebuffers(GLsizei n, GLuint* ids) -> void;
473//----------------------------------------------------------------------------
474DLL_API auto delete_framebuffers(GLsizei n, GLuint* ids) -> void;
475//----------------------------------------------------------------------------
476DLL_API auto bind_framebuffer(GLenum target, GLuint framebuffer) -> void;
477//----------------------------------------------------------------------------
478DLL_API auto framebuffer_texture(GLenum target, GLenum attachment,
479 GLuint texture, GLint level) -> void;
480//----------------------------------------------------------------------------
481DLL_API auto framebuffer_texture_1d(GLenum target, GLenum attachment,
482 GLenum textarget, GLuint texture,
483 GLint level) -> void;
484//----------------------------------------------------------------------------
485DLL_API auto framebuffer_texture_2d(GLenum target, GLenum attachment,
486 GLenum textarget, GLuint texture,
487 GLint level) -> void;
488//----------------------------------------------------------------------------
489DLL_API auto framebuffer_texture_3d(GLenum target, GLenum attachment,
490 GLenum textarget, GLuint texture,
491 GLint level, GLint layer) -> void;
492//----------------------------------------------------------------------------
493DLL_API auto named_framebuffer_texture(GLuint framebuffer, GLenum attachment,
494 GLuint texture, GLint level) -> void;
495//----------------------------------------------------------------------------
497 -> GLenum;
498//----------------------------------------------------------------------------
500 const GLenum* bufs) -> void;
501//----------------------------------------------------------------------------
502DLL_API auto memory_barrier(GLbitfield barriers) -> void;
503//==============================================================================
504} // namespace tatooine::gl
505//==============================================================================
506#endif
507#ifdef Always
508#undef Always
509#endif
buffer base class for each of the OpenGL buffer types
Definition: buffer.h:405
Definition: framebuffer.h:10
Definition: errorcheck.h:12
Definition: shader.h:24
Definition: texture.h:61
Definition: ansiformat.h:6
DLL_API auto program_uniform_matrix_4fv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) -> void
DLL_API auto draw_elements(GLenum mode, GLsizei count, GLenum type, const GLvoid *indices) -> void
DLL_API auto texture_parameter_Iuiv(GLuint texture, GLenum pname, const GLuint *param) -> void
DLL_API auto texture_sub_image_1d(GLuint texture, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const void *pixels) -> void
DLL_API auto program_uniform_2i(GLuint program, GLint location, GLint v0, GLint v1) -> void
DLL_API auto clear_tex_image(GLuint texture, GLint level, GLenum format, GLenum type, const void *data) -> void
DLL_API auto map_buffer_range(GLenum target, GLintptr offset, GLsizeiptr length, GLbitfield access) -> void *
DLL_API auto clear_color(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha) -> void
DLL_API auto create_program() -> GLuint
DLL_API auto program_uniform_matrix_3x4fv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) -> void
DLL_API auto program_uniform_3f(GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2) -> void
DLL_API auto get_texture_image(GLuint texture, GLint level, GLenum format, GLenum type, GLsizei bufSize, void *pixels) -> void
DLL_API auto delete_textures(GLsizei n, GLuint *textures) -> void
DLL_API auto get_booleani_v(GLenum target, GLuint index, GLboolean *data) -> void
DLL_API auto tex_parameter_Iiv(GLenum target, GLenum pname, const GLint *params) -> void
DLL_API auto front_face(GLenum mode) -> void
DLL_API auto blend_func_i(GLuint buf, GLenum sfactor, GLenum dfactor) -> void
DLL_API auto map_named_buffer_range(GLuint buffer, GLintptr offset, GLsizei length, GLbitfield access) -> void *
DLL_API auto get_doublei_v(GLenum target, GLuint index, GLdouble *data) -> void
DLL_API auto get_n_tex_image(GLenum target, GLint level, GLenum format, GLenum type, GLsizei bufSize, void *pixels) -> void
DLL_API auto get_floati_v(GLenum target, GLuint index, GLfloat *data) -> void
DLL_API auto bind_sampler(GLuint unit, GLuint sampler) -> void
DLL_API auto program_uniform_1f(GLuint program, GLint location, GLfloat v0) -> void
DLL_API auto blend_equation_separate(GLenum modeRGB, GLenum modeAlpha) -> void
DLL_API auto tex_parameter_Iuiv(GLenum target, GLenum pname, const GLuint *params) -> void
DLL_API auto vertex_attrib_pointer(GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const GLvoid *pointer) -> void
DLL_API auto scissor(GLint x, GLint y, GLsizei width, GLsizei height) -> void
DLL_API auto disable_vertex_attrib_array(GLuint index) -> void
DLL_API auto create_vertex_arrays(GLsizei n, GLuint *arrays) -> void
DLL_API auto depth_mask(GLboolean flag) -> void
DLL_API auto vertex_attrib_l_pointer(GLuint index, GLint size, GLenum type, GLsizei stride, const GLvoid *pointer) -> void
DLL_API auto copy_named_buffer_sub_data(GLuint readBuffer, GLuint writeBuffer, GLintptr readOffset, GLintptr writeOffset, GLsizei size) -> void
DLL_API auto program_uniform_1ui(GLuint program, GLint location, GLuint v0) -> void
DLL_API auto get_shader_iv(GLuint shader, GLenum pname, GLint *params) -> void
DLL_API auto framebuffer_texture_2d(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level) -> void
DLL_API auto texture_parameter_iv(GLuint texture, GLenum pname, const GLint *param) -> void
DLL_API auto framebuffer_texture_3d(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint layer) -> void
DLL_API auto program_uniform_3iv(GLuint program, GLint location, GLsizei count, const GLint *value) -> void
DLL_API auto get_float_v(GLenum pname, GLfloat *params) -> void
DLL_API auto get_integer64_v(GLenum pname, GLint64 *params) -> void
DLL_API auto delete_shader(GLuint shader) -> void
DLL_API auto bind_vertex_array(GLuint array) -> void
DLL_API auto point_size(GLfloat size) -> void
DLL_API auto tex_parameter_iv(GLenum target, GLenum pname, const GLint *params) -> void
DLL_API auto enable_vertex_attrib_array(GLuint index) -> void
DLL_API auto program_uniform_3fv(GLuint program, GLint location, GLsizei count, const GLfloat *value) -> void
DLL_API auto map_buffer(GLenum target, GLenum access) -> void *
DLL_API auto get_string(GLenum name) -> const GLubyte *
DLL_API auto program_uniform_1fv(GLuint program, GLint location, GLsizei count, const GLfloat *value) -> void
DLL_API auto program_uniform_matrix_3fv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) -> void
DLL_API auto create_framebuffers(GLsizei n, GLuint *ids) -> void
DLL_API auto active_texture(GLenum texture) -> void
DLL_API auto texture_parameter_f(GLuint texture, GLenum pname, GLfloat param) -> void
DLL_API auto create_textures(GLenum target, GLsizei n, GLuint *textures) -> void
DLL_API auto named_buffer_sub_data(GLuint buffer, GLintptr offset, GLsizei size, const void *data) -> void
DLL_API auto check_named_framebuffer_status(GLuint framebuffer, GLenum target) -> GLenum
DLL_API auto named_framebuffer_draw_buffers(GLuint framebuffer, GLsizei n, const GLenum *bufs) -> void
DLL_API auto create_buffers(GLsizei n, GLuint *buffers) -> void
auto to_string(key const k) -> std::string
DLL_API auto program_uniform_2uiv(GLuint program, GLint location, GLsizei count, const GLuint *value) -> void
DLL_API auto is_enabled(GLenum cap) -> GLboolean
DLL_API auto get_boolean_v(GLenum pname, GLboolean *params) -> void
DLL_API auto program_uniform_4ui(GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3) -> void
DLL_API auto blend_func_separate(GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha) -> void
DLL_API auto named_framebuffer_texture(GLuint framebuffer, GLenum attachment, GLuint texture, GLint level) -> void
DLL_API auto get_shader_info_log(GLuint shader, GLsizei maxLength, GLsizei *length, GLchar *infoLog) -> void
DLL_API auto get_uniform_location(GLuint program, const GLchar *name) -> GLint
DLL_API auto memory_barrier(GLbitfield barriers) -> void
DLL_API auto program_uniform_matrix_2fv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) -> void
DLL_API auto draw_arrays(GLenum mode, GLint first, GLsizei count) -> void
DLL_API auto unmap_named_buffer(GLuint buffer) -> GLboolean
DLL_API auto program_uniform_2iv(GLuint program, GLint location, GLsizei count, const GLint *value) -> void
DLL_API auto buffer_data(GLenum target, GLsizeiptr size, const void *data, GLenum usage) -> void
DLL_API auto create_shader(GLenum shaderType) -> GLuint
DLL_API auto tex_sub_image_2d(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *pixels) -> void
DLL_API auto program_uniform_4fv(GLuint program, GLint location, GLsizei count, const GLfloat *value) -> void
DLL_API auto program_uniform_2ui(GLuint program, GLint location, GLuint v0, GLuint v1) -> void
DLL_API auto program_uniform_1i(GLuint program, GLint location, GLint v0) -> void
DLL_API auto bind_image_texture(GLuint unit, GLuint texture, GLint level, GLboolean layered, GLint layer, GLenum access, GLenum format) -> void
DLL_API auto map_named_buffer(GLuint buffer, GLenum access) -> void *
DLL_API auto program_uniform_matrix_2x4fv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) -> void
DLL_API auto program_uniform_matrix_3x2fv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) -> void
DLL_API auto get_integer_v(GLenum pname, GLint *params) -> void
DLL_API auto cull_face(GLenum mode) -> void
DLL_API auto tex_parameter_fv(GLenum target, GLenum pname, const GLfloat *params) -> void
DLL_API auto gl_error_to_string(GLenum err) -> std::string
DLL_API auto framebuffer_texture(GLenum target, GLenum attachment, GLuint texture, GLint level) -> void
DLL_API auto program_uniform_matrix_4x3fv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) -> void
DLL_API auto get_integer64i_v(GLenum target, GLuint index, GLint64 *data) -> void
DLL_API auto use_program(GLuint program) -> void
DLL_API auto program_uniform_2f(GLuint program, GLint location, GLfloat v0, GLfloat v1) -> void
DLL_API auto unmap_buffer(GLenum target) -> GLboolean
DLL_API auto blend_func(GLenum sfactor, GLenum dfactor) -> void
DLL_API auto tex_parameter_f(GLenum target, GLenum pname, GLfloat param) -> void
DLL_API auto vertex_attrib_i_pointer(GLuint index, GLint size, GLenum type, GLsizei stride, const GLvoid *pointer) -> void
DLL_API auto framebuffer_texture_1d(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level) -> void
DLL_API auto bind_buffer_base(GLenum target, GLuint index, GLuint buffer) -> void
DLL_API auto program_uniform_1iv(GLuint program, GLint location, GLsizei count, const GLint *value) -> void
DLL_API auto is_texture(GLuint texture) -> GLboolean
DLL_API auto depth_func(GLenum func) -> void
DLL_API auto program_uniform_matrix_4x2fv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) -> void
DLL_API auto program_uniform_3i(GLuint program, GLint location, GLint v0, GLint v1, GLint v2) -> void
DLL_API auto texture_sub_image_3d(GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *pixels) -> void
DLL_API auto tex_image_3d(GLenum target, GLint level, GLint internal_format, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const GLvoid *data) -> void
DLL_API auto get_double_v(GLenum pname, GLdouble *params) -> void
DLL_API auto get_buffer_parameter_iv(GLenum target, GLenum value, GLint *data) -> void
static bool verbose
Definition: glfunctions.h:14
DLL_API auto delete_buffers(GLsizei n, GLuint *buffers) -> void
DLL_API auto delete_vertex_arrays(GLsizei n, GLuint *arrays) -> void
DLL_API auto polygon_mode(GLenum face, GLenum mode) -> void
DLL_API auto buffer_sub_data(GLenum target, GLintptr offset, GLsizeiptr size, const GLvoid *data) -> void
DLL_API auto program_uniform_4f(GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3) -> void
DLL_API auto link_program(GLuint program) -> void
DLL_API auto program_uniform_4uiv(GLuint program, GLint location, GLsizei count, const GLuint *value) -> void
DLL_API auto texture_sub_image_2d(GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *pixels) -> void
DLL_API auto texture_parameter_Iiv(GLuint texture, GLenum pname, const GLint *param) -> void
DLL_API auto program_uniform_3uiv(GLuint program, GLint location, GLsizei count, const GLuint *value) -> void
DLL_API auto texture_parameter_i(GLuint texture, GLenum pname, GLint param) -> void
DLL_API auto blend_equation_i(GLuint buf, GLenum mode) -> void
DLL_API auto get_texture_sub_image(GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, GLsizei bufSize, void *pixels) -> void
DLL_API auto delete_program(GLuint program) -> void
DLL_API auto program_uniform_3ui(GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2) -> void
DLL_API auto blend_equation(GLenum mode) -> void
static std::ostream & verbose_ostream
Definition: glfunctions.h:15
DLL_API auto copy_image_sub_data(GLuint srcName, GLenum srcTarget, GLint srcLevel, GLint srcX, GLint srcY, GLint srcZ, GLuint dstName, GLenum dstTarget, GLint dstLevel, GLint dstX, GLint dstY, GLint dstZ, GLsizei srcWidth, GLsizei srcHeight, GLsizei srcDepth) -> void
DLL_API auto get_program_iv(GLuint program, GLenum pname, GLint *params) -> void
DLL_API auto program_uniform_4iv(GLuint program, GLint location, GLsizei count, const GLint *value) -> void
DLL_API auto clear_named_buffer_data(GLuint buffer, GLenum internalformat, GLenum format, GLenum type, const void *data) -> void
DLL_API auto line_width(GLfloat width) -> void
DLL_API auto named_buffer_data(GLuint buffer, GLsizeiptr size, const void *data, GLenum usage) -> void
DLL_API auto program_uniform_4i(GLuint program, GLint location, GLint v0, GLint v1, GLint v2, GLint v3) -> void
DLL_API auto tex_parameter_i(GLenum target, GLenum pname, GLint param) -> void
DLL_API auto shader_source(GLuint shader, GLsizei count, const GLchar **string, const GLint *length) -> void
DLL_API auto enable(GLenum cap) -> void
DLL_API auto get_program_info_log(GLuint program, GLsizei maxLength, GLsizei *length, GLchar *infoLog) -> void
DLL_API auto program_uniform_1uiv(GLuint program, GLint location, GLsizei count, const GLuint *value) -> void
DLL_API auto flush() -> void
DLL_API auto delete_framebuffers(GLsizei n, GLuint *ids) -> void
DLL_API auto clear(GLbitfield mask) -> void
DLL_API auto attach_shader(GLuint program, GLuint shader) -> void
DLL_API auto texture_parameter_fv(GLuint texture, GLenum pname, const GLfloat *paramtexture) -> void
DLL_API auto get_shader_info_log_length(GLuint shader) -> GLint
DLL_API auto blend_func_separate_i(GLuint buf, GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha) -> void
DLL_API auto program_uniform_2fv(GLuint program, GLint location, GLsizei count, const GLfloat *value) -> void
DLL_API auto blend_equation_separate_i(GLuint buf, GLenum modeRGB, GLenum modeAlpha) -> void
DLL_API auto bind_texture(GLenum target, GLuint texture) -> void
DLL_API auto get_tex_image(GLenum target, GLint level, GLenum format, GLenum type, GLvoid *pixels) -> void
DLL_API auto tex_image_2d(GLenum target, GLint level, GLint internal_format, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const GLvoid *data) -> void
DLL_API auto viewport(GLint x, GLint y, GLsizei width, GLsizei height) -> void
DLL_API auto get_error() -> GLenum
DLL_API auto dispatch_compute(GLuint num_groups_x, GLuint num_groups_y, GLuint num_groups_z) -> void
DLL_API auto program_uniform_matrix_2x3fv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) -> void
DLL_API auto bind_framebuffer(GLenum target, GLuint framebuffer) -> void
DLL_API auto bind_buffer(GLenum target, GLuint buffer) -> void
DLL_API auto get_integeri_v(GLenum target, GLuint index, GLint *data) -> void
DLL_API auto disable(GLenum cap) -> void
DLL_API auto compile_shader(GLuint shader) -> void
DLL_API auto tex_image_1d(GLenum target, GLint level, GLint internal_format, GLsizei width, GLint border, GLenum format, GLenum type, const GLvoid *data) -> void
auto constexpr index(handle< Child, Int > const h)
Definition: handle.h:119
auto size(vec< ValueType, N > const &v)
Definition: vec.h:148