Diligent Engine  v.2.4.g
GLStubsAndroid.h
Go to the documentation of this file.
1 /*
2  * Copyright 2019-2021 Diligent Graphics LLC
3  * Copyright 2015-2019 Egor Yusov
4  *
5  * Licensed under the Apache License, Version 2.0 (the "License");
6  * you may not use this file except in compliance with the License.
7  * You may obtain a copy of the License at
8  *
9  * http://www.apache.org/licenses/LICENSE-2.0
10  *
11  * Unless required by applicable law or agreed to in writing, software
12  * distributed under the License is distributed on an "AS IS" BASIS,
13  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14  * See the License for the specific language governing permissions and
15  * limitations under the License.
16  *
17  * In no event and under no legal theory, whether in tort (including negligence),
18  * contract, or otherwise, unless required by applicable law (such as deliberate
19  * and grossly negligent acts) or agreed to in writing, shall any Contributor be
20  * liable for any damages, including any direct, indirect, special, incidental,
21  * or consequential damages of any character arising as a result of this License or
22  * out of the use or inability to use the software (including but not limited to damages
23  * for loss of goodwill, work stoppage, computer failure or malfunction, or any and
24  * all other commercial damages or losses), even if such Contributor has been advised
25  * of the possibility of such damages.
26  */
27 
28 #pragma once
29 
30 #include "Errors.hpp"
31 
32 // clang-format off
33 
34 #ifndef GLAPIENTRY
35 # define GLAPIENTRY GL_APIENTRY
36 #endif
37 
38 // Define unsupported formats for OpenGL ES
39 #ifndef GL_RGBA16
40 # define GL_RGBA16 0x805B
41 #endif
42 
43 #ifndef GL_RGBA16_SNORM
44 # define GL_RGBA16_SNORM 0x8F9B
45 #endif
46 
47 #ifndef GL_RG16
48 # define GL_RG16 0x822C
49 #endif
50 
51 #ifndef GL_RG16_SNORM
52 # define GL_RG16_SNORM 0x8F99
53 #endif
54 
55 #ifndef GL_R16
56 # define GL_R16 0x822A
57 #endif
58 
59 #ifndef GL_R16_SNORM
60 # define GL_R16_SNORM 0x8F98
61 #endif
62 
63 #ifndef GL_COMPRESSED_RGB_S3TC_DXT1_EXT
64 # define GL_COMPRESSED_RGB_S3TC_DXT1_EXT 0x83F0
65 #endif
66 
67 #ifndef GL_COMPRESSED_SRGB_S3TC_DXT1_EXT
68 # define GL_COMPRESSED_SRGB_S3TC_DXT1_EXT 0x8C4C
69 #endif
70 
71 #ifndef GL_COMPRESSED_RGBA_S3TC_DXT3_EXT
72 # define GL_COMPRESSED_RGBA_S3TC_DXT3_EXT 0x83F2
73 #endif
74 
75 #ifndef GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT
76 # define GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT 0x8C4E
77 #endif
78 
79 #ifndef GL_COMPRESSED_RGBA_S3TC_DXT5_EXT
80 # define GL_COMPRESSED_RGBA_S3TC_DXT5_EXT 0x83F3
81 #endif
82 
83 #ifndef GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT
84 # define GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT 0x8C4F
85 #endif
86 
87 #ifndef GL_COMPRESSED_RED_RGTC1
88 # define GL_COMPRESSED_RED_RGTC1 0x8DBB
89 #endif
90 
91 #ifndef GL_COMPRESSED_SIGNED_RED_RGTC1
92 # define GL_COMPRESSED_SIGNED_RED_RGTC1 0x8DBC
93 #endif
94 
95 #ifndef GL_COMPRESSED_RG_RGTC2
96 # define GL_COMPRESSED_RG_RGTC2 0x8DBD
97 #endif
98 
99 #ifndef GL_COMPRESSED_SIGNED_RG_RGTC2
100 # define GL_COMPRESSED_SIGNED_RG_RGTC2 0x8DBE
101 #endif
102 
103 #ifndef GL_COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT
104 # define GL_COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT 0x8E8F
105 #endif
106 
107 #ifndef GL_COMPRESSED_RGB_BPTC_SIGNED_FLOAT
108 # define GL_COMPRESSED_RGB_BPTC_SIGNED_FLOAT 0x8E8E
109 #endif
110 
111 #ifndef GL_COMPRESSED_RGBA_BPTC_UNORM
112 # define GL_COMPRESSED_RGBA_BPTC_UNORM 0x8E8C
113 #endif
114 
115 #ifndef GL_COMPRESSED_SRGB_ALPHA_BPTC_UNORM
116 # define GL_COMPRESSED_SRGB_ALPHA_BPTC_UNORM 0x8E8D
117 #endif
118 
119 #ifndef GL_UNSIGNED_SHORT_5_6_5_REV
120 # define GL_UNSIGNED_SHORT_5_6_5_REV 0x8364
121 #endif
122 
123 #ifndef GL_UNSIGNED_INT_10_10_10_2
124 # define GL_UNSIGNED_INT_10_10_10_2 0x8036
125 #endif
126 
127 #ifndef GL_UNSIGNED_SHORT_5_6_5_REV
128 # define GL_UNSIGNED_SHORT_5_6_5_REV 0x8364
129 #endif
130 
131 #ifndef GL_UNSIGNED_SHORT_1_5_5_5_REV
132 # define GL_UNSIGNED_SHORT_1_5_5_5_REV 0x8366
133 #endif
134 
135 // Define unsupported shaders
136 #ifndef GL_GEOMETRY_SHADER
137 # define GL_GEOMETRY_SHADER 0x8DD9
138 #endif
139 
140 #ifndef GL_TESS_CONTROL_SHADER
141 # define GL_TESS_CONTROL_SHADER 0x8E88
142 #endif
143 
144 #ifndef GL_TESS_EVALUATION_SHADER
145 # define GL_TESS_EVALUATION_SHADER 0x8E87
146 #endif
147 
148 // Define unsupported texture filtering modes
149 #ifndef GL_CLAMP_TO_BORDER
150 # define GL_CLAMP_TO_BORDER 0
151 #endif
152 
153 #ifndef GL_MIRROR_CLAMP_TO_EDGE
154 # define GL_MIRROR_CLAMP_TO_EDGE 0
155 #endif
156 
157 // Define unsupported bind points
158 #ifndef GL_ARB_draw_indirect
159 # define GL_ARB_draw_indirect 1
160 #endif
161 
162 #ifndef GL_DRAW_INDIRECT_BUFFER
163 # define GL_DRAW_INDIRECT_BUFFER 0x8F3F
164 #endif
165 
166 #ifndef GL_DISPATCH_INDIRECT_BUFFER
167 # define GL_DISPATCH_INDIRECT_BUFFER 0x90EE
168 #endif
169 
170 #ifndef GL_TEXTURE_1D_ARRAY
171 # define GL_TEXTURE_1D_ARRAY 0x8C18
172 #endif
173 
174 #ifndef GL_TEXTURE_BINDING_1D_ARRAY
175 # define GL_TEXTURE_BINDING_1D_ARRAY 0x8C1C
176 #endif
177 
178 #ifndef GL_TEXTURE_1D
179 # define GL_TEXTURE_1D 0x0DE0
180 #endif
181 
182 #ifndef GL_TEXTURE_BINDING_1D
183 # define GL_TEXTURE_BINDING_1D 0x8068
184 #endif
185 
186 #ifndef GL_ARB_texture_storage_multisample
187 # define GL_ARB_texture_storage_multisample 1
188 #endif
189 
190 #ifndef GL_TEXTURE_2D_MULTISAMPLE
191 # define GL_TEXTURE_2D_MULTISAMPLE 0x9100
192 #endif
193 
194 #ifndef GL_TEXTURE_BINDING_2D_MULTISAMPLE
195 # define GL_TEXTURE_BINDING_2D_MULTISAMPLE 0x9104
196 #endif
197 
198 #ifndef GL_TEXTURE_2D_MULTISAMPLE_ARRAY
199 # define GL_TEXTURE_2D_MULTISAMPLE_ARRAY 0x9102
200 #endif
201 
202 #ifndef GL_TEXTURE_BINDING_2D_MULTISAMPLE_ARRAY
203 # define GL_TEXTURE_BINDING_2D_MULTISAMPLE_ARRAY 0x9105
204 #endif
205 
206 #ifndef GL_TEXTURE_CUBE_MAP_ARRAY
207 # define GL_TEXTURE_CUBE_MAP_ARRAY 0x9009
208 #endif
209 
210 #ifndef GL_TEXTURE_BINDING_CUBE_MAP_ARRAY
211 # define GL_TEXTURE_BINDING_CUBE_MAP_ARRAY 0x900A
212 #endif
213 
214 #ifndef GL_TEXTURE_BUFFER
215 # define GL_TEXTURE_BUFFER 0x8C2A
216 #endif
217 
218 // Define unsupported pipeline bind flags
219 #ifndef GL_VERTEX_SHADER_BIT
220 # define GL_VERTEX_SHADER_BIT 0x00000001
221 #endif
222 
223 #ifndef GL_FRAGMENT_SHADER_BIT
224 # define GL_FRAGMENT_SHADER_BIT 0x00000002
225 #endif
226 
227 #ifndef GL_GEOMETRY_SHADER_BIT
228 # define GL_GEOMETRY_SHADER_BIT 0x00000004
229 #endif
230 
231 #ifndef GL_TESS_CONTROL_SHADER_BIT
232 # define GL_TESS_CONTROL_SHADER_BIT 0x00000008
233 #endif
234 
235 #ifndef GL_TESS_EVALUATION_SHADER_BIT
236 # define GL_TESS_EVALUATION_SHADER_BIT 0x00000010
237 #endif
238 
239 #ifndef GL_COMPUTE_SHADER_BIT
240 # define GL_COMPUTE_SHADER_BIT 0x00000020
241 #endif
242 
243 // Define unsupported sampler attributes
244 #ifndef GL_TEXTURE_LOD_BIAS
245 # define GL_TEXTURE_LOD_BIAS 0
246 #endif
247 
248 #ifndef GL_TEXTURE_MAX_ANISOTROPY_EXT
249 # define GL_TEXTURE_MAX_ANISOTROPY_EXT 0
250 #endif
251 
252 #ifndef GL_TEXTURE_BORDER_COLOR
253 # define GL_TEXTURE_BORDER_COLOR 0
254 #endif
255 
256 // Other unsupported attributes
257 #ifndef GL_PROGRAM_SEPARABLE
258 # define GL_PROGRAM_SEPARABLE 0x8258
259 #endif
260 
261 // Define unsupported uniform data types
262 #ifndef GL_SAMPLER_1D
263  #define GL_SAMPLER_1D 0x8B5D
264 #endif
265 
266 #ifndef GL_SAMPLER_1D_SHADOW
267  #define GL_SAMPLER_1D_SHADOW 0x8B61
268 #endif
269 
270 #ifndef GL_SAMPLER_1D_ARRAY
271  #define GL_SAMPLER_1D_ARRAY 0x8DC0
272 #endif
273 
274 #ifndef GL_SAMPLER_1D_ARRAY_SHADOW
275  #define GL_SAMPLER_1D_ARRAY_SHADOW 0x8DC3
276 #endif
277 
278 #ifndef GL_INT_SAMPLER_1D
279  #define GL_INT_SAMPLER_1D 0x8DC9
280 #endif
281 
282 #ifndef GL_INT_SAMPLER_1D_ARRAY
283  #define GL_INT_SAMPLER_1D_ARRAY 0x8DCE
284 #endif
285 
286 #ifndef GL_UNSIGNED_INT_SAMPLER_1D
287  #define GL_UNSIGNED_INT_SAMPLER_1D 0x8DD1
288 #endif
289 
290 #ifndef GL_UNSIGNED_INT_SAMPLER_1D_ARRAY
291  #define GL_UNSIGNED_INT_SAMPLER_1D_ARRAY 0x8DD6
292 #endif
293 
294 #ifndef GL_SAMPLER_CUBE_MAP_ARRAY
295  #define GL_SAMPLER_CUBE_MAP_ARRAY 0x900C
296 #endif
297 
298 #ifndef GL_SAMPLER_CUBE_MAP_ARRAY_SHADOW
299  #define GL_SAMPLER_CUBE_MAP_ARRAY_SHADOW 0x900D
300 #endif
301 
302 #ifndef GL_INT_SAMPLER_CUBE_MAP_ARRAY
303  #define GL_INT_SAMPLER_CUBE_MAP_ARRAY 0x900E
304 #endif
305 
306 #ifndef GL_UNSIGNED_INT_SAMPLER_CUBE_MAP_ARRAY
307  #define GL_UNSIGNED_INT_SAMPLER_CUBE_MAP_ARRAY 0x900F
308 #endif
309 
310 #ifndef GL_SAMPLER_BUFFER
311  #define GL_SAMPLER_BUFFER 0x8DC2
312 #endif
313 
314 #ifndef GL_INT_SAMPLER_BUFFER
315  #define GL_INT_SAMPLER_BUFFER 0x8DD0
316 #endif
317 
318 #ifndef GL_UNSIGNED_INT_SAMPLER_BUFFER
319  #define GL_UNSIGNED_INT_SAMPLER_BUFFER 0x8DD8
320 #endif
321 
322 #ifndef GL_SAMPLER_2D_MULTISAMPLE
323  #define GL_SAMPLER_2D_MULTISAMPLE 0x9108
324 #endif
325 
326 #ifndef GL_INT_SAMPLER_2D_MULTISAMPLE
327  #define GL_INT_SAMPLER_2D_MULTISAMPLE 0x9109
328 #endif
329 
330 #ifndef GL_UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE
331  #define GL_UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE 0x910A
332 #endif
333 
334 #ifndef GL_SAMPLER_2D_MULTISAMPLE_ARRAY
335  #define GL_SAMPLER_2D_MULTISAMPLE_ARRAY 0x910B
336 #endif
337 
338 #ifndef GL_INT_SAMPLER_2D_MULTISAMPLE_ARRAY
339  #define GL_INT_SAMPLER_2D_MULTISAMPLE_ARRAY 0x910C
340 #endif
341 
342 #ifndef GL_UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE_ARRAY
343  #define GL_UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE_ARRAY 0x910D
344 #endif
345 
346 #ifndef GL_SAMPLER_EXTERNAL_OES
347  #define GL_SAMPLER_EXTERNAL_OES 0x8D66
348 #endif
349 
350 
351 #ifndef GL_IMAGE_1D
352  #define GL_IMAGE_1D 0x904C
353 #endif
354 
355 #ifndef GL_IMAGE_2D
356  #define GL_IMAGE_2D 0x904D
357 #endif
358 
359 #ifndef GL_IMAGE_3D
360  #define GL_IMAGE_3D 0x904E
361 #endif
362 
363 #ifndef GL_IMAGE_2D_RECT
364  #define GL_IMAGE_2D_RECT 0x904F
365 #endif
366 
367 #ifndef GL_IMAGE_CUBE
368  #define GL_IMAGE_CUBE 0x9050
369 #endif
370 
371 #ifndef GL_IMAGE_BUFFER
372  #define GL_IMAGE_BUFFER 0x9051
373 #endif
374 
375 #ifndef GL_IMAGE_1D_ARRAY
376  #define GL_IMAGE_1D_ARRAY 0x9052
377 #endif
378 
379 #ifndef GL_IMAGE_2D_ARRAY
380  #define GL_IMAGE_2D_ARRAY 0x9053
381 #endif
382 
383 #ifndef GL_IMAGE_CUBE_MAP_ARRAY
384  #define GL_IMAGE_CUBE_MAP_ARRAY 0x9054
385 #endif
386 
387 #ifndef GL_IMAGE_2D_MULTISAMPLE
388  #define GL_IMAGE_2D_MULTISAMPLE 0x9055
389 #endif
390 
391 #ifndef GL_IMAGE_2D_MULTISAMPLE_ARRAY
392  #define GL_IMAGE_2D_MULTISAMPLE_ARRAY 0x9056
393 #endif
394 
395 #ifndef GL_INT_IMAGE_1D
396  #define GL_INT_IMAGE_1D 0x9057
397 #endif
398 
399 #ifndef GL_INT_IMAGE_2D
400  #define GL_INT_IMAGE_2D 0x9058
401 #endif
402 
403 #ifndef GL_INT_IMAGE_3D
404  #define GL_INT_IMAGE_3D 0x9059
405 #endif
406 
407 #ifndef GL_INT_IMAGE_2D_RECT
408  #define GL_INT_IMAGE_2D_RECT 0x905A
409 #endif
410 
411 #ifndef GL_INT_IMAGE_CUBE
412  #define GL_INT_IMAGE_CUBE 0x905B
413 #endif
414 
415 #ifndef GL_INT_IMAGE_BUFFER
416  #define GL_INT_IMAGE_BUFFER 0x905C
417 #endif
418 
419 #ifndef GL_INT_IMAGE_1D_ARRAY
420  #define GL_INT_IMAGE_1D_ARRAY 0x905D
421 #endif
422 
423 #ifndef GL_INT_IMAGE_2D_ARRAY
424  #define GL_INT_IMAGE_2D_ARRAY 0x905E
425 #endif
426 
427 #ifndef GL_INT_IMAGE_CUBE_MAP_ARRAY
428  #define GL_INT_IMAGE_CUBE_MAP_ARRAY 0x905F
429 #endif
430 
431 #ifndef GL_INT_IMAGE_2D_MULTISAMPLE
432  #define GL_INT_IMAGE_2D_MULTISAMPLE 0x9060
433 #endif
434 
435 #ifndef GL_INT_IMAGE_2D_MULTISAMPLE_ARRAY
436  #define GL_INT_IMAGE_2D_MULTISAMPLE_ARRAY 0x9061
437 #endif
438 
439 #ifndef GL_UNSIGNED_INT_IMAGE_1D
440  #define GL_UNSIGNED_INT_IMAGE_1D 0x9062
441 #endif
442 
443 #ifndef GL_UNSIGNED_INT_IMAGE_2D
444  #define GL_UNSIGNED_INT_IMAGE_2D 0x9063
445 #endif
446 
447 #ifndef GL_UNSIGNED_INT_IMAGE_3D
448  #define GL_UNSIGNED_INT_IMAGE_3D 0x9064
449 #endif
450 
451 #ifndef GL_UNSIGNED_INT_IMAGE_2D_RECT
452  #define GL_UNSIGNED_INT_IMAGE_2D_RECT 0x9065
453 #endif
454 
455 #ifndef GL_UNSIGNED_INT_IMAGE_CUBE
456  #define GL_UNSIGNED_INT_IMAGE_CUBE 0x9066
457 #endif
458 
459 #ifndef GL_UNSIGNED_INT_IMAGE_BUFFER
460  #define GL_UNSIGNED_INT_IMAGE_BUFFER 0x9067
461 #endif
462 
463 #ifndef GL_UNSIGNED_INT_IMAGE_1D_ARRAY
464  #define GL_UNSIGNED_INT_IMAGE_1D_ARRAY 0x9068
465 #endif
466 
467 #ifndef GL_UNSIGNED_INT_IMAGE_2D_ARRAY
468  #define GL_UNSIGNED_INT_IMAGE_2D_ARRAY 0x9069
469 #endif
470 
471 #ifndef GL_UNSIGNED_INT_IMAGE_CUBE_MAP_ARRAY
472  #define GL_UNSIGNED_INT_IMAGE_CUBE_MAP_ARRAY 0x906A
473 #endif
474 
475 #ifndef GL_UNSIGNED_INT_IMAGE_2D_MULTISAMPLE
476  #define GL_UNSIGNED_INT_IMAGE_2D_MULTISAMPLE 0x906B
477 #endif
478 
479 #ifndef GL_UNSIGNED_INT_IMAGE_2D_MULTISAMPLE_ARRAY
480  #define GL_UNSIGNED_INT_IMAGE_2D_MULTISAMPLE_ARRAY 0x906C
481 #endif
482 
483 
484 // Compute shader stubs
485 #ifndef GL_ARB_compute_shader
486 # define GL_ARB_compute_shader 1
487 #endif
488 
489 #ifndef GL_READ_ONLY
490 # define GL_READ_ONLY 0x88B8
491 #endif
492 
493 #ifndef GL_WRITE_ONLY
494 # define GL_WRITE_ONLY 0x88B9
495 #endif
496 
497 #ifndef GL_READ_WRITE
498 # define GL_READ_WRITE 0x88BA
499 #endif
500 
501 #ifndef GL_COMPUTE_SHADER
502 # define GL_COMPUTE_SHADER 0x91B9
503 #endif
504 
505 #ifndef GL_ES_VERSION_3_1
506 #define LOAD_GL_BIND_IMAGE_TEXTURE
507 typedef void (GL_APIENTRY* PFNGLBINDIMAGETEXTUREPROC) (GLuint unit, GLuint texture, GLint level, GLboolean layered, GLint layer, GLenum access, GLenum format);
509 
510 #define LOAD_GL_DISPATCH_COMPUTE
511 typedef void (GL_APIENTRY* PFNGLDISPATCHCOMPUTEPROC) (GLuint num_groups_x, GLuint num_groups_y, GLuint num_groups_z);
513 
514 #define LOAD_GL_MEMORY_BARRIER
515 typedef void (GL_APIENTRY* PFNGLMEMORYBARRIERPROC) (GLbitfield barriers);
517 #endif // GL_ES_VERSION_3_1
518 
519 #ifndef GL_ARB_shader_image_load_store
520 # define GL_ARB_shader_image_load_store 1
521 #endif
522 
523 #ifndef GL_MAX_IMAGE_UNITS
524 # define GL_MAX_IMAGE_UNITS 0x8F38
525 #endif
526 
527 #ifndef GL_ARB_shader_storage_buffer_object
528 # define GL_ARB_shader_storage_buffer_object 1
529 #endif
530 
531 #ifndef GL_VERTEX_ATTRIB_ARRAY_BARRIER_BIT
532 # define GL_VERTEX_ATTRIB_ARRAY_BARRIER_BIT 0x00000001
533 #endif
534 #ifndef GL_ELEMENT_ARRAY_BARRIER_BIT
535 # define GL_ELEMENT_ARRAY_BARRIER_BIT 0x00000002
536 #endif
537 #ifndef GL_UNIFORM_BARRIER_BIT
538 # define GL_UNIFORM_BARRIER_BIT 0x00000004
539 #endif
540 #ifndef GL_TEXTURE_FETCH_BARRIER_BIT
541 # define GL_TEXTURE_FETCH_BARRIER_BIT 0x00000008
542 #endif
543 #ifndef GL_SHADER_IMAGE_ACCESS_BARRIER_BIT
544 # define GL_SHADER_IMAGE_ACCESS_BARRIER_BIT 0x00000020
545 #endif
546 #ifndef GL_COMMAND_BARRIER_BIT
547 # define GL_COMMAND_BARRIER_BIT 0x00000040
548 #endif
549 #ifndef GL_PIXEL_BUFFER_BARRIER_BIT
550 # define GL_PIXEL_BUFFER_BARRIER_BIT 0x00000080
551 #endif
552 #ifndef GL_TEXTURE_UPDATE_BARRIER_BIT
553 # define GL_TEXTURE_UPDATE_BARRIER_BIT 0x00000100
554 #endif
555 #ifndef GL_BUFFER_UPDATE_BARRIER_BIT
556 # define GL_BUFFER_UPDATE_BARRIER_BIT 0x00000200
557 #endif
558 #ifndef GL_FRAMEBUFFER_BARRIER_BIT
559 # define GL_FRAMEBUFFER_BARRIER_BIT 0x00000400
560 #endif
561 #ifndef GL_TRANSFORM_FEEDBACK_BARRIER_BIT
562 # define GL_TRANSFORM_FEEDBACK_BARRIER_BIT 0x00000800
563 #endif
564 #ifndef GL_ATOMIC_COUNTER_BARRIER_BIT
565 # define GL_ATOMIC_COUNTER_BARRIER_BIT 0x00001000
566 #endif
567 #ifndef GL_SHADER_STORAGE_BARRIER_BIT
568 # define GL_SHADER_STORAGE_BARRIER_BIT 0x00002000
569 #endif
570 #ifndef GL_CLIENT_MAPPED_BUFFER_BARRIER_BIT
571 # define GL_CLIENT_MAPPED_BUFFER_BARRIER_BIT 0x00004000
572 #endif
573 #ifndef GL_QUERY_BUFFER_BARRIER_BIT
574 # define GL_QUERY_BUFFER_BARRIER_BIT 0x00008000
575 #endif
576 #ifndef GL_ALL_BARRIER_BITS
577 # define GL_ALL_BARRIER_BITS 0xFFFFFFFF
578 #endif
579 
580 
581 //--------------------------- Texture queries -----------------------------
582 #ifndef GL_TEXTURE_WIDTH
583 # define GL_TEXTURE_WIDTH 0x1000
584 #endif
585 
586 #ifndef GL_TEXTURE_HEIGHT
587 # define GL_TEXTURE_HEIGHT 0x1001
588 #endif
589 
590 #ifndef GL_TEXTURE_DEPTH
591 # define GL_TEXTURE_DEPTH 0x8071
592 #endif
593 
594 #ifndef GL_TEXTURE_INTERNAL_FORMAT
595 # define GL_TEXTURE_INTERNAL_FORMAT 0x1003
596 #endif
597 
598 
599 //------------------------ Program interface query ------------------------
600 #ifndef GL_UNIFORM
601 # define GL_UNIFORM 0x92E1
602 #endif
603 
604 #ifndef GL_UNIFORM_BLOCK
605 # define GL_UNIFORM_BLOCK 0x92E2
606 #endif
607 
608 #ifndef GL_PROGRAM_INPUT
609 # define GL_PROGRAM_INPUT 0x92E3
610 #endif
611 
612 #ifndef GL_PROGRAM_OUTPUT
613 # define GL_PROGRAM_OUTPUT 0x92E4
614 #endif
615 
616 #ifndef GL_BUFFER_VARIABLE
617 # define GL_BUFFER_VARIABLE 0x92E5
618 #endif
619 
620 #ifndef GL_ARB_program_interface_query
621 # define GL_ARB_program_interface_query 1
622 #endif
623 
624 #ifndef GL_SHADER_STORAGE_BLOCK
625 # define GL_SHADER_STORAGE_BLOCK 0x92E6
626 #endif
627 
628 #ifndef GL_IS_PER_PATCH
629 # define GL_IS_PER_PATCH 0x92E7
630 #endif
631 
632 #ifndef GL_VERTEX_SUBROUTINE
633 # define GL_VERTEX_SUBROUTINE 0x92E8
634 #endif
635 
636 #ifndef GL_TESS_CONTROL_SUBROUTINE
637 # define GL_TESS_CONTROL_SUBROUTINE 0x92E9
638 #endif
639 
640 #ifndef GL_TESS_EVALUATION_SUBROUTINE
641 # define GL_TESS_EVALUATION_SUBROUTINE 0x92EA
642 #endif
643 
644 #ifndef GL_GEOMETRY_SUBROUTINE
645 # define GL_GEOMETRY_SUBROUTINE 0x92EB
646 #endif
647 
648 #ifndef GL_FRAGMENT_SUBROUTINE
649 # define GL_FRAGMENT_SUBROUTINE 0x92EC
650 #endif
651 
652 #ifndef GL_COMPUTE_SUBROUTINE
653 # define GL_COMPUTE_SUBROUTINE 0x92ED
654 #endif
655 
656 #ifndef GL_VERTEX_SUBROUTINE_UNIFORM
657 # define GL_VERTEX_SUBROUTINE_UNIFORM 0x92EE
658 #endif
659 
660 #ifndef GL_TESS_CONTROL_SUBROUTINE_UNIFORM
661 # define GL_TESS_CONTROL_SUBROUTINE_UNIFORM 0x92EF
662 #endif
663 
664 #ifndef GL_TESS_EVALUATION_SUBROUTINE_UNIFORM
665 # define GL_TESS_EVALUATION_SUBROUTINE_UNIFORM 0x92F0
666 #endif
667 
668 #ifndef GL_GEOMETRY_SUBROUTINE_UNIFORM
669 # define GL_GEOMETRY_SUBROUTINE_UNIFORM 0x92F1
670 #endif
671 
672 #ifndef GL_FRAGMENT_SUBROUTINE_UNIFORM
673 # define GL_FRAGMENT_SUBROUTINE_UNIFORM 0x92F2
674 #endif
675 
676 #ifndef GL_COMPUTE_SUBROUTINE_UNIFORM
677 # define GL_COMPUTE_SUBROUTINE_UNIFORM 0x92F3
678 #endif
679 
680 #ifndef GL_TRANSFORM_FEEDBACK_VARYING
681 # define GL_TRANSFORM_FEEDBACK_VARYING 0x92F4
682 #endif
683 
684 #ifndef GL_ACTIVE_RESOURCES
685 # define GL_ACTIVE_RESOURCES 0x92F5
686 #endif
687 
688 #ifndef GL_MAX_NAME_LENGTH
689 # define GL_MAX_NAME_LENGTH 0x92F6
690 #endif
691 
692 #ifndef GL_MAX_NUM_ACTIVE_VARIABLES
693 # define GL_MAX_NUM_ACTIVE_VARIABLES 0x92F7
694 #endif
695 
696 #ifndef GL_MAX_NUM_COMPATIBLE_SUBROUTINES
697 # define GL_MAX_NUM_COMPATIBLE_SUBROUTINES 0x92F8
698 #endif
699 
700 #ifndef GL_NAME_LENGTH
701 # define GL_NAME_LENGTH 0x92F9
702 #endif
703 
704 #ifndef GL_TYPE
705 # define GL_TYPE 0x92FA
706 #endif
707 
708 #ifndef GL_ARRAY_SIZE
709 # define GL_ARRAY_SIZE 0x92FB
710 #endif
711 
712 #ifndef GL_OFFSET
713 # define GL_OFFSET 0x92FC
714 #endif
715 
716 #ifndef GL_BLOCK_INDEX
717 # define GL_BLOCK_INDEX 0x92FD
718 #endif
719 
720 #ifndef GL_ARRAY_STRIDE
721 # define GL_ARRAY_STRIDE 0x92FE
722 #endif
723 
724 #ifndef GL_MATRIX_STRIDE
725 # define GL_MATRIX_STRIDE 0x92FF
726 #endif
727 
728 #ifndef GL_IS_ROW_MAJOR
729 # define GL_IS_ROW_MAJOR 0x9300
730 #endif
731 
732 #ifndef GL_ATOMIC_COUNTER_BUFFER_INDEX
733 # define GL_ATOMIC_COUNTER_BUFFER_INDEX 0x9301
734 #endif
735 
736 #ifndef GL_BUFFER_BINDING
737 # define GL_BUFFER_BINDING 0x9302
738 #endif
739 
740 #ifndef GL_BUFFER_DATA_SIZE
741 # define GL_BUFFER_DATA_SIZE 0x9303
742 #endif
743 
744 #ifndef GL_NUM_ACTIVE_VARIABLES
745 # define GL_NUM_ACTIVE_VARIABLES 0x9304
746 #endif
747 
748 #ifndef GL_ACTIVE_VARIABLES
749 # define GL_ACTIVE_VARIABLES 0x9305
750 #endif
751 
752 #ifndef GL_REFERENCED_BY_VERTEX_SHADER
753 # define GL_REFERENCED_BY_VERTEX_SHADER 0x9306
754 #endif
755 
756 #ifndef GL_REFERENCED_BY_TESS_CONTROL_SHADER
757 # define GL_REFERENCED_BY_TESS_CONTROL_SHADER 0x9307
758 #endif
759 
760 #ifndef GL_REFERENCED_BY_TESS_EVALUATION_SHADER
761 # define GL_REFERENCED_BY_TESS_EVALUATION_SHADER 0x9308
762 #endif
763 
764 #ifndef GL_REFERENCED_BY_GEOMETRY_SHADER
765 # define GL_REFERENCED_BY_GEOMETRY_SHADER 0x9309
766 #endif
767 
768 #ifndef GL_REFERENCED_BY_FRAGMENT_SHADER
769 # define GL_REFERENCED_BY_FRAGMENT_SHADER 0x930A
770 #endif
771 
772 #ifndef GL_REFERENCED_BY_COMPUTE_SHADER
773 # define GL_REFERENCED_BY_COMPUTE_SHADER 0x930B
774 #endif
775 
776 #ifndef GL_TOP_LEVEL_ARRAY_SIZE
777 # define GL_TOP_LEVEL_ARRAY_SIZE 0x930C
778 #endif
779 
780 #ifndef GL_TOP_LEVEL_ARRAY_STRIDE
781 # define GL_TOP_LEVEL_ARRAY_STRIDE 0x930D
782 #endif
783 
784 #ifndef GL_LOCATION
785 # define GL_LOCATION 0x930E
786 #endif
787 
788 #ifndef GL_LOCATION_INDEX
789 # define GL_LOCATION_INDEX 0x930F
790 #endif
791 
792 
793 
794 // --------------------- Shader storage buffer -----------------------
795 
796 #ifndef GL_MAX_COMBINED_SHADER_OUTPUT_RESOURCES
797 # define GL_MAX_COMBINED_SHADER_OUTPUT_RESOURCES 0x8F39
798 #endif
799 
800 #ifndef GL_SHADER_STORAGE_BUFFER
801 # define GL_SHADER_STORAGE_BUFFER 0x90D2
802 #endif
803 
804 #ifndef GL_SHADER_STORAGE_BUFFER_BINDING
805 # define GL_SHADER_STORAGE_BUFFER_BINDING 0x90D3
806 #endif
807 
808 #ifndef GL_SHADER_STORAGE_BUFFER_START
809 # define GL_SHADER_STORAGE_BUFFER_START 0x90D4
810 #endif
811 
812 #ifndef GL_SHADER_STORAGE_BUFFER_SIZE
813 # define GL_SHADER_STORAGE_BUFFER_SIZE 0x90D5
814 #endif
815 
816 #ifndef GL_MAX_VERTEX_SHADER_STORAGE_BLOCKS
817 # define GL_MAX_VERTEX_SHADER_STORAGE_BLOCKS 0x90D6
818 #endif
819 
820 #ifndef GL_MAX_GEOMETRY_SHADER_STORAGE_BLOCKS
821 # define GL_MAX_GEOMETRY_SHADER_STORAGE_BLOCKS 0x90D7
822 #endif
823 
824 #ifndef GL_MAX_TESS_CONTROL_SHADER_STORAGE_BLOCKS
825 # define GL_MAX_TESS_CONTROL_SHADER_STORAGE_BLOCKS 0x90D8
826 #endif
827 
828 #ifndef GL_MAX_TESS_EVALUATION_SHADER_STORAGE_BLOCKS
829 # define GL_MAX_TESS_EVALUATION_SHADER_STORAGE_BLOCKS 0x90D9
830 #endif
831 
832 #ifndef GL_MAX_FRAGMENT_SHADER_STORAGE_BLOCKS
833 # define GL_MAX_FRAGMENT_SHADER_STORAGE_BLOCKS 0x90DA
834 #endif
835 
836 #ifndef GL_MAX_COMPUTE_SHADER_STORAGE_BLOCKS
837 # define GL_MAX_COMPUTE_SHADER_STORAGE_BLOCKS 0x90DB
838 #endif
839 
840 #ifndef GL_MAX_COMBINED_SHADER_STORAGE_BLOCKS
841 # define GL_MAX_COMBINED_SHADER_STORAGE_BLOCKS 0x90DC
842 #endif
843 
844 #ifndef GL_MAX_SHADER_STORAGE_BUFFER_BINDINGS
845 # define GL_MAX_SHADER_STORAGE_BUFFER_BINDINGS 0x90DD
846 #endif
847 
848 #ifndef GL_MAX_SHADER_STORAGE_BLOCK_SIZE
849 # define GL_MAX_SHADER_STORAGE_BLOCK_SIZE 0x90DE
850 #endif
851 
852 #ifndef GL_SHADER_STORAGE_BUFFER_OFFSET_ALIGNMENT
853 # define GL_SHADER_STORAGE_BUFFER_OFFSET_ALIGNMENT 0x90DF
854 #endif
855 
856 
857 // Polygon mode
858 #ifndef GL_POINT
859 # define GL_POINT 0x1B00
860 #endif
861 
862 #ifndef GL_LINE
863 # define GL_LINE 0x1B01
864 #endif
865 
866 #ifndef GL_FILL
867 # define GL_FILL 0x1B02
868 #endif
869 
870 
871 #ifndef GL_DEPTH_CLAMP
872 # define GL_DEPTH_CLAMP 0
873 #endif
874 
875 // Blend functions
876 #ifndef GL_SRC1_COLOR
877 # define GL_SRC1_COLOR 0x88F9
878 #endif
879 
880 #ifndef GL_ONE_MINUS_SRC1_COLOR
881 # define GL_ONE_MINUS_SRC1_COLOR 0x88FA
882 #endif
883 
884 #ifndef GL_SOURCE1_ALPHA
885 # define GL_SOURCE1_ALPHA 0x8589
886 #endif
887 
888 #ifndef GL_SRC1_ALPHA
889 # define GL_SRC1_ALPHA GL_SOURCE1_ALPHA
890 #endif
891 
892 #ifndef GL_ONE_MINUS_SRC1_ALPHA
893 # define GL_ONE_MINUS_SRC1_ALPHA 0x88FB
894 #endif
895 
896 /* ---------------------- GL_ARB_internalformat_query2 --------------------- */
897 #ifndef GL_ARB_internalformat_query2
898 # define GL_ARB_internalformat_query2 1
899 #endif
900 
901 #ifndef GL_INTERNALFORMAT_SUPPORTED
902 # define GL_INTERNALFORMAT_SUPPORTED 0x826F
903 #endif
904 
905 // --------------------- Framebuffer SRGB -----------------------
906 #ifndef GL_FRAMEBUFFER_SRGB
907 # define GL_FRAMEBUFFER_SRGB 0x8DB9
908 #endif
909 
910 // -------------------- Incomplete FBO error codes ---------------
911 #ifndef GL_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS
912 # define GL_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS 0x8DA8
913 #endif
914 
915 #ifndef GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER
916 # define GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER 0x8CDB
917 #endif
918 
919 #ifndef GL_FRAMEBUFFER_INCOMPLETE_READ_BUFFER
920 # define GL_FRAMEBUFFER_INCOMPLETE_READ_BUFFER 0x8CDC
921 #endif
922 
923 /* ---------------------- ARB_tessellation_shader --------------------- */
924 #ifndef GL_ARB_tessellation_shader
925 # define GL_ARB_tessellation_shader 1
926 #endif
927 
928 #ifndef GL_PATCHES
929 # define GL_PATCHES 0xE
930 #endif
931 
932 #ifndef GL_PATCH_VERTICES
933 # define GL_PATCH_VERTICES 0x8E72
934 #endif
935 
936 
937 /* ------------------------------ GL_KHR_debug ----------------------------- */
938 #ifndef GL_KHR_debug
939 # define GL_KHR_debug 1
940 #endif
941 
942 #ifndef GL_DEBUG_OUTPUT
943 # define GL_DEBUG_OUTPUT 0x92E0
944 #endif
945 
946 #ifndef GL_DEBUG_OUTPUT_SYNCHRONOUS
947 # define GL_DEBUG_OUTPUT_SYNCHRONOUS 0x8242
948 #endif
949 
950 #ifndef GL_DEBUG_SOURCE_API
951 # define GL_DEBUG_SOURCE_API 0x8246
952 #endif
953 
954 #ifndef GL_DEBUG_SOURCE_WINDOW_SYSTEM
955 # define GL_DEBUG_SOURCE_WINDOW_SYSTEM 0x8247
956 #endif
957 
958 #ifndef GL_DEBUG_SOURCE_SHADER_COMPILER
959 # define GL_DEBUG_SOURCE_SHADER_COMPILER 0x8248
960 #endif
961 
962 #ifndef GL_DEBUG_SOURCE_THIRD_PARTY
963 # define GL_DEBUG_SOURCE_THIRD_PARTY 0x8249
964 #endif
965 
966 #ifndef GL_DEBUG_SOURCE_APPLICATION
967 # define GL_DEBUG_SOURCE_APPLICATION 0x824A
968 #endif
969 
970 #ifndef GL_DEBUG_SOURCE_OTHER
971 # define GL_DEBUG_SOURCE_OTHER 0x824B
972 #endif
973 
974 
975 
976 #ifndef GL_DEBUG_TYPE_ERROR
977 # define GL_DEBUG_TYPE_ERROR 0x824C
978 #endif
979 
980 #ifndef GL_DEBUG_TYPE_DEPRECATED_BEHAVIOR
981 # define GL_DEBUG_TYPE_DEPRECATED_BEHAVIOR 0x824D
982 #endif
983 
984 #ifndef GL_DEBUG_TYPE_UNDEFINED_BEHAVIOR
985 # define GL_DEBUG_TYPE_UNDEFINED_BEHAVIOR 0x824E
986 #endif
987 
988 #ifndef GL_DEBUG_TYPE_PORTABILITY
989 # define GL_DEBUG_TYPE_PORTABILITY 0x824F
990 #endif
991 
992 #ifndef GL_DEBUG_TYPE_PERFORMANCE
993 # define GL_DEBUG_TYPE_PERFORMANCE 0x8250
994 #endif
995 
996 #ifndef GL_DEBUG_TYPE_MARKER
997 # define GL_DEBUG_TYPE_MARKER 0x8268
998 #endif
999 
1000 #ifndef GL_DEBUG_TYPE_PUSH_GROUP
1001 # define GL_DEBUG_TYPE_PUSH_GROUP 0x8269
1002 #endif
1003 
1004 #ifndef GL_DEBUG_TYPE_POP_GROUP
1005 # define GL_DEBUG_TYPE_POP_GROUP 0x826A
1006 #endif
1007 
1008 #ifndef GL_DEBUG_TYPE_OTHER
1009 # define GL_DEBUG_TYPE_OTHER 0x8251
1010 #endif
1011 
1012 
1013 
1014 #ifndef GL_DEBUG_SEVERITY_HIGH
1015 # define GL_DEBUG_SEVERITY_HIGH 0x9146
1016 #endif
1017 
1018 #ifndef GL_DEBUG_SEVERITY_MEDIUM
1019 # define GL_DEBUG_SEVERITY_MEDIUM 0x9147
1020 #endif
1021 
1022 #ifndef GL_DEBUG_SEVERITY_LOW
1023 # define GL_DEBUG_SEVERITY_LOW 0x9148
1024 #endif
1025 
1026 #ifndef GL_DEBUG_SEVERITY_NOTIFICATION
1027 # define GL_DEBUG_SEVERITY_NOTIFICATION 0x826B
1028 #endif
1029 
1030 
1031 /* ------------------------------ GL_EXT_disjoint_timer_query ----------------------------- */
1032 #ifndef GL_TIMESTAMP
1033 # define GL_TIMESTAMP 0x8E28
1034 #endif
1035 
1036 #ifndef GL_TIME_ELAPSED
1037 # define GL_TIME_ELAPSED 0x88BF
1038 #endif
1039 
1040 
1041 
1042 // Define unsupported GL function stubs
1043 template<typename T>
1044 void UnsupportedGLFunctionStub( const T &Name )
1045 {
1046  LOG_ERROR_MESSAGE( Name, "() is not supported in this API!\n" );
1047 }
1048 
1049 #define glTexStorage1D(...) UnsupportedGLFunctionStub("glTexStorage1D")
1050 #define glTexSubImage1D(...) UnsupportedGLFunctionStub("glTexSubImage1D")
1051 
1052 #ifndef GL_ES_VERSION_3_1
1053 
1054  #define LOAD_GEN_PROGRAM_PIPELINES
1055  typedef void (GL_APIENTRY* PFNGLGENPROGRAMPIPELINESPROC) (GLsizei n, GLuint* pipelines);
1057 
1058  #define LOAD_GL_DELETE_PROGRAM_PIPELINES
1059  typedef void (GL_APIENTRY* PFNGLDELETEPROGRAMPIPELINESPROC) (GLsizei n, const GLuint* pipelines);
1061 
1062  #define LOAD_GL_BIND_PROGRAM_PIPELINE
1063  typedef void (GL_APIENTRY* PFNGLBINDPROGRAMPIPELINEPROC) (GLuint pipeline);
1065 
1066  #define LOAD_DRAW_ELEMENTS_INDIRECT
1067  typedef void (GL_APIENTRY* PFNGLDRAWELEMENTSINDIRECTPROC) (GLenum mode, GLenum type, const GLvoid *indirect);
1069 
1070  #define LOAD_DRAW_ARRAYS_INDIRECT
1071  typedef void (GL_APIENTRY* PFNGLDRAWARRAYSINDIRECTPROC)( GLenum mode, const GLvoid *indirect );
1073 
1074  #define LOAD_DISPATCH_COMPUTE_INDIRECT
1075  typedef void (GL_APIENTRY* PFNGLDISPATCHCOMPUTEINDIRECTPROC) (GLintptr indirect);
1077 
1078  #define LOAD_GL_USE_PROGRAM_STAGES
1079  typedef void (GL_APIENTRY* PFNGLUSEPROGRAMSTAGESPROC) (GLuint pipeline, GLbitfield stages, GLuint program);
1081 
1082  #define LOAD_GL_TEX_STORAGE_2D_MULTISAMPLE
1083  typedef void (GL_APIENTRY* PFNGLTEXSTORAGE2DMULTISAMPLEPROC) (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLboolean fixedsamplelocations);
1085 
1086  #define LOAD_GL_PROGRAM_UNIFORM_1I
1087  typedef void (GL_APIENTRY* PFNGLPROGRAMUNIFORM1IPROC) (GLuint program, GLint location, GLint x);
1089 
1090  #define LOAD_GL_GET_PROGRAM_INTERFACEIV
1091  typedef void (GL_APIENTRY* PFNGLGETPROGRAMINTERFACEIVPROC) (GLuint program, GLenum programInterface, GLenum pname, GLint* params);
1093 
1094  #define LOAD_GL_GET_PROGRAM_RESOURCE_NAME
1095  typedef void (GL_APIENTRY* PFNGLGETPROGRAMRESOURCENAMEPROC) (GLuint program, GLenum programInterface, GLuint index, GLsizei bufSize, GLsizei* length, GLchar *name);
1097 
1098  #define LOAD_GL_GET_PROGRAM_RESOURCE_INDEX
1099  typedef GLuint (GL_APIENTRY* PFNGLGETPROGRAMRESOURCEINDEXPROC) (GLuint program, GLenum programInterface, const GLchar *name);
1101 
1102  #define LOAD_GL_GET_PROGRAM_RESOURCEIV
1103  typedef void (GL_APIENTRY* PFNGLGETPROGRAMRESOURCEIVPROC) (GLuint program, GLenum programInterface, GLuint index, GLsizei propCount, const GLenum* props, GLsizei bufSize, GLsizei *length, GLint *params);
1105 
1106  #define LOAD_GET_TEX_LEVEL_PARAMETER_IV
1107  typedef void (GL_APIENTRY* PFNGLGETTEXLEVELPARAMETERIVPROC) (GLenum target, GLint level, GLenum pname, GLint *params);
1109 
1110  #define LOAD_GL_SHADER_STORAGE_BLOCK_BINDING
1111  typedef void (GL_APIENTRY* PFNGLSHADERSTORAGEBLOCKBINDINGPROC) (GLuint program, GLuint storageBlockIndex, GLuint storageBlockBinding);
1113 
1114 #endif //GL_ES_VERSION_3_1
1115 
1116 #define LOAD_GL_TEX_BUFFER
1117 typedef void (GL_APIENTRY* PFNGLTEXBUFFERPROC) (GLenum, GLenum, GLuint);
1119 
1120 #define LOAD_GL_VIEWPORT_INDEXEDF
1121 typedef void (GL_APIENTRY* PFNGLVIEWPORTINDEXEDFPROC) (GLuint index, GLfloat x, GLfloat y, GLfloat w, GLfloat h);
1123 
1124 #define LOAD_GL_SCISSOR_INDEXED
1125 typedef void (GL_APIENTRY* PFNGLSCISSORINDEXEDPROC) (GLuint index, GLint left, GLint bottom, GLsizei width, GLsizei height);
1127 
1128 #define LOAD_GL_POLYGON_MODE
1129 typedef void (GL_APIENTRY* PFNGLPOLYGONMODE) (GLenum face, GLenum mode);
1131 
1132 #define LOAD_GL_ENABLEI
1133 typedef void (GL_APIENTRY* PFNGLENABLEIPROC) (GLenum, GLuint);
1135 
1136 #define LOAD_GL_BLEND_FUNC_SEPARATEI
1137 typedef void (GL_APIENTRY* PFNGLBLENDFUNCSEPARATEIPROC) (GLuint buf, GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha);
1139 
1140 #define LOAD_GL_BLEND_EQUATION_SEPARATEI
1141 typedef void (GL_APIENTRY* PFNGLBLENDEQUATIONSEPARATEIPROC) (GLuint buf, GLenum modeRGB, GLenum modeAlpha);
1143 
1144 #define LOAD_GL_DISABLEI
1145 typedef void (GL_APIENTRY* PFNGLDISABLEIPROC) (GLenum, GLuint);
1147 
1148 #define LOAD_GL_COLOR_MASKI
1149 typedef void (GL_APIENTRY* PFNGLCOLORMASKIPROC) (GLuint, GLboolean, GLboolean, GLboolean, GLboolean);
1151 
1152 #define LOAD_GL_PATCH_PARAMTER_I
1153 typedef void (GL_APIENTRY* PFNGLPATCHPARAMETERIPROC) (GLenum pname, GLint value);
1155 
1156 #define LOAD_GL_FRAMEBUFFER_TEXTURE
1157 typedef void (GL_APIENTRY* PFNGLFRAMEBUFFERTEXTUREPROC) (GLenum, GLenum, GLuint, GLint);
1159 
1160 #define LOAD_GL_FRAMEBUFFER_TEXTURE_1D
1161 typedef void (GL_APIENTRY* PFNGLFRAMEBUFFERTEXTURE1DPROC) (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level);
1163 
1164 #define LOAD_GL_FRAMEBUFFER_TEXTURE_3D
1165 typedef void (GL_APIENTRY* PFNGLFRAMEBUFFERTEXTURE3DPROC) (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint layer);
1167 
1168 #ifndef GL_ARB_copy_image
1169 # define GL_ARB_copy_image 1
1170 #endif
1171 
1172 #define LOAD_GL_COPY_IMAGE_SUB_DATA
1173 typedef void (GL_APIENTRY* PFNGLCOPYIMAGESUBDATAPROC) (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);
1175 
1176 #define LOAD_GL_TEX_STORAGE_3D_MULTISAMPLE
1177 typedef void (GL_APIENTRY* PFNGLTEXSTORAGE3DMULTISAMPLEPROC) (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedsamplelocations);
1179 
1180 #define LOAD_GL_TEXTURE_VIEW
1181 typedef void (GL_APIENTRY* PFNGLTEXTUREVIEWPROC) (GLuint texture, GLenum target, GLuint origtexture, GLenum internalformat, GLuint minlevel, GLuint numlevels, GLuint minlayer, GLuint numlayers);
1183 
1184 
1185 #define LOAD_GL_DRAW_ELEMENTS_INSTANCED_BASE_VERTEX_BASE_INSTANCE
1186 typedef void (GL_APIENTRY* PFNGLDRAWELEMENTSINSTANCEDBASEVERTEXBASEINSTANCEPROC) (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount, GLint basevertex, GLuint baseinstance);
1188 
1189 #define LOAD_GL_DRAW_ELEMENTS_INSTANCED_BASE_VERTEX
1190 typedef void (GL_APIENTRY* PFNGLDRAWELEMENTSINSTANCEDBASEVERTEXPROC) (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount, GLint basevertex);
1192 
1193 #define LOAD_GL_DRAW_ELEMENTS_INSTANCED_BASE_INSTANCE
1194 typedef void (GL_APIENTRY* PFNGLDRAWELEMENTSINSTANCEDBASEINSTANCEPROC) (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount, GLuint baseinstance);
1196 
1197 #define LOAD_GL_DRAW_ARRAYS_INSTANCED_BASE_INSTANCE
1198 typedef void (GL_APIENTRY* PFNGLDRAWARRAYSINSTANCEDBASEINSTANCEPROC) (GLenum mode, GLint first, GLsizei count, GLsizei instancecount, GLuint baseinstance);
1200 
1201 #define LOAD_GL_DRAW_ELEMENTS_BASE_VERTEX
1202 typedef void (GL_APIENTRY* PFNGLDRAWELEMENTSBASEVERTEXPROC) (GLenum mode, GLsizei count, GLenum type, const void *indices, GLint basevertex);
1204 
1205 
1206 #define LOAD_GL_GET_QUERY_OBJECT_UI64V
1207 typedef void (GL_APIENTRY* PFNGLGETQUERYOBJECTUI64VPROC) (GLuint id, GLenum pname, GLuint64* params);
1209 
1210 #define LOAD_GL_QUERY_COUNTER
1211 typedef void (GL_APIENTRY* PFNGLQUERYCOUNTERPROC) (GLuint id, GLenum target);
1213 
1214 
1215 #ifndef GL_ES_VERSION_3_2
1216 
1217  typedef void (GL_APIENTRY* GLDEBUGPROC) (GLenum source, GLenum type, GLuint id, GLenum severity, GLsizei length, const GLchar* message, const void* userParam);
1218 
1219  #define LOAD_DEBUG_MESSAGE_CALLBACK
1220  typedef void (GL_APIENTRY* PFNGLDEBUGMESSAGECALLBACKPROC) (GLDEBUGPROC callback, const void *userParam);
1222 
1223  #define LOAD_DEBUG_MESSAGE_CONTROL
1224  typedef void (GL_APIENTRY* PFNGLDEBUGMESSAGECONTROLPROC) (GLenum source, GLenum type, GLenum severity, GLsizei count, const GLuint* ids, GLboolean enabled);
1226 #endif
1227 
1228 void LoadGLFunctions();
glDrawElementsIndirect
PFNGLDRAWELEMENTSINDIRECTPROC glDrawElementsIndirect
glScissorIndexed
PFNGLSCISSORINDEXEDPROC glScissorIndexed
glFramebufferTexture
PFNGLFRAMEBUFFERTEXTUREPROC glFramebufferTexture
LOG_ERROR_MESSAGE
#define LOG_ERROR_MESSAGE(...)
Definition: Errors.hpp:122
PFNGLDISPATCHCOMPUTEPROC
void(GL_APIENTRY * PFNGLDISPATCHCOMPUTEPROC)(GLuint num_groups_x, GLuint num_groups_y, GLuint num_groups_z)
Definition: GLStubsAndroid.h:511
PFNGLTEXTUREVIEWPROC
void(GL_APIENTRY * PFNGLTEXTUREVIEWPROC)(GLuint texture, GLenum target, GLuint origtexture, GLenum internalformat, GLuint minlevel, GLuint numlevels, GLuint minlayer, GLuint numlayers)
Definition: GLStubsAndroid.h:1181
PFNGLTEXBUFFERPROC
void(GL_APIENTRY * PFNGLTEXBUFFERPROC)(GLenum, GLenum, GLuint)
Definition: GLStubsAndroid.h:1117
glGenProgramPipelines
PFNGLGENPROGRAMPIPELINESPROC glGenProgramPipelines
PFNGLDISABLEIPROC
void(GL_APIENTRY * PFNGLDISABLEIPROC)(GLenum, GLuint)
Definition: GLStubsAndroid.h:1145
PFNGLGETQUERYOBJECTUI64VPROC
void(GL_APIENTRY * PFNGLGETQUERYOBJECTUI64VPROC)(GLuint id, GLenum pname, GLuint64 *params)
Definition: GLStubsAndroid.h:1207
glMemoryBarrier
PFNGLMEMORYBARRIERPROC glMemoryBarrier
PFNGLDRAWELEMENTSINSTANCEDBASEVERTEXPROC
void(GL_APIENTRY * PFNGLDRAWELEMENTSINSTANCEDBASEVERTEXPROC)(GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount, GLint basevertex)
Definition: GLStubsAndroid.h:1190
PFNGLBINDPROGRAMPIPELINEPROC
void(GL_APIENTRY * PFNGLBINDPROGRAMPIPELINEPROC)(GLuint pipeline)
Definition: GLStubsAndroid.h:1063
glDispatchCompute
PFNGLDISPATCHCOMPUTEPROC glDispatchCompute
glQueryCounter
PFNGLQUERYCOUNTERPROC glQueryCounter
glGetQueryObjectui64v
PFNGLGETQUERYOBJECTUI64VPROC glGetQueryObjectui64v
PFNGLBLENDEQUATIONSEPARATEIPROC
void(GL_APIENTRY * PFNGLBLENDEQUATIONSEPARATEIPROC)(GLuint buf, GLenum modeRGB, GLenum modeAlpha)
Definition: GLStubsAndroid.h:1141
PFNGLDRAWELEMENTSINSTANCEDBASEVERTEXBASEINSTANCEPROC
void(GL_APIENTRY * PFNGLDRAWELEMENTSINSTANCEDBASEVERTEXBASEINSTANCEPROC)(GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount, GLint basevertex, GLuint baseinstance)
Definition: GLStubsAndroid.h:1186
Diligent::length
auto length(const VectorType &a) -> decltype(dot(a, a))
Definition: BasicMath.hpp:1641
PFNGLENABLEIPROC
void(GL_APIENTRY * PFNGLENABLEIPROC)(GLenum, GLuint)
Definition: GLStubsAndroid.h:1133
PFNGLDRAWARRAYSINDIRECTPROC
void(GL_APIENTRY * PFNGLDRAWARRAYSINDIRECTPROC)(GLenum mode, const GLvoid *indirect)
Definition: GLStubsAndroid.h:1071
glViewportIndexedf
PFNGLVIEWPORTINDEXEDFPROC glViewportIndexedf
PFNGLPOLYGONMODE
void(GL_APIENTRY * PFNGLPOLYGONMODE)(GLenum face, GLenum mode)
Definition: GLStubsAndroid.h:1129
PFNGLGETPROGRAMRESOURCENAMEPROC
void(GL_APIENTRY * PFNGLGETPROGRAMRESOURCENAMEPROC)(GLuint program, GLenum programInterface, GLuint index, GLsizei bufSize, GLsizei *length, GLchar *name)
Definition: GLStubsAndroid.h:1095
PFNGLQUERYCOUNTERPROC
void(GL_APIENTRY * PFNGLQUERYCOUNTERPROC)(GLuint id, GLenum target)
Definition: GLStubsAndroid.h:1211
PFNGLGENPROGRAMPIPELINESPROC
void(GL_APIENTRY * PFNGLGENPROGRAMPIPELINESPROC)(GLsizei n, GLuint *pipelines)
Definition: GLStubsAndroid.h:1055
glGetProgramInterfaceiv
PFNGLGETPROGRAMINTERFACEIVPROC glGetProgramInterfaceiv
glTexStorage2DMultisample
PFNGLTEXSTORAGE2DMULTISAMPLEPROC glTexStorage2DMultisample
PFNGLDRAWELEMENTSINDIRECTPROC
void(GL_APIENTRY * PFNGLDRAWELEMENTSINDIRECTPROC)(GLenum mode, GLenum type, const GLvoid *indirect)
Definition: GLStubsAndroid.h:1067
glColorMaski
PFNGLCOLORMASKIPROC glColorMaski
PFNGLDEBUGMESSAGECONTROLPROC
void(GL_APIENTRY * PFNGLDEBUGMESSAGECONTROLPROC)(GLenum source, GLenum type, GLenum severity, GLsizei count, const GLuint *ids, GLboolean enabled)
Definition: GLStubsAndroid.h:1224
glEnablei
PFNGLENABLEIPROC glEnablei
glTexBuffer
PFNGLTEXBUFFERPROC glTexBuffer
PFNGLSCISSORINDEXEDPROC
void(GL_APIENTRY * PFNGLSCISSORINDEXEDPROC)(GLuint index, GLint left, GLint bottom, GLsizei width, GLsizei height)
Definition: GLStubsAndroid.h:1125
PFNGLDEBUGMESSAGECALLBACKPROC
void(GL_APIENTRY * PFNGLDEBUGMESSAGECALLBACKPROC)(GLDEBUGPROC callback, const void *userParam)
Definition: GLStubsAndroid.h:1220
glGetProgramResourceName
PFNGLGETPROGRAMRESOURCENAMEPROC glGetProgramResourceName
glDrawElementsInstancedBaseVertexBaseInstance
PFNGLDRAWELEMENTSINSTANCEDBASEVERTEXBASEINSTANCEPROC glDrawElementsInstancedBaseVertexBaseInstance
PFNGLUSEPROGRAMSTAGESPROC
void(GL_APIENTRY * PFNGLUSEPROGRAMSTAGESPROC)(GLuint pipeline, GLbitfield stages, GLuint program)
Definition: GLStubsAndroid.h:1079
glBindProgramPipeline
PFNGLBINDPROGRAMPIPELINEPROC glBindProgramPipeline
glPolygonMode
PFNGLPOLYGONMODE glPolygonMode
glDrawElementsInstancedBaseVertex
PFNGLDRAWELEMENTSINSTANCEDBASEVERTEXPROC glDrawElementsInstancedBaseVertex
glGetTexLevelParameteriv
PFNGLGETTEXLEVELPARAMETERIVPROC glGetTexLevelParameteriv
glDrawArraysInstancedBaseInstance
PFNGLDRAWARRAYSINSTANCEDBASEINSTANCEPROC glDrawArraysInstancedBaseInstance
glFramebufferTexture1D
PFNGLFRAMEBUFFERTEXTURE1DPROC glFramebufferTexture1D
PFNGLBINDIMAGETEXTUREPROC
void(GL_APIENTRY * PFNGLBINDIMAGETEXTUREPROC)(GLuint unit, GLuint texture, GLint level, GLboolean layered, GLint layer, GLenum access, GLenum format)
Definition: GLStubsAndroid.h:507
glTexStorage3DMultisample
PFNGLTEXSTORAGE3DMULTISAMPLEPROC glTexStorage3DMultisample
glFramebufferTexture3D
PFNGLFRAMEBUFFERTEXTURE3DPROC glFramebufferTexture3D
PFNGLMEMORYBARRIERPROC
void(GL_APIENTRY * PFNGLMEMORYBARRIERPROC)(GLbitfield barriers)
Definition: GLStubsAndroid.h:515
glBlendFuncSeparatei
PFNGLBLENDFUNCSEPARATEIPROC glBlendFuncSeparatei
PFNGLGETPROGRAMINTERFACEIVPROC
void(GL_APIENTRY * PFNGLGETPROGRAMINTERFACEIVPROC)(GLuint program, GLenum programInterface, GLenum pname, GLint *params)
Definition: GLStubsAndroid.h:1091
glDebugMessageCallback
PFNGLDEBUGMESSAGECALLBACKPROC glDebugMessageCallback
glCopyImageSubData
PFNGLCOPYIMAGESUBDATAPROC glCopyImageSubData
PFNGLCOPYIMAGESUBDATAPROC
void(GL_APIENTRY * PFNGLCOPYIMAGESUBDATAPROC)(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)
Definition: GLStubsAndroid.h:1173
glPatchParameteri
PFNGLPATCHPARAMETERIPROC glPatchParameteri
PFNGLGETPROGRAMRESOURCEINDEXPROC
GLuint(GL_APIENTRY * PFNGLGETPROGRAMRESOURCEINDEXPROC)(GLuint program, GLenum programInterface, const GLchar *name)
Definition: GLStubsAndroid.h:1099
PFNGLTEXSTORAGE3DMULTISAMPLEPROC
void(GL_APIENTRY * PFNGLTEXSTORAGE3DMULTISAMPLEPROC)(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedsamplelocations)
Definition: GLStubsAndroid.h:1177
PFNGLPATCHPARAMETERIPROC
void(GL_APIENTRY * PFNGLPATCHPARAMETERIPROC)(GLenum pname, GLint value)
Definition: GLStubsAndroid.h:1153
PFNGLBLENDFUNCSEPARATEIPROC
void(GL_APIENTRY * PFNGLBLENDFUNCSEPARATEIPROC)(GLuint buf, GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha)
Definition: GLStubsAndroid.h:1137
glShaderStorageBlockBinding
PFNGLSHADERSTORAGEBLOCKBINDINGPROC glShaderStorageBlockBinding
UnsupportedGLFunctionStub
void UnsupportedGLFunctionStub(const T &Name)
Definition: GLStubsAndroid.h:1044
glDeleteProgramPipelines
PFNGLDELETEPROGRAMPIPELINESPROC glDeleteProgramPipelines
glGetProgramResourceIndex
PFNGLGETPROGRAMRESOURCEINDEXPROC glGetProgramResourceIndex
PFNGLPROGRAMUNIFORM1IPROC
void(GL_APIENTRY * PFNGLPROGRAMUNIFORM1IPROC)(GLuint program, GLint location, GLint x)
Definition: GLStubsAndroid.h:1087
PFNGLFRAMEBUFFERTEXTUREPROC
void(GL_APIENTRY * PFNGLFRAMEBUFFERTEXTUREPROC)(GLenum, GLenum, GLuint, GLint)
Definition: GLStubsAndroid.h:1157
PFNGLDRAWELEMENTSBASEVERTEXPROC
void(GL_APIENTRY * PFNGLDRAWELEMENTSBASEVERTEXPROC)(GLenum mode, GLsizei count, GLenum type, const void *indices, GLint basevertex)
Definition: GLStubsAndroid.h:1202
glDisablei
PFNGLDISABLEIPROC glDisablei
glDrawElementsBaseVertex
PFNGLDRAWELEMENTSBASEVERTEXPROC glDrawElementsBaseVertex
glDispatchComputeIndirect
PFNGLDISPATCHCOMPUTEINDIRECTPROC glDispatchComputeIndirect
glDrawArraysIndirect
PFNGLDRAWARRAYSINDIRECTPROC glDrawArraysIndirect
glDrawElementsInstancedBaseInstance
PFNGLDRAWELEMENTSINSTANCEDBASEINSTANCEPROC glDrawElementsInstancedBaseInstance
glUseProgramStages
PFNGLUSEPROGRAMSTAGESPROC glUseProgramStages
GLDEBUGPROC
void(GL_APIENTRY * GLDEBUGPROC)(GLenum source, GLenum type, GLuint id, GLenum severity, GLsizei length, const GLchar *message, const void *userParam)
Definition: GLStubsAndroid.h:1217
PFNGLDELETEPROGRAMPIPELINESPROC
void(GL_APIENTRY * PFNGLDELETEPROGRAMPIPELINESPROC)(GLsizei n, const GLuint *pipelines)
Definition: GLStubsAndroid.h:1059
PFNGLFRAMEBUFFERTEXTURE3DPROC
void(GL_APIENTRY * PFNGLFRAMEBUFFERTEXTURE3DPROC)(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint layer)
Definition: GLStubsAndroid.h:1165
PFNGLDISPATCHCOMPUTEINDIRECTPROC
void(GL_APIENTRY * PFNGLDISPATCHCOMPUTEINDIRECTPROC)(GLintptr indirect)
Definition: GLStubsAndroid.h:1075
glBindImageTexture
PFNGLBINDIMAGETEXTUREPROC glBindImageTexture
glGetProgramResourceiv
PFNGLGETPROGRAMRESOURCEIVPROC glGetProgramResourceiv
PFNGLDRAWARRAYSINSTANCEDBASEINSTANCEPROC
void(GL_APIENTRY * PFNGLDRAWARRAYSINSTANCEDBASEINSTANCEPROC)(GLenum mode, GLint first, GLsizei count, GLsizei instancecount, GLuint baseinstance)
Definition: GLStubsAndroid.h:1198
PFNGLGETTEXLEVELPARAMETERIVPROC
void(GL_APIENTRY * PFNGLGETTEXLEVELPARAMETERIVPROC)(GLenum target, GLint level, GLenum pname, GLint *params)
Definition: GLStubsAndroid.h:1107
LoadGLFunctions
void LoadGLFunctions()
Definition: GLStubsAndroid.cpp:219
PFNGLCOLORMASKIPROC
void(GL_APIENTRY * PFNGLCOLORMASKIPROC)(GLuint, GLboolean, GLboolean, GLboolean, GLboolean)
Definition: GLStubsAndroid.h:1149
glDebugMessageControl
PFNGLDEBUGMESSAGECONTROLPROC glDebugMessageControl
glBlendEquationSeparatei
PFNGLBLENDEQUATIONSEPARATEIPROC glBlendEquationSeparatei
PFNGLGETPROGRAMRESOURCEIVPROC
void(GL_APIENTRY * PFNGLGETPROGRAMRESOURCEIVPROC)(GLuint program, GLenum programInterface, GLuint index, GLsizei propCount, const GLenum *props, GLsizei bufSize, GLsizei *length, GLint *params)
Definition: GLStubsAndroid.h:1103
PFNGLVIEWPORTINDEXEDFPROC
void(GL_APIENTRY * PFNGLVIEWPORTINDEXEDFPROC)(GLuint index, GLfloat x, GLfloat y, GLfloat w, GLfloat h)
Definition: GLStubsAndroid.h:1121
PFNGLTEXSTORAGE2DMULTISAMPLEPROC
void(GL_APIENTRY * PFNGLTEXSTORAGE2DMULTISAMPLEPROC)(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLboolean fixedsamplelocations)
Definition: GLStubsAndroid.h:1083
PFNGLFRAMEBUFFERTEXTURE1DPROC
void(GL_APIENTRY * PFNGLFRAMEBUFFERTEXTURE1DPROC)(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level)
Definition: GLStubsAndroid.h:1161
glTextureView
PFNGLTEXTUREVIEWPROC glTextureView
glProgramUniform1i
PFNGLPROGRAMUNIFORM1IPROC glProgramUniform1i
PFNGLSHADERSTORAGEBLOCKBINDINGPROC
void(GL_APIENTRY * PFNGLSHADERSTORAGEBLOCKBINDINGPROC)(GLuint program, GLuint storageBlockIndex, GLuint storageBlockBinding)
Definition: GLStubsAndroid.h:1111
Errors.hpp
PFNGLDRAWELEMENTSINSTANCEDBASEINSTANCEPROC
void(GL_APIENTRY * PFNGLDRAWELEMENTSINSTANCEDBASEINSTANCEPROC)(GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount, GLuint baseinstance)
Definition: GLStubsAndroid.h:1194