GLI 0.6.0

- Main Page
- Modules
- Namespaces
- Classes
- Files

- File List
- File Members

gl.hpp
Go to the documentation of this file.
1
29 #pragma once
30
31 #include "storage.hpp"
32 #include <array>
33
34 namespace gli
35 {
36 class gl
37 {
38 enum internalFormat
39 {
40 // unorm formats
41 INTERNAL_R8_UNORM = 0x8229, //GL_R8
42 INTERNAL_RG8_UNORM = 0x822B, //GL_RG8
43 INTERNAL_RGB8_UNORM = 0x8051, //GL_RGB8
44 INTERNAL_RGBA8_UNORM = 0x8058, //GL_RGBA8
45
46 INTERNAL_R16_UNORM = 0x822A, //GL_R16
47 INTERNAL_RG16_UNORM = 0x822C, //GL_RG16
48 INTERNAL_RGB16_UNORM = 0x8054, //GL_RGB16
49 INTERNAL_RGBA16_UNORM = 0x805B, //GL_RGBA16
50
51 INTERNAL_RGB10A2_UNORM = 0x8059, //GL_RGB10_A2
52
53 // snorm formats
54 INTERNAL_R8_SNORM = 0x8F94, //GL_R8_SNORM
55 INTERNAL_RG8_SNORM = 0x8F95, //GL_RG8_SNORM
56 INTERNAL_RGB8_SNORM = 0x8F96, //GL_RGB8_SNORM
57 INTERNAL_RGBA8_SNORM = 0x8F97, //GL_RGBA8_SNORM
58
59 INTERNAL_R16_SNORM = 0x8F98, //GL_R16_SNORM
60 INTERNAL_RG16_SNORM= 0x8F99, //GL_RG16_SNORM
61 INTERNAL_RGB16_SNORM= 0x8F9A, //GL_RGB16_SNORM
62 INTERNAL_RGBA16_SNORM = 0x8F9B, //GL_RGBA16_SNORM
63
64 // unsigned integer formats
65 INTERNAL_R8U = 0x8232, //GL_R8UI
66 INTERNAL_RG8U = 0x8238, //GL_RG8UI
67 INTERNAL_RGB8U = 0x8D7D, //GL_RGB8UI
68 INTERNAL_RGBA8U = 0x8D7C, //GL_RGBA8UI
69
70 INTERNAL_R16U = 0x8234, //GL_R16UI
71 INTERNAL_RG16U = 0x823A, //GL_RG16UI
72 INTERNAL_RGB16U = 0x8D77, //GL_RGB16UI
73 INTERNAL_RGBA16U = 0x8D76, //GL_RGBA16UI
74
75 INTERNAL_R32U = 0x8236, //GL_R32UI
76 INTERNAL_RG32U = 0x823C, //GL_RG32UI
77 INTERNAL_RGB32U = 0x8D71, //GL_RGB32UI
78 INTERNAL_RGBA32U = 0x8D70, //GL_RGBA32UI
79
80 INTERNAL_RGB10A2U = 0x906F, //GL_RGB10_A2UI
81
82 // signed integer formats
83 INTERNAL_R8I = 0x8231, //GL_R8I
84 INTERNAL_RG8I = 0x8237, //GL_RG8I
85 INTERNAL_RGB8I = 0x8D8F, //GL_RGB8I
86 INTERNAL_RGBA8I = 0x8D8E, //GL_RGBA8I
87
88 INTERNAL_R16I = 0x8233, //GL_R16I
89 INTERNAL_RG16I = 0x8239, //GL_RG16I
90 INTERNAL_RGB16I = 0x8D89, //GL_RGB16I
91 INTERNAL_RGBA16I = 0x8D88, //GL_RGBA16I
92
93 INTERNAL_R32I = 0x8235, //GL_R32I
94 INTERNAL_RG32I = 0x823B, //GL_RG32I
95 INTERNAL_RGB32I = 0x8D83, //GL_RGB32I
96 INTERNAL_RGBA32I = 0x8D82, //GL_RGBA32I
97
98 // Floating formats
99 INTERNAL_R16F = 0x822D, //GL_R16F
100 INTERNAL_RG16F = 0x822F, //GL_RG16F
101 INTERNAL_RGB16F = 0x881B, //GL_RGB16F
102 INTERNAL_RGBA16F = 0x881A, //GL_RGBA16F
103
104 INTERNAL_R32F = 0x822E, //GL_R32F
105 INTERNAL_RG32F = 0x8230, //GL_RG32F
106 INTERNAL_RGB32F = 0x8815, //GL_RGB32F
107 INTERNAL_RGBA32F = 0x8814, //GL_RGBA32F
108
109 // sRGB formats
110 INTERNAL_SR8 = 0x8FBD, //GL_SR8_EXT
111 INTERNAL_SRG8 = 0x8FBE, //GL_SRG8_EXT
112 INTERNAL_SRGB8 = 0x8C41, //GL_SRGB8
113 INTERNAL_SRGB8_ALPHA8 = 0x8C43, //GL_SRGB8_ALPHA8
114
115 // Packed formats
116 INTERNAL_RGB9E5 = 0x8C3D, //GL_RGB9_E5
117 INTERNAL_RG11B10F = 0x8C3A, //GL_R11F_G11F_B10F
118 INTERNAL_RG3B2 = 0x2A10, //GL_R3_G3_B2
119 INTERNAL_R5G6B5 = 0x8D62, //GL_RGB565
120 INTERNAL_RGB5A1 = 0x8057, //GL_RGB5_A1
121 INTERNAL_RGBA4 = 0x8056, //GL_RGBA4
122
123 // Luminance Alpha formats
124 INTERNAL_LA4 = 0x8043, //GL_LUMINANCE4_ALPHA4
125 INTERNAL_L8 = 0x8040, //GL_LUMINANCE8
126 INTERNAL_A8 = 0x803C, //GL_ALPHA8
127 INTERNAL_LA8 = 0x8045, //GL_LUMINANCE8_ALPHA8
128 INTERNAL_L16 = 0x8042, //GL_LUMINANCE16
129 INTERNAL_A16 = 0x803E, //GL_ALPHA16
130 INTERNAL_LA16 = 0x8048, //GL_LUMINANCE16_ALPHA16
131
132 // Depth formats
133 INTERNAL_D16 = 0x81A5, //GL_DEPTH_COMPONENT16
134 INTERNAL_D24 = 0x81A6, //GL_DEPTH_COMPONENT24
135 INTERNAL_D24S8 = 0x88F0, //GL_DEPTH24_STENCIL8
136 INTERNAL_D32 = 0x81A7, //GL_DEPTH_COMPONENT32
137 INTERNAL_D32F = 0x8CAC, //GL_DEPTH_COMPONENT32F
138 INTERNAL_D32FS8X24 = 0x8CAD, //GL_DEPTH32F_STENCIL8
139
140 // Compressed formats
141 INTERNAL_RGB_DXT1 = 0x83F0, //GL_COMPRESSED_RGB_S3TC_DXT1_EXT
142 INTERNAL_RGBA_DXT1 = 0x83F1, //GL_COMPRESSED_RGBA_S3TC_DXT1_EXT
143 INTERNAL_RGBA_DXT3 = 0x83F2, //GL_COMPRESSED_RGBA_S3TC_DXT3_EXT
144 INTERNAL_RGBA_DXT5 = 0x83F3, //GL_COMPRESSED_RGBA_S3TC_DXT5_EXT
145 INTERNAL_R_ATI1N_UNORM = 0x8DBB, //GL_COMPRESSED_RED_RGTC1
146 INTERNAL_R_ATI1N_SNORM = 0x8DBC, //GL_COMPRESSED_SIGNED_RED_RGTC1
147 INTERNAL_RG_ATI2N_UNORM = 0x8DBD, //GL_COMPRESSED_RG_RGTC2
148 INTERNAL_RG_ATI2N_SNORM = 0x8DBE, //GL_COMPRESSED_SIGNED_RG_RGTC2
149 INTERNAL_RGB_BP_UNSIGNED_FLOAT = 0x8E8F, //GL_COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT
150 INTERNAL_RGB_BP_SIGNED_FLOAT = 0x8E8E, //GL_COMPRESSED_RGB_BPTC_SIGNED_FLOAT
151 INTERNAL_RGB_BP_UNORM = 0x8E8C, //GL_COMPRESSED_RGBA_BPTC_UNORM
152 INTERNAL_RGB_PVRTC_4BPPV1 = 0x8C00, //GL_COMPRESSED_RGB_PVRTC_4BPPV1_IMG
153 INTERNAL_RGB_PVRTC_2BPPV1 = 0x8C01, //GL_COMPRESSED_RGB_PVRTC_2BPPV1_IMG
154 INTERNAL_RGBA_PVRTC_4BPPV1 = 0x8C02, //GL_COMPRESSED_RGBA_PVRTC_4BPPV1_IMG
155 INTERNAL_RGBA_PVRTC_2BPPV1 = 0x8C03, //GL_COMPRESSED_RGBA_PVRTC_2BPPV1_IMG
156 INTERNAL_RGBA_PVRTC_4BPPV2 = 0x9137, //GL_COMPRESSED_RGBA_PVRTC_4BPPV2_IMG
157 INTERNAL_RGBA_PVRTC_2BPPV2 = 0x9138, //GL_COMPRESSED_RGBA_PVRTC_2BPPV2_IMG
158 INTERNAL_ATC_RGB = 0x8C92, //GL_ATC_RGB_AMD
159 INTERNAL_ATC_RGBA_EXPLICIT_ALPHA = 0x8C93, //GL_ATC_RGBA_EXPLICIT_ALPHA_AMD
160 INTERNAL_ATC_RGBA_INTERPOLATED_ALPHA = 0x87EE, //GL_ATC_RGBA_INTERPOLATED_ALPHA_AMD
161
162 INTERNAL_RGB_ETC = 0x8D64, //GL_COMPRESSED_RGB8_ETC1
163 INTERNAL_RGB_ETC2 = 0x9274, //GL_COMPRESSED_RGB8_ETC2
164 INTERNAL_RGBA_PUNCHTHROUGH_ETC2 = 0x9276, //GL_COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2
165 INTERNAL_RGBA_ETC2_EAC = 0x9278, //GL_COMPRESSED_RGBA8_ETC2_EAC
166 INTERNAL_R11_EAC = 0x9270, //GL_COMPRESSED_R11_EAC
167 INTERNAL_SIGNED_R11_EAC = 0x9271, //GL_COMPRESSED_SIGNED_R11_EAC
168 INTERNAL_RG11_EAC = 0x9272, //GL_COMPRESSED_RG11_EAC
169 INTERNAL_SIGNED_RG11_EAC = 0x9273, //GL_COMPRESSED_SIGNED_RG11_EAC
170
171 INTERNAL_RGBA_ASTC_4x4 = 0x93B0, //GL_COMPRESSED_RGBA_ASTC_4x4_KHR
172 INTERNAL_RGBA_ASTC_5x4 = 0x93B1, //GL_COMPRESSED_RGBA_ASTC_5x4_KHR
173 INTERNAL_RGBA_ASTC_5x5 = 0x93B2, //GL_COMPRESSED_RGBA_ASTC_5x5_KHR
174 INTERNAL_RGBA_ASTC_6x5 = 0x93B3, //GL_COMPRESSED_RGBA_ASTC_6x5_KHR
175 INTERNAL_RGBA_ASTC_6x6 = 0x93B4, //GL_COMPRESSED_RGBA_ASTC_6x6_KHR
176 INTERNAL_RGBA_ASTC_8x5 = 0x93B5, //GL_COMPRESSED_RGBA_ASTC_8x5_KHR
177 INTERNAL_RGBA_ASTC_8x6 = 0x93B6, //GL_COMPRESSED_RGBA_ASTC_8x6_KHR
178 INTERNAL_RGBA_ASTC_8x8 = 0x93B7, //GL_COMPRESSED_RGBA_ASTC_8x8_KHR
179 INTERNAL_RGBA_ASTC_10x5 = 0x93B8, //GL_COMPRESSED_RGBA_ASTC_10x5_KHR
180 INTERNAL_RGBA_ASTC_10x6 = 0x93B9, //GL_COMPRESSED_RGBA_ASTC_10x6_KHR
181 INTERNAL_RGBA_ASTC_10x8 = 0x93BA, //GL_COMPRESSED_RGBA_ASTC_10x8_KHR
182 INTERNAL_RGBA_ASTC_10x10 = 0x93BB, //GL_COMPRESSED_RGBA_ASTC_10x10_KHR
183 INTERNAL_RGBA_ASTC_12x10 = 0x93BC, //GL_COMPRESSED_RGBA_ASTC_12x10_KHR
184 INTERNAL_RGBA_ASTC_12x12 = 0x93BD, //GL_COMPRESSED_RGBA_ASTC_12x12_KHR
185
186 // sRGB formats
187 INTERNAL_SRGB_DXT1 = 0x8C4C, //GL_COMPRESSED_SRGB_S3TC_DXT1_EXT
188 INTERNAL_SRGB_ALPHA_DXT1 = 0x8C4C, //GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT
189 INTERNAL_SRGB_ALPHA_DXT3 = 0x8C4E, //GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT
190 INTERNAL_SRGB_ALPHA_DXT5 = 0x8C4F, //GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT
191 INTERNAL_SRGB_BP_UNORM = 0x8E8D, //GL_COMPRESSED_SRGB_ALPHA_BPTC_UNORM
192 INTERNAL_SRGB_PVRTC_2BPPV1 = 0x8A54, //GL_COMPRESSED_SRGB_PVRTC_2BPPV1_EXT
193 INTERNAL_SRGB_PVRTC_4BPPV1 = 0x8A55, //GL_COMPRESSED_SRGB_PVRTC_4BPPV1_EXT
194 INTERNAL_SRGB_ALPHA_PVRTC_2BPPV1 = 0x8A56, //GL_COMPRESSED_SRGB_ALPHA_PVRTC_2BPPV1_EXT
195 INTERNAL_SRGB_ALPHA_PVRTC_4BPPV1 = 0x8A57, //GL_COMPRESSED_SRGB_ALPHA_PVRTC_4BPPV1_EXT
196 INTERNAL_SRGB_ALPHA_PVRTC_2BPPV2 = 0x93F0, //COMPRESSED_SRGB_ALPHA_PVRTC_2BPPV2_IMG
197 INTERNAL_SRGB_ALPHA_PVRTC_4BPPV2 = 0x93F1, //GL_COMPRESSED_SRGB_ALPHA_PVRTC_4BPPV2_IMG
198 INTERNAL_SRGB8_ETC2 = 0x9275, //GL_COMPRESSED_SRGB8_ETC2
199 INTERNAL_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2 = 0x9277, //GL_COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2
200 INTERNAL_SRGB8_ALPHA8_ETC2_EAC = 0x9279, //GL_COMPRESSED_SRGB8_ALPHA8_ETC2_EAC
201 INTERNAL_SRGB8_ALPHA8_ASTC_4x4 = 0x93D0, //GL_COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR
202 INTERNAL_SRGB8_ALPHA8_ASTC_5x4 = 0x93D1, //GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR
203 INTERNAL_SRGB8_ALPHA8_ASTC_5x5 = 0x93D2, //GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR
204 INTERNAL_SRGB8_ALPHA8_ASTC_6x5 = 0x93D3, //GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR
205 INTERNAL_SRGB8_ALPHA8_ASTC_6x6 = 0x93D4, //GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR
206 INTERNAL_SRGB8_ALPHA8_ASTC_8x5 = 0x93D5, //GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR
207 INTERNAL_SRGB8_ALPHA8_ASTC_8x6 = 0x93D6, //GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR
208 INTERNAL_SRGB8_ALPHA8_ASTC_8x8 = 0x93D7, //GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR
209 INTERNAL_SRGB8_ALPHA8_ASTC_10x5 = 0x93D8, //GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR
210 INTERNAL_SRGB8_ALPHA8_ASTC_10x6 = 0x93D9, //GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR
211 INTERNAL_SRGB8_ALPHA8_ASTC_10x8 = 0x93DA, //GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR
212 INTERNAL_SRGB8_ALPHA8_ASTC_10x10 = 0x93DB, //GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR
213 INTERNAL_SRGB8_ALPHA8_ASTC_12x10 = 0x93DC, //GL_COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR
214 INTERNAL_SRGB8_ALPHA8_ASTC_12x12 = 0x93DD //GL_COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR
215 };
216
217 enum externalFormat
218 {
219 EXTERNAL_NONE = 0, //GL_NONE
220 EXTERNAL_RED = 0x1903, //GL_RED
221 EXTERNAL_RG = 0x8227, //GL_RG
222 EXTERNAL_RGB= 0x1907, //GL_RGB
223 EXTERNAL_BGR = 0x80E0, //GL_BGR
224 EXTERNAL_RGBA = 0x1908, //GL_RGBA
225 EXTERNAL_BGRA = 0x80E1, //GL_BGRA
226 EXTERNAL_RED_INTEGER = 0x8D94, //GL_RED_INTEGER
227 EXTERNAL_RG_INTEGER = 0x8228, //GL_RG_INTEGER
228 EXTERNAL_RGB_INTEGER = 0x8D98, //GL_RGB_INTEGER
229 EXTERNAL_BGR_INTEGER = 0x8D9A, //GL_BGR_INTEGER
230 EXTERNAL_RGBA_INTEGER = 0x8D99, //GL_RGBA_INTEGER
231 EXTERNAL_BGRA_INTEGER = 0x8D9B, //GL_BGRA_INTEGER
232 EXTERNAL_DEPTH = 0x1902, //GL_DEPTH_COMPONENT
233 EXTERNAL_DEPTH_STENCIL = 0x84F9, //GL_DEPTH_STENCIL
234
235 EXTERNAL_LUMINANCE = 0x1909, //GL_LUMINANCE
236 EXTERNAL_ALPHA = 0x1906, //GL_ALPHA
237 EXTERNAL_LUMINANCE_ALPHA = 0x190A, //GL_LUMINANCE_ALPHA
238
239 EXTERNAL_RGB_DXT1 = 0x83F0, //GL_COMPRESSED_RGB_S3TC_DXT1_EXT
240 EXTERNAL_RGBA_DXT1 = 0x83F1, //GL_COMPRESSED_RGBA_S3TC_DXT1_EXT
241 EXTERNAL_RGBA_DXT3 = 0x83F2, //GL_COMPRESSED_RGBA_S3TC_DXT3_EXT
242 EXTERNAL_RGBA_DXT5 = 0x83F3, //GL_COMPRESSED_RGBA_S3TC_DXT5_EXT
243 EXTERNAL_R_ATI1N_UNORM = 0x8DBB, //GL_COMPRESSED_RED_RGTC1
244 EXTERNAL_R_ATI1N_SNORM = 0x8DBC, //GL_COMPRESSED_SIGNED_RED_RGTC1
245 EXTERNAL_RG_ATI2N_UNORM = 0x8DBD, //GL_COMPRESSED_RG_RGTC2
246 EXTERNAL_RG_ATI2N_SNORM = 0x8DBE, //GL_COMPRESSED_SIGNED_RG_RGTC2
247 EXTERNAL_RGB_BP_UNSIGNED_FLOAT = 0x8E8F, //GL_COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT
248 EXTERNAL_RGB_BP_SIGNED_FLOAT = 0x8E8E, //GL_COMPRESSED_RGB_BPTC_SIGNED_FLOAT
249 EXTERNAL_RGB_BP_UNORM = 0x8E8C, //GL_COMPRESSED_RGBA_BPTC_UNORM
250 EXTERNAL_RGB_PVRTC_4BPPV1 = 0x8C00, //GL_COMPRESSED_RGB_PVRTC_4BPPV1_IMG
251 EXTERNAL_RGB_PVRTC_2BPPV1 = 0x8C01, //GL_COMPRESSED_RGB_PVRTC_2BPPV1_IMG
252 EXTERNAL_RGBA_PVRTC_4BPPV1 = 0x8C02, //GL_COMPRESSED_RGBA_PVRTC_4BPPV1_IMG
253 EXTERNAL_RGBA_PVRTC_2BPPV1 = 0x8C03, //GL_COMPRESSED_RGBA_PVRTC_2BPPV1_IMG
254 EXTERNAL_RGBA_PVRTC_4BPPV2 = 0x9137, //GL_COMPRESSED_RGBA_PVRTC_4BPPV2_IMG
255 EXTERNAL_RGBA_PVRTC_2BPPV2 = 0x9138, //GL_COMPRESSED_RGBA_PVRTC_2BPPV2_IMG
256 EXTERNAL_ATC_RGB = 0x8C92, //GL_ATC_RGB_AMD
257 EXTERNAL_ATC_RGBA_EXPLICIT_ALPHA = 0x8C93, //GL_ATC_RGBA_EXPLICIT_ALPHA_AMD
258 EXTERNAL_ATC_RGBA_INTERPOLATED_ALPHA = 0x87EE, //GL_ATC_RGBA_INTERPOLATED_ALPHA_AMD
259
260 EXTERNAL_RGB_ETC = 0x8D64, //GL_COMPRESSED_RGB8_ETC1
261 EXTERNAL_RGB8_ETC2 = 0x9274, //GL_COMPRESSED_RGB8_ETC2
262 EXTERNAL_RGB8_PUNCHTHROUGH_ALPHA1_ETC2 = 0x9276, //GL_COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2
263 EXTERNAL_RGBA8_ETC2_EAC = 0x9278, //GL_COMPRESSED_RGBA8_ETC2_EAC
264 EXTERNAL_R11_EAC = 0x9270, //GL_COMPRESSED_R11_EAC
265 EXTERNAL_SIGNED_R11_EAC = 0x9271, //GL_COMPRESSED_SIGNED_R11_EAC
266 EXTERNAL_RG11_EAC = 0x9272, //GL_COMPRESSED_RG11_EAC
267 EXTERNAL_SIGNED_RG11_EAC = 0x9273, //GL_COMPRESSED_SIGNED_RG11_EAC
268 EXTERNAL_RGBA_ASTC_4x4 = 0x93B0, //GL_COMPRESSED_RGBA_ASTC_4x4_KHR
269 EXTERNAL_RGBA_ASTC_5x4 = 0x93B1, //GL_COMPRESSED_RGBA_ASTC_5x4_KHR
270 EXTERNAL_RGBA_ASTC_5x5 = 0x93B2, //GL_COMPRESSED_RGBA_ASTC_5x5_KHR
271 EXTERNAL_RGBA_ASTC_6x5 = 0x93B3, //GL_COMPRESSED_RGBA_ASTC_6x5_KHR
272 EXTERNAL_RGBA_ASTC_6x6 = 0x93B4, //GL_COMPRESSED_RGBA_ASTC_6x6_KHR
273 EXTERNAL_RGBA_ASTC_8x5 = 0x93B5, //GL_COMPRESSED_RGBA_ASTC_8x5_KHR
274 EXTERNAL_RGBA_ASTC_8x6 = 0x93B6, //GL_COMPRESSED_RGBA_ASTC_8x6_KHR
275 EXTERNAL_RGBA_ASTC_8x8 = 0x93B7, //GL_COMPRESSED_RGBA_ASTC_8x8_KHR
276 EXTERNAL_RGBA_ASTC_10x5 = 0x93B8, //GL_COMPRESSED_RGBA_ASTC_10x5_KHR
277 EXTERNAL_RGBA_ASTC_10x6 = 0x93B9, //GL_COMPRESSED_RGBA_ASTC_10x6_KHR
278 EXTERNAL_RGBA_ASTC_10x8 = 0x93BA, //GL_COMPRESSED_RGBA_ASTC_10x8_KHR
279 EXTERNAL_RGBA_ASTC_10x10 = 0x93BB, //GL_COMPRESSED_RGBA_ASTC_10x10_KHR
280 EXTERNAL_RGBA_ASTC_12x10 = 0x93BC, //GL_COMPRESSED_RGBA_ASTC_12x10_KHR
281 EXTERNAL_RGBA_ASTC_12x12 = 0x93BD, //GL_COMPRESSED_RGBA_ASTC_12x12_KHR
282
283 // sRGB formats
284 EXTERNAL_SRGB_DXT1 = 0x8C4C, //GL_COMPRESSED_SRGB_S3TC_DXT1_EXT
285 EXTERNAL_SRGB_ALPHA_DXT1 = 0x8C4C, //GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT
286 EXTERNAL_SRGB_ALPHA_DXT3 = 0x8C4E, //GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT
287 EXTERNAL_SRGB_ALPHA_DXT5 = 0x8C4F, //GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT
288 EXTERNAL_SRGB_BP_UNORM = 0x8E8D, //GL_COMPRESSED_SRGB_ALPHA_BPTC_UNORM
289 EXTERNAL_SRGB_PVRTC_2BPPV1 = 0x8A54, //GL_COMPRESSED_SRGB_PVRTC_2BPPV1_EXT
290 EXTERNAL_SRGB_PVRTC_4BPPV1 = 0x8A55, //GL_COMPRESSED_SRGB_PVRTC_4BPPV1_EXT
291 EXTERNAL_SRGB_ALPHA_PVRTC_2BPPV1 = 0x8A56, //GL_COMPRESSED_SRGB_ALPHA_PVRTC_2BPPV1_EXT
292 EXTERNAL_SRGB_ALPHA_PVRTC_4BPPV1 = 0x8A57, //GL_COMPRESSED_SRGB_ALPHA_PVRTC_4BPPV1_EXT
293 EXTERNAL_SRGB_ALPHA_PVRTC_2BPPV2 = 0x93F0, //COMPRESSED_SRGB_ALPHA_PVRTC_2BPPV2_IMG
294 EXTERNAL_SRGB_ALPHA_PVRTC_4BPPV2 = 0x93F1, //GL_COMPRESSED_SRGB_ALPHA_PVRTC_4BPPV2_IMG
295 EXTERNAL_SRGB8_ETC2 = 0x9275, //GL_COMPRESSED_SRGB8_ETC2
296 EXTERNAL_RGBA_PUNCHTHROUGH_ETC2_SRGB = 0x9277, //GL_COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2
297 EXTERNAL_SRGB8_ALPHA8_ETC2_EAC = 0x9279, //GL_COMPRESSED_SRGB8_ALPHA8_ETC2_EAC
298 EXTERNAL_SRGB8_ALPHA8_ASTC_4x4 = 0x93D0, //GL_COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR
299 EXTERNAL_SRGB8_ALPHA8_ASTC_5x4 = 0x93D1, //GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR
300 EXTERNAL_SRGB8_ALPHA8_ASTC_5x5 = 0x93D2, //GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR
301 EXTERNAL_SRGB8_ALPHA8_ASTC_6x5 = 0x93D3, //GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR
302 EXTERNAL_SRGB8_ALPHA8_ASTC_6x6 = 0x93D4, //GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR
303 EXTERNAL_SRGB8_ALPHA8_ASTC_8x5 = 0x93D5, //GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR
304 EXTERNAL_SRGB8_ALPHA8_ASTC_8x6 = 0x93D6, //GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR
305 EXTERNAL_SRGB8_ALPHA8_ASTC_8x8 = 0x93D7, //GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR
306 EXTERNAL_SRGB8_ALPHA8_ASTC_10x5 = 0x93D8, //GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR
307 EXTERNAL_SRGB8_ALPHA8_ASTC_10x6 = 0x93D9, //GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR
308 EXTERNAL_SRGB8_ALPHA8_ASTC_10x8 = 0x93DA, //GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR
309 EXTERNAL_SRGB8_ALPHA8_ASTC_10x10 = 0x93DB, //GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR
310 EXTERNAL_SRGB8_ALPHA8_ASTC_12x10 = 0x93DC, //GL_COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR
311 EXTERNAL_SRGB8_ALPHA8_ASTC_12x12 = 0x93DD //GL_COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR
312 };
313
314 enum typeFormat
315 {
316 TYPE_NONE = 0, //GL_NONE
317 TYPE_I8 = 0x1400, //GL_BYTE
318 TYPE_U8 = 0x1401, //GL_UNSIGNED_BYTE
319 TYPE_I16 = 0x1402, //GL_SHORT
320 TYPE_U16 = 0x1403, //GL_UNSIGNED_SHORT
321 TYPE_I32 = 0x1404, //GL_INT
322 TYPE_U32 = 0x1405, //GL_UNSIGNED_INT
323 TYPE_F16 = 0x140B, //GL_HALF_FLOAT
324 TYPE_F32 = 0x1406, //GL_FLOAT
325 TYPE_UINT32_RGB9_E5 = 0x8C3E, //GL_UNSIGNED_INT_5_9_9_9_REV
326 TYPE_UINT32_RG11B10F = 0x8C3B, //GL_UNSIGNED_INT_10F_11F_11F_REV
327 TYPE_UINT8_RG3B2 = 0x8032, //GL_UNSIGNED_BYTE_3_3_2
328 TYPE_UINT8_RG3B2_REV = 0x8362, //GL_UNSIGNED_BYTE_2_3_3_REV
329 TYPE_UINT16_RGB5A1 = 0x8034, //GL_UNSIGNED_SHORT_5_5_5_1
330 TYPE_UINT16_RGB5A1_REV = 0x8366, //GL_UNSIGNED_SHORT_1_5_5_5_REV
331 TYPE_UINT16_R5G6B5 = 0x8363, //GL_UNSIGNED_SHORT_5_6_5
332 TYPE_UINT16_R5G6B5_REV = 0x8364, //GL_UNSIGNED_SHORT_5_6_5_REV
333 TYPE_UINT16_RGBA4 = 0x8033, //GL_UNSIGNED_SHORT_4_4_4_4
334 TYPE_UINT16_RGBA4_REV = 0x8365, //GL_UNSIGNED_SHORT_4_4_4_4_REV
335 TYPE_UINT32_RGB10A2 = 0x8036, //GL_UNSIGNED_INT_10_10_10_2
336 TYPE_UINT32_RGB10A2_REV = 0x8368 //GL_UNSIGNED_INT_2_10_10_10_REV
337 };
338
339 enum swizzle
340 {
341 SWIZZLE_RED = 0x1903, //GL_RED
342 SWIZZLE_GREEN = 0x1904, //GL_GREEN
343 SWIZZLE_BLUE = 0x1905, //GL_BLUE
344 SWIZZLE_ALPHA = 0x1906, //GL_ALPHA
345 SWIZZLE_ZERO = 0x0000, //GL_ZERO
346 SWIZZLE_ONE = 0x0001, //GL_ONE
347 };
348
349 public:
350 struct format
351 {
352 internalFormat Internal;
353 externalFormat External;
354 typeFormat Type;
355 swizzle Swizzle[4];
356 };
357
358 public:
359 gl();
360
361 format const & translate(gli::format const & Format) const;
362
363 private:
364 std::array<format, FORMAT_COUNT> Translation;
365 };
366 }//namespace gli
367
368 #include "gl.inl"
gli::gl
Definition: gl.hpp:36
gli::gl::format::Swizzle
swizzle Swizzle[4]
Definition: gl.hpp:355
gli::gl::format::Internal
internalFormat Internal
Definition: gl.hpp:352
gli
Definition: addressing.hpp:33
gli::gl::format::Type
typeFormat Type
Definition: gl.hpp:354
gli::gl::translate
format const & translate(gli::format const &Format) const
storage.hpp
OpenGL Image (gli.g-truc.net)
gli::gl::gl
gl()
gli::gl::format::External
externalFormat External
Definition: gl.hpp:353
gli::gl::format
Definition: gl.hpp:350
gli::format
format
Definition: format.hpp:33