This file is indexed.

/usr/include/gli/gl.hpp is in libgli-dev 0.8.2.0+ds1-2.

This file is owned by root:root, with mode 0o644.

The actual contents of the file can be viewed below.

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
/// @brief Include to translate GLI enums to OpenGL enums
/// @file gli/gl.hpp

#pragma once

#include "format.hpp"
#include "target.hpp"
#include <array>

namespace gli
{
	/// Translation class to convert GLI enums into OpenGL values
	class gl
	{
	public:
		enum internal_format
		{
			INTERNAL_RGB_UNORM= 0x1907,			//GL_RGB
			INTERNAL_BGR_UNORM = 0x80E0,		//GL_BGR
			INTERNAL_RGBA_UNORM = 0x1908,		//GL_RGBA
			INTERNAL_BGRA_UNORM = 0x80E1,		//GL_BGRA
			INTERNAL_BGRA8_UNORM = 0x93A1,		//GL_BGRA8_EXT

			// unorm formats
			INTERNAL_R8_UNORM = 0x8229,			//GL_R8
			INTERNAL_RG8_UNORM = 0x822B,		//GL_RG8
			INTERNAL_RGB8_UNORM = 0x8051,		//GL_RGB8
			INTERNAL_RGBA8_UNORM = 0x8058,		//GL_RGBA8

			INTERNAL_R16_UNORM = 0x822A,		//GL_R16
			INTERNAL_RG16_UNORM = 0x822C,		//GL_RG16
			INTERNAL_RGB16_UNORM = 0x8054,		//GL_RGB16
			INTERNAL_RGBA16_UNORM = 0x805B,		//GL_RGBA16

			INTERNAL_RGB10A2_UNORM = 0x8059,	//GL_RGB10_A2
			INTERNAL_RGB10A2_SNORM_EXT = 0xFFFC,

			// snorm formats
			INTERNAL_R8_SNORM = 0x8F94,			//GL_R8_SNORM
			INTERNAL_RG8_SNORM = 0x8F95,		//GL_RG8_SNORM
			INTERNAL_RGB8_SNORM = 0x8F96,		//GL_RGB8_SNORM
			INTERNAL_RGBA8_SNORM = 0x8F97,		//GL_RGBA8_SNORM

			INTERNAL_R16_SNORM = 0x8F98,		//GL_R16_SNORM
			INTERNAL_RG16_SNORM= 0x8F99,		//GL_RG16_SNORM
			INTERNAL_RGB16_SNORM= 0x8F9A,		//GL_RGB16_SNORM
			INTERNAL_RGBA16_SNORM = 0x8F9B,		//GL_RGBA16_SNORM

			// unsigned integer formats
			INTERNAL_R8U = 0x8232,				//GL_R8UI
			INTERNAL_RG8U = 0x8238,				//GL_RG8UI
			INTERNAL_RGB8U = 0x8D7D,			//GL_RGB8UI
			INTERNAL_RGBA8U = 0x8D7C,			//GL_RGBA8UI

			INTERNAL_R16U = 0x8234,				//GL_R16UI
			INTERNAL_RG16U = 0x823A,			//GL_RG16UI
			INTERNAL_RGB16U = 0x8D77,			//GL_RGB16UI
			INTERNAL_RGBA16U = 0x8D76,			//GL_RGBA16UI

			INTERNAL_R32U = 0x8236,				//GL_R32UI
			INTERNAL_RG32U = 0x823C,			//GL_RG32UI
			INTERNAL_RGB32U = 0x8D71,			//GL_RGB32UI
			INTERNAL_RGBA32U = 0x8D70,			//GL_RGBA32UI

			INTERNAL_RGB10A2U = 0x906F,			//GL_RGB10_A2UI
			INTERNAL_RGB10A2I_EXT = 0xFFFB,

			// signed integer formats
			INTERNAL_R8I = 0x8231,				//GL_R8I
			INTERNAL_RG8I = 0x8237,				//GL_RG8I
			INTERNAL_RGB8I = 0x8D8F,			//GL_RGB8I
			INTERNAL_RGBA8I = 0x8D8E,			//GL_RGBA8I

			INTERNAL_R16I = 0x8233,				//GL_R16I
			INTERNAL_RG16I = 0x8239,			//GL_RG16I
			INTERNAL_RGB16I = 0x8D89,			//GL_RGB16I
			INTERNAL_RGBA16I = 0x8D88,			//GL_RGBA16I

			INTERNAL_R32I = 0x8235,				//GL_R32I
			INTERNAL_RG32I = 0x823B,			//GL_RG32I
			INTERNAL_RGB32I = 0x8D83,			//GL_RGB32I
			INTERNAL_RGBA32I = 0x8D82,			//GL_RGBA32I

			// Floating formats
			INTERNAL_R16F = 0x822D,				//GL_R16F
			INTERNAL_RG16F = 0x822F,			//GL_RG16F
			INTERNAL_RGB16F = 0x881B,			//GL_RGB16F
			INTERNAL_RGBA16F = 0x881A,			//GL_RGBA16F

			INTERNAL_R32F = 0x822E,				//GL_R32F
			INTERNAL_RG32F = 0x8230,			//GL_RG32F
			INTERNAL_RGB32F = 0x8815,			//GL_RGB32F
			INTERNAL_RGBA32F = 0x8814,			//GL_RGBA32F

			INTERNAL_R64F_EXT = 0xFFFA,			//GL_R64F
			INTERNAL_RG64F_EXT = 0xFFF9,		//GL_RG64F
			INTERNAL_RGB64F_EXT = 0xFFF8,		//GL_RGB64F
			INTERNAL_RGBA64F_EXT = 0xFFF7,		//GL_RGBA64F

			// sRGB formats
			INTERNAL_SR8 = 0x8FBD,				//GL_SR8_EXT
			INTERNAL_SRG8 = 0x8FBE,				//GL_SRG8_EXT
			INTERNAL_SRGB8 = 0x8C41,			//GL_SRGB8
			INTERNAL_SRGB8_ALPHA8 = 0x8C43,		//GL_SRGB8_ALPHA8

			// Packed formats
			INTERNAL_RGB9E5 = 0x8C3D,			//GL_RGB9_E5
			INTERNAL_RG11B10F = 0x8C3A,			//GL_R11F_G11F_B10F
			INTERNAL_RG3B2 = 0x2A10,			//GL_R3_G3_B2
			INTERNAL_R5G6B5 = 0x8D62,			//GL_RGB565
			INTERNAL_RGB5A1 = 0x8057,			//GL_RGB5_A1
			INTERNAL_RGBA4 = 0x8056,			//GL_RGBA4

			INTERNAL_RG4_EXT = 0xFFFE,

			// Luminance Alpha formats
			INTERNAL_LA4 = 0x8043,				//GL_LUMINANCE4_ALPHA4
			INTERNAL_L8 = 0x8040,				//GL_LUMINANCE8
			INTERNAL_A8 = 0x803C,				//GL_ALPHA8
			INTERNAL_LA8 = 0x8045,				//GL_LUMINANCE8_ALPHA8
			INTERNAL_L16 = 0x8042,				//GL_LUMINANCE16
			INTERNAL_A16 = 0x803E,				//GL_ALPHA16
			INTERNAL_LA16 = 0x8048,				//GL_LUMINANCE16_ALPHA16

			// Depth formats
			INTERNAL_D16 = 0x81A5,				//GL_DEPTH_COMPONENT16
			INTERNAL_D24 = 0x81A6,				//GL_DEPTH_COMPONENT24
			INTERNAL_D16S8_EXT = 0xFFF6,
			INTERNAL_D24S8 = 0x88F0,			//GL_DEPTH24_STENCIL8
			INTERNAL_D32 = 0x81A7,				//GL_DEPTH_COMPONENT32
			INTERNAL_D32F = 0x8CAC,				//GL_DEPTH_COMPONENT32F
			INTERNAL_D32FS8X24 = 0x8CAD,		//GL_DEPTH32F_STENCIL8
			INTERNAL_S8_EXT = 0x8D48,			//GL_STENCIL_INDEX8

			// Compressed formats
			INTERNAL_RGB_DXT1 = 0x83F0,						//GL_COMPRESSED_RGB_S3TC_DXT1_EXT
			INTERNAL_RGBA_DXT1 = 0x83F1,					//GL_COMPRESSED_RGBA_S3TC_DXT1_EXT
			INTERNAL_RGBA_DXT3 = 0x83F2,					//GL_COMPRESSED_RGBA_S3TC_DXT3_EXT
			INTERNAL_RGBA_DXT5 = 0x83F3,					//GL_COMPRESSED_RGBA_S3TC_DXT5_EXT
			INTERNAL_R_ATI1N_UNORM = 0x8DBB,				//GL_COMPRESSED_RED_RGTC1
			INTERNAL_R_ATI1N_SNORM = 0x8DBC,				//GL_COMPRESSED_SIGNED_RED_RGTC1
			INTERNAL_RG_ATI2N_UNORM = 0x8DBD,				//GL_COMPRESSED_RG_RGTC2
			INTERNAL_RG_ATI2N_SNORM = 0x8DBE,				//GL_COMPRESSED_SIGNED_RG_RGTC2
			INTERNAL_RGB_BP_UNSIGNED_FLOAT = 0x8E8F,		//GL_COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT
			INTERNAL_RGB_BP_SIGNED_FLOAT = 0x8E8E,			//GL_COMPRESSED_RGB_BPTC_SIGNED_FLOAT
			INTERNAL_RGB_BP_UNORM = 0x8E8C,					//GL_COMPRESSED_RGBA_BPTC_UNORM
			INTERNAL_RGB_PVRTC_4BPPV1 = 0x8C00,				//GL_COMPRESSED_RGB_PVRTC_4BPPV1_IMG
			INTERNAL_RGB_PVRTC_2BPPV1 = 0x8C01,				//GL_COMPRESSED_RGB_PVRTC_2BPPV1_IMG
			INTERNAL_RGBA_PVRTC_4BPPV1 = 0x8C02,			//GL_COMPRESSED_RGBA_PVRTC_4BPPV1_IMG
			INTERNAL_RGBA_PVRTC_2BPPV1 = 0x8C03,			//GL_COMPRESSED_RGBA_PVRTC_2BPPV1_IMG
			INTERNAL_RGBA_PVRTC_4BPPV2 = 0x9137,			//GL_COMPRESSED_RGBA_PVRTC_4BPPV2_IMG
			INTERNAL_RGBA_PVRTC_2BPPV2 = 0x9138,			//GL_COMPRESSED_RGBA_PVRTC_2BPPV2_IMG
			INTERNAL_ATC_RGB = 0x8C92,						//GL_ATC_RGB_AMD
			INTERNAL_ATC_RGBA_EXPLICIT_ALPHA = 0x8C93,		//GL_ATC_RGBA_EXPLICIT_ALPHA_AMD
			INTERNAL_ATC_RGBA_INTERPOLATED_ALPHA = 0x87EE,	//GL_ATC_RGBA_INTERPOLATED_ALPHA_AMD

			INTERNAL_RGB_ETC = 0x8D64,						//GL_COMPRESSED_RGB8_ETC1
			INTERNAL_RGB_ETC2 = 0x9274,						//GL_COMPRESSED_RGB8_ETC2
			INTERNAL_RGBA_PUNCHTHROUGH_ETC2 = 0x9276,		//GL_COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2
			INTERNAL_RGBA_ETC2 = 0x9278,					//GL_COMPRESSED_RGBA8_ETC2_EAC
			INTERNAL_R11_EAC = 0x9270,						//GL_COMPRESSED_R11_EAC
			INTERNAL_SIGNED_R11_EAC = 0x9271,				//GL_COMPRESSED_SIGNED_R11_EAC
			INTERNAL_RG11_EAC = 0x9272,						//GL_COMPRESSED_RG11_EAC
			INTERNAL_SIGNED_RG11_EAC = 0x9273,				//GL_COMPRESSED_SIGNED_RG11_EAC

			INTERNAL_RGBA_ASTC_4x4 = 0x93B0,				//GL_COMPRESSED_RGBA_ASTC_4x4_KHR
			INTERNAL_RGBA_ASTC_5x4 = 0x93B1,				//GL_COMPRESSED_RGBA_ASTC_5x4_KHR
			INTERNAL_RGBA_ASTC_5x5 = 0x93B2,				//GL_COMPRESSED_RGBA_ASTC_5x5_KHR
			INTERNAL_RGBA_ASTC_6x5 = 0x93B3,				//GL_COMPRESSED_RGBA_ASTC_6x5_KHR
			INTERNAL_RGBA_ASTC_6x6 = 0x93B4,				//GL_COMPRESSED_RGBA_ASTC_6x6_KHR
			INTERNAL_RGBA_ASTC_8x5 = 0x93B5,				//GL_COMPRESSED_RGBA_ASTC_8x5_KHR
			INTERNAL_RGBA_ASTC_8x6 = 0x93B6,				//GL_COMPRESSED_RGBA_ASTC_8x6_KHR
			INTERNAL_RGBA_ASTC_8x8 = 0x93B7,				//GL_COMPRESSED_RGBA_ASTC_8x8_KHR
			INTERNAL_RGBA_ASTC_10x5 = 0x93B8,				//GL_COMPRESSED_RGBA_ASTC_10x5_KHR
			INTERNAL_RGBA_ASTC_10x6 = 0x93B9,				//GL_COMPRESSED_RGBA_ASTC_10x6_KHR
			INTERNAL_RGBA_ASTC_10x8 = 0x93BA,				//GL_COMPRESSED_RGBA_ASTC_10x8_KHR
			INTERNAL_RGBA_ASTC_10x10 = 0x93BB,				//GL_COMPRESSED_RGBA_ASTC_10x10_KHR
			INTERNAL_RGBA_ASTC_12x10 = 0x93BC,				//GL_COMPRESSED_RGBA_ASTC_12x10_KHR
			INTERNAL_RGBA_ASTC_12x12 = 0x93BD,				//GL_COMPRESSED_RGBA_ASTC_12x12_KHR

			// sRGB formats
			INTERNAL_SRGB_DXT1 = 0x8C4C,					//GL_COMPRESSED_SRGB_S3TC_DXT1_EXT
			INTERNAL_SRGB_ALPHA_DXT1 = 0x8C4D,				//GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT
			INTERNAL_SRGB_ALPHA_DXT3 = 0x8C4E,				//GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT
			INTERNAL_SRGB_ALPHA_DXT5 = 0x8C4F,				//GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT
			INTERNAL_SRGB_BP_UNORM = 0x8E8D,				//GL_COMPRESSED_SRGB_ALPHA_BPTC_UNORM
			INTERNAL_SRGB_PVRTC_2BPPV1 = 0x8A54,			//GL_COMPRESSED_SRGB_PVRTC_2BPPV1_EXT
			INTERNAL_SRGB_PVRTC_4BPPV1 = 0x8A55,			//GL_COMPRESSED_SRGB_PVRTC_4BPPV1_EXT
			INTERNAL_SRGB_ALPHA_PVRTC_2BPPV1 = 0x8A56,		//GL_COMPRESSED_SRGB_ALPHA_PVRTC_2BPPV1_EXT
			INTERNAL_SRGB_ALPHA_PVRTC_4BPPV1 = 0x8A57,		//GL_COMPRESSED_SRGB_ALPHA_PVRTC_4BPPV1_EXT
			INTERNAL_SRGB_ALPHA_PVRTC_2BPPV2 = 0x93F0,		//COMPRESSED_SRGB_ALPHA_PVRTC_2BPPV2_IMG
			INTERNAL_SRGB_ALPHA_PVRTC_4BPPV2 = 0x93F1,		//GL_COMPRESSED_SRGB_ALPHA_PVRTC_4BPPV2_IMG
			INTERNAL_SRGB8_ETC2 = 0x9275,						//GL_COMPRESSED_SRGB8_ETC2
			INTERNAL_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2 = 0x9277,	//GL_COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2
			INTERNAL_SRGB8_ALPHA8_ETC2_EAC = 0x9279,			//GL_COMPRESSED_SRGB8_ALPHA8_ETC2_EAC
			INTERNAL_SRGB8_ALPHA8_ASTC_4x4 = 0x93D0,		//GL_COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR
			INTERNAL_SRGB8_ALPHA8_ASTC_5x4 = 0x93D1,		//GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR
			INTERNAL_SRGB8_ALPHA8_ASTC_5x5 = 0x93D2,		//GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR
			INTERNAL_SRGB8_ALPHA8_ASTC_6x5 = 0x93D3,		//GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR
			INTERNAL_SRGB8_ALPHA8_ASTC_6x6 = 0x93D4,		//GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR
			INTERNAL_SRGB8_ALPHA8_ASTC_8x5 = 0x93D5,		//GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR
			INTERNAL_SRGB8_ALPHA8_ASTC_8x6 = 0x93D6,		//GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR
			INTERNAL_SRGB8_ALPHA8_ASTC_8x8 = 0x93D7,		//GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR
			INTERNAL_SRGB8_ALPHA8_ASTC_10x5 = 0x93D8,		//GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR
			INTERNAL_SRGB8_ALPHA8_ASTC_10x6 = 0x93D9,		//GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR
			INTERNAL_SRGB8_ALPHA8_ASTC_10x8 = 0x93DA,		//GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR
			INTERNAL_SRGB8_ALPHA8_ASTC_10x10 = 0x93DB,		//GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR
			INTERNAL_SRGB8_ALPHA8_ASTC_12x10 = 0x93DC,		//GL_COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR
			INTERNAL_SRGB8_ALPHA8_ASTC_12x12 = 0x93DD,		//GL_COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR
			
			INTERNAL_ALPHA8 = 0x803C,
			INTERNAL_ALPHA16 = 0x803E,
			INTERNAL_LUMINANCE8 = 0x8040,
			INTERNAL_LUMINANCE16 = 0x8042,
			INTERNAL_LUMINANCE8_ALPHA8 = 0x8045,
			INTERNAL_LUMINANCE16_ALPHA16 = 0x8048,
			
			INTERNAL_R8_USCALED_GTC = 0xF000,
			INTERNAL_R8_SSCALED_GTC,
			INTERNAL_RG8_USCALED_GTC,
			INTERNAL_RG8_SSCALED_GTC,
			INTERNAL_RGB8_USCALED_GTC,
			INTERNAL_RGB8_SSCALED_GTC,
			INTERNAL_RGBA8_USCALED_GTC,
			INTERNAL_RGBA8_SSCALED_GTC,
			INTERNAL_RGB10A2_USCALED_GTC,
			INTERNAL_RGB10A2_SSCALED_GTC,
			INTERNAL_R16_USCALED_GTC,
			INTERNAL_R16_SSCALED_GTC,
			INTERNAL_RG16_USCALED_GTC,
			INTERNAL_RG16_SSCALED_GTC,
			INTERNAL_RGB16_USCALED_GTC,
			INTERNAL_RGB16_SSCALED_GTC,
			INTERNAL_RGBA16_USCALED_GTC,
			INTERNAL_RGBA16_SSCALED_GTC,
		};

		enum external_format
		{
			EXTERNAL_NONE = 0,					//GL_NONE
			EXTERNAL_RED = 0x1903,				//GL_RED
			EXTERNAL_RG = 0x8227,				//GL_RG
			EXTERNAL_RGB= 0x1907,				//GL_RGB
			EXTERNAL_BGR = 0x80E0,				//GL_BGR
			EXTERNAL_RGBA = 0x1908,				//GL_RGBA
			EXTERNAL_BGRA = 0x80E1,				//GL_BGRA
			EXTERNAL_RED_INTEGER = 0x8D94,		//GL_RED_INTEGER
			EXTERNAL_RG_INTEGER = 0x8228,		//GL_RG_INTEGER
			EXTERNAL_RGB_INTEGER = 0x8D98,		//GL_RGB_INTEGER
			EXTERNAL_BGR_INTEGER = 0x8D9A,		//GL_BGR_INTEGER
			EXTERNAL_RGBA_INTEGER = 0x8D99,		//GL_RGBA_INTEGER
			EXTERNAL_BGRA_INTEGER = 0x8D9B,		//GL_BGRA_INTEGER
			EXTERNAL_DEPTH = 0x1902,			//GL_DEPTH_COMPONENT
			EXTERNAL_DEPTH_STENCIL = 0x84F9,	//GL_DEPTH_STENCIL
			EXTERNAL_STENCIL = 0x1901,			//GL_STENCIL_INDEX

			EXTERNAL_LUMINANCE = 0x1909,				//GL_LUMINANCE
			EXTERNAL_ALPHA = 0x1906,					//GL_ALPHA
			EXTERNAL_LUMINANCE_ALPHA = 0x190A,			//GL_LUMINANCE_ALPHA

			EXTERNAL_SRGB_EXT = 0x8C40,					//SRGB_EXT
			EXTERNAL_SRGB_ALPHA_EXT = 0x8C42			//SRGB_ALPHA_EXT
		};

		enum type_format
		{
			TYPE_NONE = 0,						//GL_NONE
			TYPE_I8 = 0x1400,					//GL_BYTE
			TYPE_U8 = 0x1401,					//GL_UNSIGNED_BYTE
			TYPE_I16 = 0x1402,					//GL_SHORT
			TYPE_U16 = 0x1403,					//GL_UNSIGNED_SHORT
			TYPE_I32 = 0x1404,					//GL_INT
			TYPE_U32 = 0x1405,					//GL_UNSIGNED_INT
			TYPE_I64 = 0x140E,					//GL_INT64_ARB
			TYPE_U64 = 0x140F,					//GL_UNSIGNED_INT64_ARB
			TYPE_F16 = 0x140B,					//GL_HALF_FLOAT
			TYPE_F16_OES = 0x8D61,				//GL_HALF_FLOAT_OES
			TYPE_F32 = 0x1406,					//GL_FLOAT
			TYPE_F64 = 0x140A,					//GL_DOUBLE
			TYPE_UINT32_RGB9_E5_REV = 0x8C3E,	//GL_UNSIGNED_INT_5_9_9_9_REV
			TYPE_UINT32_RG11B10F_REV = 0x8C3B,	//GL_UNSIGNED_INT_10F_11F_11F_REV
			TYPE_UINT8_RG3B2 = 0x8032,			//GL_UNSIGNED_BYTE_3_3_2
			TYPE_UINT8_RG3B2_REV = 0x8362,		//GL_UNSIGNED_BYTE_2_3_3_REV
			TYPE_UINT16_RGB5A1 = 0x8034,		//GL_UNSIGNED_SHORT_5_5_5_1
			TYPE_UINT16_RGB5A1_REV = 0x8366,	//GL_UNSIGNED_SHORT_1_5_5_5_REV
			TYPE_UINT16_R5G6B5 = 0x8363,		//GL_UNSIGNED_SHORT_5_6_5
			TYPE_UINT16_R5G6B5_REV = 0x8364,	//GL_UNSIGNED_SHORT_5_6_5_REV
			TYPE_UINT16_RGBA4 = 0x8033,			//GL_UNSIGNED_SHORT_4_4_4_4
			TYPE_UINT16_RGBA4_REV = 0x8365,		//GL_UNSIGNED_SHORT_4_4_4_4_REV
			TYPE_UINT32_RGBA8 = 0x8035,			//GL_UNSIGNED_SHORT_8_8_8_8
			TYPE_UINT32_RGBA8_REV = 0x8367,		//GL_UNSIGNED_SHORT_8_8_8_8_REV
			TYPE_UINT32_RGB10A2 = 0x8036,		//GL_UNSIGNED_INT_10_10_10_2
			TYPE_UINT32_RGB10A2_REV = 0x8368,	//GL_UNSIGNED_INT_2_10_10_10_REV

			TYPE_UINT8_RG4_REV_GTC = 0xFFFD,
			TYPE_UINT16_A1RGB5_GTC = 0xFFFC
		};

		enum target
		{
			TARGET_1D			= 0x0DE0,
			TARGET_1D_ARRAY		= 0x8C18,
			TARGET_2D			= 0x0DE1,
			TARGET_2D_ARRAY		= 0x8C1A,
			TARGET_3D			= 0x806F,
			TARGET_RECT			= 0x84F5,
			TARGET_RECT_ARRAY	= 0x84F5, // Not supported by OpenGL
			TARGET_CUBE			= 0x8513,
			TARGET_CUBE_ARRAY	= 0x9009
		};

		enum swizzle
		{
			SWIZZLE_RED = 0x1903,		//GL_RED
			SWIZZLE_GREEN = 0x1904,		//GL_GREEN
			SWIZZLE_BLUE = 0x1905,		//GL_BLUE
			SWIZZLE_ALPHA = 0x1906,		//GL_ALPHA
			SWIZZLE_ZERO = 0x0000,		//GL_ZERO
			SWIZZLE_ONE = 0x0001,		//GL_ONE
		};

		enum profile
		{
			PROFILE_ES20,
			PROFILE_ES30,
			PROFILE_GL32,
			PROFILE_GL33,
			PROFILE_KTX
		};

		typedef glm::tvec4<int> swizzles;

		struct format
		{
			internal_format Internal;
			external_format External;
			type_format Type;
			swizzles Swizzles;
		};

		gl(profile Profile);

		/// Convert GLI targets into OpenGL texture targets
		target const& translate(gli::target Target) const;

		/// Convert GLI formats into OpenGL texture formats
		format translate(gli::format Format, gli::swizzles const& Swizzle) const;

		/// Convert an OpenGL format into a GLI format
		gli::format find(internal_format InternalFormat, external_format ExternalFormat, type_format Type);

	private:
		struct format_desc
		{
			internal_format Internal;
			external_format External;
			type_format Type;
			unsigned int Properties;
		};

		bool has_swizzle(profile Profile) const
		{
			return Profile == PROFILE_ES30 || Profile == PROFILE_GL33;
		}

		gl::swizzles compute_swizzle(format_desc const& FormatDesc, gli::swizzles const& Swizzle) const;

		std::array<format_desc, FORMAT_COUNT> FormatDesc;
		profile Profile;
	};
}//namespace gli

#include "./core/gl.inl"