Line | Source | Count |
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 | #include "qopenglfunctions.h" | - |
41 | #include "qopenglextrafunctions.h" | - |
42 | #include "qopenglextensions_p.h" | - |
43 | #include "qdebug.h" | - |
44 | #include <QtGui/private/qopenglcontext_p.h> | - |
45 | #include <QtGui/private/qopengl_p.h> | - |
46 | #include <QtGui/private/qguiapplication_p.h> | - |
47 | #include <qpa/qplatformintegration.h> | - |
48 | #include <QtCore/qloggingcategory.h> | - |
49 | | - |
50 | #ifdef Q_OS_IOSQ_OS_INTEGRITY | - |
51 | #include <dlfcnEGL/egl.h> | - |
52 | #endif | - |
53 | | - |
54 | #ifndef GL_FRAMEBUFFER_SRGB_CAPABLE_EXT | - |
55 | #define GL_FRAMEBUFFER_SRGB_CAPABLE_EXT 0x8DBA | - |
56 | #endif | - |
57 | | - |
58 | QT_BEGIN_NAMESPACE | - |
59 | | - |
60 | Q_LOGGING_CATEGORY(lcGLES3, "qt.opengl.es3") | - |
61 | | - |
62 | | - |
63 | #define QT_OPENGL_COUNT_FUNCTIONS(ret, name, args) +1 | - |
64 | #define QT_OPENGL_FUNCTION_NAMES(ret, name, args) \ | - |
65 | "gl"#name"\0" | - |
66 | #define QT_OPENGL_FLAGS(ret, name, args) \ | - |
67 | 0, | - |
68 | #define QT_OPENGL_IMPLEMENT(CLASS, FUNCTIONS) \ | - |
69 | void CLASS::init(QOpenGLContext *context) \ | - |
70 | { \ | - |
71 | const char *names = FUNCTIONS(QT_OPENGL_FUNCTION_NAMES); \ | - |
72 | const char *name = names; \ | - |
73 | for (int i = 0; i < FUNCTIONS(QT_OPENGL_COUNT_FUNCTIONS); ++i) { \ | - |
74 | functions[i] = QT_PREPEND_NAMESPACE(getProcAddress(context, name)); \ | - |
75 | name += strlen(name) + 1; \ | - |
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 | struct QOpenGLFunctionsPrivateEx : public QOpenGLExtensionsPrivate, public QOpenGLSharedResource | - |
215 | { | - |
216 | QOpenGLFunctionsPrivateEx(QOpenGLContext *context) | - |
217 | : QOpenGLExtensionsPrivate(context) | - |
218 | , QOpenGLSharedResource(context->shareGroup()) | - |
219 | , m_features(-1) | - |
220 | , m_extensions(-1) | - |
221 | {} | - |
222 | | - |
223 | void invalidateResource() Q_DECL_OVERRIDE | - |
224 | { | - |
225 | m_features = -1; | - |
226 | m_extensions = -1; | - |
227 | } | - |
228 | | - |
229 | void freeResource(QOpenGLContext *) Q_DECL_OVERRIDE | - |
230 | { | - |
231 | | - |
232 | } | - |
233 | | - |
234 | int m_features; | - |
235 | int m_extensions; | - |
236 | }; | - |
237 | | - |
238 | Q_GLOBAL_STATIC(QOpenGLMultiGroupSharedResource, qt_gl_functions_resource) | - |
239 | | - |
240 | static QOpenGLFunctionsPrivateEx *qt_gl_functions(QOpenGLContext *context = 0) | - |
241 | { | - |
242 | if (!context) | - |
243 | context = QOpenGLContext::currentContext(); | - |
244 | Q_ASSERT(context); | - |
245 | QOpenGLFunctionsPrivateEx *funcs = | - |
246 | qt_gl_functions_resource()->value<QOpenGLFunctionsPrivateEx>(context); | - |
247 | return funcs; | - |
248 | } | - |
249 | | - |
250 | | - |
251 | | - |
252 | | - |
253 | | - |
254 | | - |
255 | | - |
256 | | - |
257 | QOpenGLFunctions::QOpenGLFunctions() | - |
258 | : d_ptr(0) | - |
259 | { | - |
260 | } | - |
261 | | - |
262 | | - |
263 | | - |
264 | | - |
265 | | - |
266 | | - |
267 | | - |
268 | | - |
269 | | - |
270 | | - |
271 | | - |
272 | | - |
273 | | - |
274 | QOpenGLFunctions::QOpenGLFunctions(QOpenGLContext *context) | - |
275 | : d_ptr(0) | - |
276 | { | - |
277 | if (context && QOpenGLContextGroup::currentContextGroup() == context->shareGroup())TRUE | never evaluated | FALSE | never evaluated |
TRUE | never evaluated | FALSE | never evaluated |
| 0 |
278 | d_ptr = qt_gl_functions(context); never executed: d_ptr = qt_gl_functions(context); | 0 |
279 | else | - |
280 | qWarning() << ("QOpenGLFunctions created with non-current context";); never executed: QMessageLogger(__FILE__, 280, __PRETTY_FUNCTION__).warning("QOpenGLFunctions created with non-current context"); | 0 |
281 | } | - |
282 | | - |
283 | QOpenGLExtensions::QOpenGLExtensions() | - |
284 | { | - |
285 | } | - |
286 | | - |
287 | QOpenGLExtensions::QOpenGLExtensions(QOpenGLContext *context) | - |
288 | : QOpenGLExtraFunctions(context) | - |
289 | { | - |
290 | } | - |
291 | | - |
292 | | - |
293 | | - |
294 | | - |
295 | | - |
296 | | - |
297 | | - |
298 | static int qt_gl_resolve_features() | - |
299 | { | - |
300 | QOpenGLContext *ctx = QOpenGLContext::currentContext(); | - |
301 | if (ctx->isOpenGLES()) { | - |
302 | | - |
303 | int features = QOpenGLFunctions::Multitexture | | - |
304 | QOpenGLFunctions::Shaders | | - |
305 | QOpenGLFunctions::Buffers | | - |
306 | QOpenGLFunctions::Framebuffers | | - |
307 | QOpenGLFunctions::BlendColor | | - |
308 | QOpenGLFunctions::BlendEquation | | - |
309 | QOpenGLFunctions::BlendEquationSeparate | | - |
310 | QOpenGLFunctions::BlendFuncSeparate | | - |
311 | QOpenGLFunctions::BlendSubtract | | - |
312 | QOpenGLFunctions::CompressedTextures | | - |
313 | QOpenGLFunctions::Multisample | | - |
314 | QOpenGLFunctions::StencilSeparate; | - |
315 | QOpenGLExtensionMatcher extensions; | - |
316 | if (extensions.match("GL_IMG_texture_npot")) | - |
317 | features |= QOpenGLFunctions::NPOTTextures; | - |
318 | if (extensions.match("GL_OES_texture_npot")) | - |
319 | features |= QOpenGLFunctions::NPOTTextures | | - |
320 | QOpenGLFunctions::NPOTTextureRepeat; | - |
321 | if (ctx->format().majorVersion() >= 3 || extensions.match("GL_EXT_texture_rg")) { | - |
322 | | - |
323 | const char *renderer = reinterpret_cast<const char *>(ctx->functions()->glGetString(GL_RENDERER)); | - |
324 | if (!(renderer && strstr(renderer, "Mesa"))) | - |
325 | features |= QOpenGLFunctions::TextureRGFormats; | - |
326 | } | - |
327 | if (ctx->format().majorVersion() >= 3) | - |
328 | features |= QOpenGLFunctions::MultipleRenderTargets; | - |
329 | return features; | - |
330 | } else { | - |
331 | | - |
332 | int features = QOpenGLFunctions::TextureRGFormats; | - |
333 | QSurfaceFormat format = QOpenGLContext::currentContext()->format(); | - |
334 | QOpenGLExtensionMatcher extensions; | - |
335 | | - |
336 | if (format.majorVersion() >= 3) | - |
337 | features |= QOpenGLFunctions::Framebuffers | QOpenGLFunctions::MultipleRenderTargets; | - |
338 | else if (extensions.match("GL_EXT_framebuffer_object") || extensions.match("GL_ARB_framebuffer_object")) | - |
339 | features |= QOpenGLFunctions::Framebuffers | QOpenGLFunctions::MultipleRenderTargets; | - |
340 | | - |
341 | if (format.majorVersion() >= 2) { | - |
342 | features |= QOpenGLFunctions::BlendColor | | - |
343 | QOpenGLFunctions::BlendEquation | | - |
344 | QOpenGLFunctions::BlendSubtract | | - |
345 | QOpenGLFunctions::Multitexture | | - |
346 | QOpenGLFunctions::CompressedTextures | | - |
347 | QOpenGLFunctions::Multisample | | - |
348 | QOpenGLFunctions::BlendFuncSeparate | | - |
349 | QOpenGLFunctions::Buffers | | - |
350 | QOpenGLFunctions::Shaders | | - |
351 | QOpenGLFunctions::StencilSeparate | | - |
352 | QOpenGLFunctions::BlendEquationSeparate | | - |
353 | QOpenGLFunctions::NPOTTextures | | - |
354 | QOpenGLFunctions::NPOTTextureRepeat; | - |
355 | } else { | - |
356 | | - |
357 | if (extensions.match("GL_ARB_multitexture")) | - |
358 | features |= QOpenGLFunctions::Multitexture; | - |
359 | if (extensions.match("GL_ARB_shader_objects")) | - |
360 | features |= QOpenGLFunctions::Shaders; | - |
361 | if (extensions.match("GL_EXT_blend_color")) | - |
362 | features |= QOpenGLFunctions::BlendColor; | - |
363 | if (extensions.match("GL_EXT_blend_equation_separate")) | - |
364 | features |= QOpenGLFunctions::BlendEquationSeparate; | - |
365 | if (extensions.match("GL_EXT_blend_subtract")) | - |
366 | features |= QOpenGLFunctions::BlendSubtract; | - |
367 | if (extensions.match("GL_EXT_blend_func_separate")) | - |
368 | features |= QOpenGLFunctions::BlendFuncSeparate; | - |
369 | if (extensions.match("GL_ARB_texture_compression")) | - |
370 | features |= QOpenGLFunctions::CompressedTextures; | - |
371 | if (extensions.match("GL_ARB_multisample")) | - |
372 | features |= QOpenGLFunctions::Multisample; | - |
373 | if (extensions.match("GL_ARB_texture_non_power_of_two")) | - |
374 | features |= QOpenGLFunctions::NPOTTextures | | - |
375 | QOpenGLFunctions::NPOTTextureRepeat; | - |
376 | } | - |
377 | | - |
378 | const QPair<int, int> version = format.version(); | - |
379 | if (version < qMakePair(3, 0) | - |
380 | || (version == qMakePair(3, 0) && format.testOption(QSurfaceFormat::DeprecatedFunctions)) | - |
381 | || (version == qMakePair(3, 1) && extensions.match("GL_ARB_compatibility")) | - |
382 | || (version >= qMakePair(3, 2) && format.profile() == QSurfaceFormat::CompatibilityProfile)) { | - |
383 | features |= QOpenGLFunctions::FixedFunctionPipeline; | - |
384 | } | - |
385 | return features; | - |
386 | } | - |
387 | } | - |
388 | | - |
389 | static int qt_gl_resolve_extensions() | - |
390 | { | - |
391 | int extensions = 0; | - |
392 | QOpenGLExtensionMatcher extensionMatcher; | - |
393 | QOpenGLContext *ctx = QOpenGLContext::currentContext(); | - |
394 | QSurfaceFormat format = ctx->format(); | - |
395 | | - |
396 | if (extensionMatcher.match("GL_EXT_bgra")) | - |
397 | extensions |= QOpenGLExtensions::BGRATextureFormat; | - |
398 | if (extensionMatcher.match("GL_ARB_texture_rectangle")) | - |
399 | extensions |= QOpenGLExtensions::TextureRectangle; | - |
400 | if (extensionMatcher.match("GL_ARB_texture_compression")) | - |
401 | extensions |= QOpenGLExtensions::TextureCompression; | - |
402 | if (extensionMatcher.match("GL_EXT_texture_compression_s3tc")) | - |
403 | extensions |= QOpenGLExtensions::DDSTextureCompression; | - |
404 | if (extensionMatcher.match("GL_OES_compressed_ETC1_RGB8_texture")) | - |
405 | extensions |= QOpenGLExtensions::ETC1TextureCompression; | - |
406 | if (extensionMatcher.match("GL_IMG_texture_compression_pvrtc")) | - |
407 | extensions |= QOpenGLExtensions::PVRTCTextureCompression; | - |
408 | if (extensionMatcher.match("GL_ARB_texture_mirrored_repeat")) | - |
409 | extensions |= QOpenGLExtensions::MirroredRepeat; | - |
410 | if (extensionMatcher.match("GL_EXT_stencil_two_side")) | - |
411 | extensions |= QOpenGLExtensions::StencilTwoSide; | - |
412 | if (extensionMatcher.match("GL_EXT_stencil_wrap")) | - |
413 | extensions |= QOpenGLExtensions::StencilWrap; | - |
414 | if (extensionMatcher.match("GL_NV_float_buffer")) | - |
415 | extensions |= QOpenGLExtensions::NVFloatBuffer; | - |
416 | if (extensionMatcher.match("GL_ARB_pixel_buffer_object")) | - |
417 | extensions |= QOpenGLExtensions::PixelBufferObject; | - |
418 | | - |
419 | if (ctx->isOpenGLES()) { | - |
420 | if (format.majorVersion() >= 2) | - |
421 | extensions |= QOpenGLExtensions::GenerateMipmap; | - |
422 | | - |
423 | if (format.majorVersion() >= 3) { | - |
424 | extensions |= QOpenGLExtensions::PackedDepthStencil | - |
425 | | QOpenGLExtensions::Depth24 | - |
426 | | QOpenGLExtensions::ElementIndexUint | - |
427 | | QOpenGLExtensions::MapBufferRange | - |
428 | | QOpenGLExtensions::FramebufferBlit | - |
429 | | QOpenGLExtensions::FramebufferMultisample | - |
430 | | QOpenGLExtensions::Sized8Formats; | - |
431 | } else { | - |
432 | | - |
433 | if (extensionMatcher.match("GL_OES_packed_depth_stencil")) | - |
434 | extensions |= QOpenGLExtensions::PackedDepthStencil; | - |
435 | if (extensionMatcher.match("GL_OES_depth24")) | - |
436 | extensions |= QOpenGLExtensions::Depth24; | - |
437 | if (extensionMatcher.match("GL_ANGLE_framebuffer_blit")) | - |
438 | extensions |= QOpenGLExtensions::FramebufferBlit; | - |
439 | if (extensionMatcher.match("GL_ANGLE_framebuffer_multisample")) | - |
440 | extensions |= QOpenGLExtensions::FramebufferMultisample; | - |
441 | if (extensionMatcher.match("GL_NV_framebuffer_blit")) | - |
442 | extensions |= QOpenGLExtensions::FramebufferBlit; | - |
443 | if (extensionMatcher.match("GL_NV_framebuffer_multisample")) | - |
444 | extensions |= QOpenGLExtensions::FramebufferMultisample; | - |
445 | if (extensionMatcher.match("GL_OES_rgb8_rgba8")) | - |
446 | extensions |= QOpenGLExtensions::Sized8Formats; | - |
447 | } | - |
448 | | - |
449 | if (extensionMatcher.match("GL_OES_mapbuffer")) | - |
450 | extensions |= QOpenGLExtensions::MapBuffer; | - |
451 | if (extensionMatcher.match("GL_OES_element_index_uint")) | - |
452 | extensions |= QOpenGLExtensions::ElementIndexUint; | - |
453 | | - |
454 | if (extensionMatcher.match("GL_IMG_texture_format_BGRA8888") || extensionMatcher.match("GL_EXT_texture_format_BGRA8888")) | - |
455 | extensions |= QOpenGLExtensions::BGRATextureFormat; | - |
456 | if (extensionMatcher.match("GL_EXT_discard_framebuffer")) | - |
457 | extensions |= QOpenGLExtensions::DiscardFramebuffer; | - |
458 | if (extensionMatcher.match("GL_EXT_texture_norm16")) | - |
459 | extensions |= QOpenGLExtensions::Sized16Formats; | - |
460 | } else { | - |
461 | extensions |= QOpenGLExtensions::ElementIndexUint | - |
462 | | QOpenGLExtensions::MapBuffer | - |
463 | | QOpenGLExtensions::Sized16Formats; | - |
464 | | - |
465 | if (format.version() >= qMakePair(1, 2)) | - |
466 | extensions |= QOpenGLExtensions::BGRATextureFormat; | - |
467 | | - |
468 | if (format.version() >= qMakePair(1, 4) || extensionMatcher.match("GL_SGIS_generate_mipmap")) | - |
469 | extensions |= QOpenGLExtensions::GenerateMipmap; | - |
470 | | - |
471 | if (format.majorVersion() >= 3 || extensionMatcher.match("GL_ARB_framebuffer_object")) { | - |
472 | extensions |= QOpenGLExtensions::FramebufferMultisample | - |
473 | | QOpenGLExtensions::FramebufferBlit | - |
474 | | QOpenGLExtensions::PackedDepthStencil | - |
475 | | QOpenGLExtensions::Sized8Formats; | - |
476 | } else { | - |
477 | | - |
478 | if (extensionMatcher.match("GL_EXT_framebuffer_multisample")) | - |
479 | extensions |= QOpenGLExtensions::FramebufferMultisample; | - |
480 | if (extensionMatcher.match("GL_EXT_framebuffer_blit")) | - |
481 | extensions |= QOpenGLExtensions::FramebufferBlit; | - |
482 | if (extensionMatcher.match("GL_EXT_packed_depth_stencil")) | - |
483 | extensions |= QOpenGLExtensions::PackedDepthStencil; | - |
484 | } | - |
485 | | - |
486 | if (format.version() >= qMakePair(3, 2) || extensionMatcher.match("GL_ARB_geometry_shader4")) | - |
487 | extensions |= QOpenGLExtensions::GeometryShaders; | - |
488 | | - |
489 | if (extensionMatcher.match("GL_ARB_map_buffer_range")) | - |
490 | extensions |= QOpenGLExtensions::MapBufferRange; | - |
491 | | - |
492 | if (extensionMatcher.match("GL_EXT_framebuffer_sRGB")) { | - |
493 | GLboolean srgbCapableFramebuffers = false; | - |
494 | ctx->functions()->glGetBooleanv(GL_FRAMEBUFFER_SRGB_CAPABLE_EXT, &srgbCapableFramebuffers); | - |
495 | if (srgbCapableFramebuffers) | - |
496 | extensions |= QOpenGLExtensions::SRGBFrameBuffer; | - |
497 | } | - |
498 | } | - |
499 | | - |
500 | return extensions; | - |
501 | } | - |
502 | | - |
503 | | - |
504 | | - |
505 | | - |
506 | | - |
507 | | - |
508 | | - |
509 | | - |
510 | | - |
511 | | - |
512 | QOpenGLFunctions::OpenGLFeatures QOpenGLFunctions::openGLFeatures() const | - |
513 | { | - |
514 | QOpenGLFunctionsPrivateEx *d = static_cast<QOpenGLFunctionsPrivateEx *>(d_ptr); | - |
515 | if (!d) | - |
516 | return 0; | - |
517 | if (d->m_features == -1) | - |
518 | d->m_features = qt_gl_resolve_features(); | - |
519 | return QOpenGLFunctions::OpenGLFeatures(d->m_features); | - |
520 | } | - |
521 | | - |
522 | | - |
523 | | - |
524 | | - |
525 | | - |
526 | | - |
527 | | - |
528 | | - |
529 | | - |
530 | | - |
531 | bool QOpenGLFunctions::hasOpenGLFeature(QOpenGLFunctions::OpenGLFeature feature) const | - |
532 | { | - |
533 | QOpenGLFunctionsPrivateEx *d = static_cast<QOpenGLFunctionsPrivateEx *>(d_ptr); | - |
534 | if (!d) | - |
535 | return false; | - |
536 | if (d->m_features == -1) | - |
537 | d->m_features = qt_gl_resolve_features(); | - |
538 | return (d->m_features & int(feature)) != 0; | - |
539 | } | - |
540 | | - |
541 | | - |
542 | | - |
543 | | - |
544 | | - |
545 | | - |
546 | | - |
547 | | - |
548 | | - |
549 | | - |
550 | QOpenGLExtensions::OpenGLExtensions QOpenGLExtensions::openGLExtensions() | - |
551 | { | - |
552 | QOpenGLFunctionsPrivateEx *d = static_cast<QOpenGLFunctionsPrivateEx *>(d_ptr); | - |
553 | if (!d) | - |
554 | return 0; | - |
555 | if (d->m_extensions == -1) | - |
556 | d->m_extensions = qt_gl_resolve_extensions(); | - |
557 | return QOpenGLExtensions::OpenGLExtensions(d->m_extensions); | - |
558 | } | - |
559 | | - |
560 | | - |
561 | | - |
562 | | - |
563 | | - |
564 | | - |
565 | | - |
566 | | - |
567 | | - |
568 | | - |
569 | bool QOpenGLExtensions::hasOpenGLExtension(QOpenGLExtensions::OpenGLExtension extension) const | - |
570 | { | - |
571 | QOpenGLFunctionsPrivateEx *d = static_cast<QOpenGLFunctionsPrivateEx *>(d_ptr); | - |
572 | if (!d) | - |
573 | return false; | - |
574 | if (d->m_extensions == -1) | - |
575 | d->m_extensions = qt_gl_resolve_extensions(); | - |
576 | return (d->m_extensions & int(extension)) != 0; | - |
577 | } | - |
578 | | - |
579 | | - |
580 | | - |
581 | | - |
582 | | - |
583 | | - |
584 | | - |
585 | | - |
586 | | - |
587 | | - |
588 | | - |
589 | | - |
590 | | - |
591 | | - |
592 | | - |
593 | | - |
594 | void QOpenGLFunctions::initializeOpenGLFunctions() | - |
595 | { | - |
596 | d_ptr = qt_gl_functions(); | - |
597 | } | - |
598 | | - |
599 | | - |
600 | | - |
601 | | - |
602 | | - |
603 | | - |
604 | | - |
605 | | - |
606 | | - |
607 | | - |
608 | | - |
609 | | - |
610 | | - |
611 | | - |
612 | | - |
613 | | - |
614 | | - |
615 | | - |
616 | | - |
617 | | - |
618 | | - |
619 | | - |
620 | | - |
621 | | - |
622 | | - |
623 | | - |
624 | | - |
625 | | - |
626 | | - |
627 | | - |
628 | | - |
629 | | - |
630 | | - |
631 | | - |
632 | | - |
633 | | - |
634 | | - |
635 | | - |
636 | | - |
637 | | - |
638 | | - |
639 | | - |
640 | | - |
641 | | - |
642 | | - |
643 | | - |
644 | | - |
645 | | - |
646 | | - |
647 | | - |
648 | | - |
649 | | - |
650 | | - |
651 | | - |
652 | | - |
653 | | - |
654 | | - |
655 | | - |
656 | | - |
657 | | - |
658 | | - |
659 | | - |
660 | | - |
661 | | - |
662 | | - |
663 | | - |
664 | | - |
665 | | - |
666 | | - |
667 | | - |
668 | | - |
669 | | - |
670 | | - |
671 | | - |
672 | | - |
673 | | - |
674 | | - |
675 | | - |
676 | | - |
677 | | - |
678 | | - |
679 | | - |
680 | | - |
681 | | - |
682 | | - |
683 | | - |
684 | | - |
685 | | - |
686 | | - |
687 | | - |
688 | | - |
689 | | - |
690 | | - |
691 | | - |
692 | | - |
693 | | - |
694 | | - |
695 | | - |
696 | | - |
697 | | - |
698 | | - |
699 | | - |
700 | | - |
701 | | - |
702 | | - |
703 | | - |
704 | | - |
705 | | - |
706 | | - |
707 | | - |
708 | | - |
709 | | - |
710 | | - |
711 | | - |
712 | | - |
713 | | - |
714 | | - |
715 | | - |
716 | | - |
717 | | - |
718 | | - |
719 | | - |
720 | | - |
721 | | - |
722 | | - |
723 | | - |
724 | | - |
725 | | - |
726 | | - |
727 | | - |
728 | | - |
729 | | - |
730 | | - |
731 | | - |
732 | | - |
733 | | - |
734 | | - |
735 | | - |
736 | | - |
737 | | - |
738 | | - |
739 | | - |
740 | | - |
741 | | - |
742 | | - |
743 | | - |
744 | | - |
745 | | - |
746 | | - |
747 | | - |
748 | | - |
749 | | - |
750 | | - |
751 | | - |
752 | | - |
753 | | - |
754 | | - |
755 | | - |
756 | | - |
757 | | - |
758 | | - |
759 | | - |
760 | | - |
761 | | - |
762 | | - |
763 | | - |
764 | | - |
765 | | - |
766 | | - |
767 | | - |
768 | | - |
769 | | - |
770 | | - |
771 | | - |
772 | | - |
773 | | - |
774 | | - |
775 | | - |
776 | | - |
777 | | - |
778 | | - |
779 | | - |
780 | | - |
781 | | - |
782 | | - |
783 | | - |
784 | | - |
785 | | - |
786 | | - |
787 | | - |
788 | | - |
789 | | - |
790 | | - |
791 | | - |
792 | | - |
793 | | - |
794 | | - |
795 | | - |
796 | | - |
797 | | - |
798 | | - |
799 | | - |
800 | | - |
801 | | - |
802 | | - |
803 | | - |
804 | | - |
805 | | - |
806 | | - |
807 | | - |
808 | | - |
809 | | - |
810 | | - |
811 | | - |
812 | | - |
813 | | - |
814 | | - |
815 | | - |
816 | | - |
817 | | - |
818 | | - |
819 | | - |
820 | | - |
821 | | - |
822 | | - |
823 | | - |
824 | | - |
825 | | - |
826 | | - |
827 | | - |
828 | | - |
829 | | - |
830 | | - |
831 | | - |
832 | | - |
833 | | - |
834 | | - |
835 | | - |
836 | | - |
837 | | - |
838 | | - |
839 | | - |
840 | | - |
841 | | - |
842 | | - |
843 | | - |
844 | | - |
845 | | - |
846 | | - |
847 | | - |
848 | | - |
849 | | - |
850 | | - |
851 | | - |
852 | | - |
853 | | - |
854 | | - |
855 | | - |
856 | | - |
857 | | - |
858 | | - |
859 | | - |
860 | | - |
861 | | - |
862 | | - |
863 | | - |
864 | | - |
865 | | - |
866 | | - |
867 | | - |
868 | | - |
869 | | - |
870 | | - |
871 | | - |
872 | | - |
873 | | - |
874 | | - |
875 | | - |
876 | | - |
877 | | - |
878 | | - |
879 | | - |
880 | | - |
881 | | - |
882 | | - |
883 | | - |
884 | | - |
885 | | - |
886 | | - |
887 | | - |
888 | | - |
889 | | - |
890 | | - |
891 | | - |
892 | | - |
893 | | - |
894 | | - |
895 | | - |
896 | | - |
897 | | - |
898 | | - |
899 | | - |
900 | | - |
901 | | - |
902 | | - |
903 | | - |
904 | | - |
905 | | - |
906 | | - |
907 | | - |
908 | | - |
909 | | - |
910 | | - |
911 | | - |
912 | | - |
913 | | - |
914 | | - |
915 | | - |
916 | | - |
917 | | - |
918 | | - |
919 | | - |
920 | | - |
921 | | - |
922 | | - |
923 | | - |
924 | | - |
925 | | - |
926 | | - |
927 | | - |
928 | | - |
929 | | - |
930 | | - |
931 | | - |
932 | | - |
933 | | - |
934 | | - |
935 | | - |
936 | | - |
937 | | - |
938 | | - |
939 | | - |
940 | | - |
941 | | - |
942 | | - |
943 | | - |
944 | | - |
945 | | - |
946 | | - |
947 | | - |
948 | | - |
949 | | - |
950 | | - |
951 | | - |
952 | | - |
953 | | - |
954 | | - |
955 | | - |
956 | | - |
957 | | - |
958 | | - |
959 | | - |
960 | | - |
961 | | - |
962 | | - |
963 | | - |
964 | | - |
965 | | - |
966 | | - |
967 | | - |
968 | | - |
969 | | - |
970 | | - |
971 | | - |
972 | | - |
973 | | - |
974 | | - |
975 | | - |
976 | | - |
977 | | - |
978 | | - |
979 | | - |
980 | | - |
981 | | - |
982 | | - |
983 | | - |
984 | | - |
985 | | - |
986 | | - |
987 | | - |
988 | | - |
989 | | - |
990 | | - |
991 | | - |
992 | | - |
993 | | - |
994 | | - |
995 | | - |
996 | | - |
997 | | - |
998 | | - |
999 | | - |
1000 | | - |
1001 | | - |
1002 | | - |
1003 | | - |
1004 | | - |
1005 | | - |
1006 | | - |
1007 | | - |
1008 | | - |
1009 | | - |
1010 | | - |
1011 | | - |
1012 | | - |
1013 | | - |
1014 | | - |
1015 | | - |
1016 | | - |
1017 | | - |
1018 | | - |
1019 | | - |
1020 | | - |
1021 | | - |
1022 | | - |
1023 | | - |
1024 | | - |
1025 | | - |
1026 | | - |
1027 | | - |
1028 | | - |
1029 | | - |
1030 | | - |
1031 | | - |
1032 | | - |
1033 | | - |
1034 | | - |
1035 | | - |
1036 | | - |
1037 | | - |
1038 | | - |
1039 | | - |
1040 | | - |
1041 | | - |
1042 | | - |
1043 | | - |
1044 | | - |
1045 | | - |
1046 | | - |
1047 | | - |
1048 | | - |
1049 | | - |
1050 | | - |
1051 | | - |
1052 | | - |
1053 | | - |
1054 | | - |
1055 | | - |
1056 | | - |
1057 | | - |
1058 | | - |
1059 | | - |
1060 | | - |
1061 | | - |
1062 | | - |
1063 | | - |
1064 | | - |
1065 | | - |
1066 | | - |
1067 | | - |
1068 | | - |
1069 | | - |
1070 | | - |
1071 | | - |
1072 | | - |
1073 | | - |
1074 | | - |
1075 | | - |
1076 | | - |
1077 | | - |
1078 | | - |
1079 | | - |
1080 | | - |
1081 | | - |
1082 | | - |
1083 | | - |
1084 | | - |
1085 | | - |
1086 | | - |
1087 | | - |
1088 | | - |
1089 | | - |
1090 | | - |
1091 | | - |
1092 | | - |
1093 | | - |
1094 | | - |
1095 | | - |
1096 | | - |
1097 | | - |
1098 | | - |
1099 | | - |
1100 | | - |
1101 | | - |
1102 | | - |
1103 | | - |
1104 | | - |
1105 | | - |
1106 | | - |
1107 | | - |
1108 | | - |
1109 | | - |
1110 | | - |
1111 | | - |
1112 | | - |
1113 | | - |
1114 | | - |
1115 | | - |
1116 | | - |
1117 | | - |
1118 | | - |
1119 | | - |
1120 | | - |
1121 | | - |
1122 | | - |
1123 | | - |
1124 | | - |
1125 | | - |
1126 | | - |
1127 | | - |
1128 | | - |
1129 | | - |
1130 | | - |
1131 | | - |
1132 | | - |
1133 | | - |
1134 | | - |
1135 | | - |
1136 | | - |
1137 | | - |
1138 | | - |
1139 | | - |
1140 | | - |
1141 | | - |
1142 | | - |
1143 | | - |
1144 | | - |
1145 | | - |
1146 | | - |
1147 | | - |
1148 | | - |
1149 | | - |
1150 | | - |
1151 | | - |
1152 | | - |
1153 | | - |
1154 | | - |
1155 | | - |
1156 | | - |
1157 | | - |
1158 | | - |
1159 | | - |
1160 | | - |
1161 | | - |
1162 | | - |
1163 | | - |
1164 | | - |
1165 | | - |
1166 | | - |
1167 | | - |
1168 | | - |
1169 | | - |
1170 | | - |
1171 | | - |
1172 | | - |
1173 | | - |
1174 | | - |
1175 | | - |
1176 | | - |
1177 | | - |
1178 | | - |
1179 | | - |
1180 | | - |
1181 | | - |
1182 | | - |
1183 | | - |
1184 | | - |
1185 | | - |
1186 | | - |
1187 | | - |
1188 | | - |
1189 | | - |
1190 | | - |
1191 | | - |
1192 | | - |
1193 | | - |
1194 | | - |
1195 | | - |
1196 | | - |
1197 | | - |
1198 | | - |
1199 | | - |
1200 | | - |
1201 | | - |
1202 | | - |
1203 | | - |
1204 | | - |
1205 | | - |
1206 | | - |
1207 | | - |
1208 | | - |
1209 | | - |
1210 | | - |
1211 | | - |
1212 | | - |
1213 | | - |
1214 | | - |
1215 | | - |
1216 | | - |
1217 | | - |
1218 | | - |
1219 | | - |
1220 | | - |
1221 | | - |
1222 | | - |
1223 | | - |
1224 | | - |
1225 | | - |
1226 | | - |
1227 | | - |
1228 | | - |
1229 | | - |
1230 | | - |
1231 | | - |
1232 | | - |
1233 | | - |
1234 | | - |
1235 | | - |
1236 | | - |
1237 | | - |
1238 | | - |
1239 | | - |
1240 | | - |
1241 | | - |
1242 | | - |
1243 | | - |
1244 | | - |
1245 | | - |
1246 | | - |
1247 | | - |
1248 | | - |
1249 | | - |
1250 | | - |
1251 | | - |
1252 | | - |
1253 | | - |
1254 | | - |
1255 | | - |
1256 | | - |
1257 | | - |
1258 | | - |
1259 | | - |
1260 | | - |
1261 | | - |
1262 | | - |
1263 | | - |
1264 | | - |
1265 | | - |
1266 | | - |
1267 | | - |
1268 | | - |
1269 | | - |
1270 | | - |
1271 | | - |
1272 | | - |
1273 | | - |
1274 | | - |
1275 | | - |
1276 | | - |
1277 | | - |
1278 | | - |
1279 | | - |
1280 | | - |
1281 | | - |
1282 | | - |
1283 | | - |
1284 | | - |
1285 | | - |
1286 | | - |
1287 | | - |
1288 | | - |
1289 | | - |
1290 | | - |
1291 | | - |
1292 | | - |
1293 | | - |
1294 | | - |
1295 | | - |
1296 | | - |
1297 | | - |
1298 | | - |
1299 | | - |
1300 | | - |
1301 | | - |
1302 | | - |
1303 | | - |
1304 | | - |
1305 | | - |
1306 | | - |
1307 | | - |
1308 | | - |
1309 | | - |
1310 | | - |
1311 | | - |
1312 | | - |
1313 | | - |
1314 | | - |
1315 | | - |
1316 | | - |
1317 | | - |
1318 | | - |
1319 | | - |
1320 | | - |
1321 | | - |
1322 | | - |
1323 | | - |
1324 | | - |
1325 | | - |
1326 | | - |
1327 | | - |
1328 | | - |
1329 | | - |
1330 | | - |
1331 | | - |
1332 | | - |
1333 | | - |
1334 | | - |
1335 | | - |
1336 | | - |
1337 | | - |
1338 | | - |
1339 | | - |
1340 | | - |
1341 | | - |
1342 | | - |
1343 | | - |
1344 | | - |
1345 | | - |
1346 | | - |
1347 | | - |
1348 | | - |
1349 | | - |
1350 | | - |
1351 | | - |
1352 | | - |
1353 | | - |
1354 | | - |
1355 | | - |
1356 | | - |
1357 | | - |
1358 | | - |
1359 | | - |
1360 | | - |
1361 | | - |
1362 | | - |
1363 | | - |
1364 | | - |
1365 | | - |
1366 | | - |
1367 | | - |
1368 | | - |
1369 | | - |
1370 | | - |
1371 | | - |
1372 | | - |
1373 | | - |
1374 | | - |
1375 | | - |
1376 | | - |
1377 | | - |
1378 | | - |
1379 | | - |
1380 | | - |
1381 | | - |
1382 | | - |
1383 | | - |
1384 | | - |
1385 | | - |
1386 | | - |
1387 | | - |
1388 | | - |
1389 | | - |
1390 | | - |
1391 | | - |
1392 | | - |
1393 | | - |
1394 | | - |
1395 | | - |
1396 | | - |
1397 | | - |
1398 | | - |
1399 | | - |
1400 | | - |
1401 | | - |
1402 | | - |
1403 | | - |
1404 | | - |
1405 | | - |
1406 | | - |
1407 | | - |
1408 | | - |
1409 | | - |
1410 | | - |
1411 | | - |
1412 | | - |
1413 | | - |
1414 | | - |
1415 | | - |
1416 | | - |
1417 | | - |
1418 | | - |
1419 | | - |
1420 | | - |
1421 | | - |
1422 | | - |
1423 | | - |
1424 | | - |
1425 | | - |
1426 | | - |
1427 | | - |
1428 | | - |
1429 | | - |
1430 | | - |
1431 | | - |
1432 | | - |
1433 | | - |
1434 | | - |
1435 | | - |
1436 | | - |
1437 | | - |
1438 | | - |
1439 | | - |
1440 | | - |
1441 | | - |
1442 | | - |
1443 | | - |
1444 | | - |
1445 | | - |
1446 | | - |
1447 | | - |
1448 | | - |
1449 | | - |
1450 | | - |
1451 | | - |
1452 | | - |
1453 | | - |
1454 | | - |
1455 | | - |
1456 | | - |
1457 | | - |
1458 | | - |
1459 | | - |
1460 | | - |
1461 | | - |
1462 | | - |
1463 | | - |
1464 | | - |
1465 | | - |
1466 | | - |
1467 | | - |
1468 | | - |
1469 | | - |
1470 | | - |
1471 | | - |
1472 | | - |
1473 | | - |
1474 | | - |
1475 | | - |
1476 | | - |
1477 | | - |
1478 | | - |
1479 | | - |
1480 | | - |
1481 | | - |
1482 | | - |
1483 | | - |
1484 | | - |
1485 | | - |
1486 | | - |
1487 | | - |
1488 | | - |
1489 | | - |
1490 | | - |
1491 | | - |
1492 | | - |
1493 | | - |
1494 | | - |
1495 | | - |
1496 | | - |
1497 | | - |
1498 | | - |
1499 | | - |
1500 | | - |
1501 | | - |
1502 | | - |
1503 | | - |
1504 | | - |
1505 | | - |
1506 | | - |
1507 | | - |
1508 | | - |
1509 | | - |
1510 | | - |
1511 | | - |
1512 | | - |
1513 | | - |
1514 | | - |
1515 | | - |
1516 | | - |
1517 | | - |
1518 | | - |
1519 | | - |
1520 | | - |
1521 | | - |
1522 | | - |
1523 | | - |
1524 | | - |
1525 | | - |
1526 | | - |
1527 | | - |
1528 | | - |
1529 | | - |
1530 | | - |
1531 | | - |
1532 | | - |
1533 | | - |
1534 | | - |
1535 | | - |
1536 | | - |
1537 | | - |
1538 | | - |
1539 | | - |
1540 | | - |
1541 | | - |
1542 | | - |
1543 | | - |
1544 | | - |
1545 | | - |
1546 | | - |
1547 | | - |
1548 | | - |
1549 | | - |
1550 | | - |
1551 | | - |
1552 | | - |
1553 | | - |
1554 | | - |
1555 | | - |
1556 | | - |
1557 | | - |
1558 | | - |
1559 | | - |
1560 | | - |
1561 | | - |
1562 | | - |
1563 | | - |
1564 | | - |
1565 | | - |
1566 | | - |
1567 | | - |
1568 | | - |
1569 | | - |
1570 | | - |
1571 | | - |
1572 | | - |
1573 | | - |
1574 | | - |
1575 | | - |
1576 | | - |
1577 | | - |
1578 | | - |
1579 | | - |
1580 | | - |
1581 | | - |
1582 | | - |
1583 | | - |
1584 | | - |
1585 | | - |
1586 | | - |
1587 | | - |
1588 | | - |
1589 | | - |
1590 | | - |
1591 | | - |
1592 | | - |
1593 | | - |
1594 | | - |
1595 | | - |
1596 | | - |
1597 | | - |
1598 | | - |
1599 | | - |
1600 | | - |
1601 | | - |
1602 | | - |
1603 | | - |
1604 | | - |
1605 | | - |
1606 | | - |
1607 | | - |
1608 | | - |
1609 | | - |
1610 | | - |
1611 | | - |
1612 | | - |
1613 | | - |
1614 | | - |
1615 | | - |
1616 | | - |
1617 | | - |
1618 | | - |
1619 | | - |
1620 | | - |
1621 | | - |
1622 | | - |
1623 | | - |
1624 | | - |
1625 | | - |
1626 | | - |
1627 | | - |
1628 | | - |
1629 | | - |
1630 | | - |
1631 | | - |
1632 | | - |
1633 | | - |
1634 | | - |
1635 | | - |
1636 | | - |
1637 | | - |
1638 | | - |
1639 | | - |
1640 | | - |
1641 | | - |
1642 | | - |
1643 | | - |
1644 | | - |
1645 | | - |
1646 | | - |
1647 | | - |
1648 | | - |
1649 | | - |
1650 | | - |
1651 | | - |
1652 | | - |
1653 | | - |
1654 | | - |
1655 | | - |
1656 | | - |
1657 | | - |
1658 | | - |
1659 | | - |
1660 | | - |
1661 | | - |
1662 | | - |
1663 | | - |
1664 | | - |
1665 | | - |
1666 | | - |
1667 | | - |
1668 | | - |
1669 | | - |
1670 | | - |
1671 | | - |
1672 | | - |
1673 | | - |
1674 | | - |
1675 | | - |
1676 | | - |
1677 | | - |
1678 | | - |
1679 | | - |
1680 | | - |
1681 | | - |
1682 | | - |
1683 | | - |
1684 | | - |
1685 | | - |
1686 | | - |
1687 | | - |
1688 | | - |
1689 | | - |
1690 | | - |
1691 | | - |
1692 | | - |
1693 | | - |
1694 | | - |
1695 | | - |
1696 | | - |
1697 | | - |
1698 | | - |
1699 | | - |
1700 | | - |
1701 | | - |
1702 | | - |
1703 | | - |
1704 | | - |
1705 | | - |
1706 | | - |
1707 | | - |
1708 | | - |
1709 | | - |
1710 | | - |
1711 | | - |
1712 | | - |
1713 | | - |
1714 | | - |
1715 | | - |
1716 | | - |
1717 | | - |
1718 | | - |
1719 | | - |
1720 | | - |
1721 | | - |
1722 | | - |
1723 | | - |
1724 | | - |
1725 | | - |
1726 | | - |
1727 | | - |
1728 | | - |
1729 | | - |
1730 | | - |
1731 | | - |
1732 | | - |
1733 | | - |
1734 | | - |
1735 | | - |
1736 | | - |
1737 | | - |
1738 | | - |
1739 | | - |
1740 | | - |
1741 | | - |
1742 | | - |
1743 | | - |
1744 | | - |
1745 | | - |
1746 | | - |
1747 | | - |
1748 | | - |
1749 | | - |
1750 | | - |
1751 | | - |
1752 | | - |
1753 | | - |
1754 | | - |
1755 | | - |
1756 | | - |
1757 | | - |
1758 | | - |
1759 | | - |
1760 | | - |
1761 | | - |
1762 | | - |
1763 | | - |
1764 | | - |
1765 | | - |
1766 | | - |
1767 | | - |
1768 | | - |
1769 | | - |
1770 | | - |
1771 | | - |
1772 | | - |
1773 | | - |
1774 | | - |
1775 | | - |
1776 | | - |
1777 | | - |
1778 | | - |
1779 | | - |
1780 | | - |
1781 | | - |
1782 | | - |
1783 | | - |
1784 | | - |
1785 | | - |
1786 | | - |
1787 | | - |
1788 | | - |
1789 | | - |
1790 | | - |
1791 | | - |
1792 | | - |
1793 | | - |
1794 | | - |
1795 | | - |
1796 | | - |
1797 | | - |
1798 | | - |
1799 | | - |
1800 | | - |
1801 | | - |
1802 | | - |
1803 | | - |
1804 | | - |
1805 | | - |
1806 | | - |
1807 | | - |
1808 | | - |
1809 | | - |
1810 | | - |
1811 | | - |
1812 | | - |
1813 | | - |
1814 | | - |
1815 | | - |
1816 | | - |
1817 | | - |
1818 | | - |
1819 | | - |
1820 | | - |
1821 | | - |
1822 | | - |
1823 | | - |
1824 | | - |
1825 | | - |
1826 | | - |
1827 | | - |
1828 | | - |
1829 | | - |
1830 | | - |
1831 | | - |
1832 | | - |
1833 | | - |
1834 | | - |
1835 | | - |
1836 | | - |
1837 | | - |
1838 | | - |
1839 | | - |
1840 | | - |
1841 | | - |
1842 | | - |
1843 | | - |
1844 | | - |
1845 | | - |
1846 | | - |
1847 | | - |
1848 | | - |
1849 | | - |
1850 | | - |
1851 | | - |
1852 | | - |
1853 | | - |
1854 | | - |
1855 | | - |
1856 | | - |
1857 | | - |
1858 | | - |
1859 | | - |
1860 | | - |
1861 | | - |
1862 | | - |
1863 | | - |
1864 | | - |
1865 | | - |
1866 | | - |
1867 | | - |
1868 | | - |
1869 | | - |
1870 | | - |
1871 | | - |
1872 | | - |
1873 | | - |
1874 | | - |
1875 | | - |
1876 | | - |
1877 | | - |
1878 | | - |
1879 | | - |
1880 | | - |
1881 | | - |
1882 | | - |
1883 | | - |
1884 | | - |
1885 | | - |
1886 | | - |
1887 | | - |
1888 | | - |
1889 | | - |
1890 | | - |
1891 | | - |
1892 | | - |
1893 | | - |
1894 | | - |
1895 | | - |
1896 | | - |
1897 | | - |
1898 | | - |
1899 | | - |
1900 | | - |
1901 | | - |
1902 | | - |
1903 | | - |
1904 | | - |
1905 | | - |
1906 | | - |
1907 | | - |
1908 | | - |
1909 | | - |
1910 | | - |
1911 | | - |
1912 | | - |
1913 | | - |
1914 | | - |
1915 | | - |
1916 | | - |
1917 | | - |
1918 | | - |
1919 | | - |
1920 | | - |
1921 | | - |
1922 | | - |
1923 | | - |
1924 | | - |
1925 | | - |
1926 | | - |
1927 | | - |
1928 | | - |
1929 | | - |
1930 | | - |
1931 | | - |
1932 | | - |
1933 | | - |
1934 | | - |
1935 | | - |
1936 | | - |
1937 | | - |
1938 | | - |
1939 | | - |
1940 | | - |
1941 | | - |
1942 | | - |
1943 | | - |
1944 | | - |
1945 | | - |
1946 | | - |
1947 | | - |
1948 | | - |
1949 | | - |
1950 | | - |
1951 | | - |
1952 | | - |
1953 | | - |
1954 | | - |
1955 | | - |
1956 | | - |
1957 | | - |
1958 | | - |
1959 | | - |
1960 | | - |
1961 | | - |
1962 | | - |
1963 | | - |
1964 | | - |
1965 | | - |
1966 | | - |
1967 | | - |
1968 | | - |
1969 | | - |
1970 | | - |
1971 | | - |
1972 | | - |
1973 | | - |
1974 | | - |
1975 | | - |
1976 | | - |
1977 | | - |
1978 | | - |
1979 | | - |
1980 | | - |
1981 | | - |
1982 | | - |
1983 | | - |
1984 | | - |
1985 | | - |
1986 | | - |
1987 | | - |
1988 | | - |
1989 | | - |
1990 | | - |
1991 | | - |
1992 | | - |
1993 | | - |
1994 | | - |
1995 | | - |
1996 | | - |
1997 | | - |
1998 | | - |
1999 | | - |
2000 | | - |
2001 | | - |
2002 | | - |
2003 | | - |
2004 | | - |
2005 | | - |
2006 | | - |
2007 | | - |
2008 | | - |
2009 | | - |
2010 | | - |
2011 | | - |
2012 | | - |
2013 | | - |
2014 | | - |
2015 | | - |
2016 | | - |
2017 | | - |
2018 | | - |
2019 | | - |
2020 | | - |
2021 | | - |
2022 | | - |
2023 | | - |
2024 | | - |
2025 | | - |
2026 | | - |
2027 | | - |
2028 | | - |
2029 | | - |
2030 | | - |
2031 | | - |
2032 | | - |
2033 | | - |
2034 | | - |
2035 | | - |
2036 | | - |
2037 | | - |
2038 | | - |
2039 | | - |
2040 | | - |
2041 | | - |
2042 | | - |
2043 | | - |
2044 | | - |
2045 | | - |
2046 | | - |
2047 | | - |
2048 | | - |
2049 | | - |
2050 | | - |
2051 | | - |
2052 | | - |
2053 | | - |
2054 | | - |
2055 | | - |
2056 | | - |
2057 | | - |
2058 | | - |
2059 | | - |
2060 | | - |
2061 | | - |
2062 | | - |
2063 | | - |
2064 | | - |
2065 | | - |
2066 | | - |
2067 | | - |
2068 | | - |
2069 | | - |
2070 | | - |
2071 | | - |
2072 | | - |
2073 | | - |
2074 | | - |
2075 | | - |
2076 | | - |
2077 | | - |
2078 | | - |
2079 | | - |
2080 | | - |
2081 | | - |
2082 | | - |
2083 | | - |
2084 | | - |
2085 | | - |
2086 | | - |
2087 | | - |
2088 | | - |
2089 | | - |
2090 | | - |
2091 | | - |
2092 | | - |
2093 | | - |
2094 | | - |
2095 | | - |
2096 | | - |
2097 | | - |
2098 | | - |
2099 | | - |
2100 | | - |
2101 | | - |
2102 | | - |
2103 | namespace { | - |
| | |
| enum ResolvePolicy | |
| { | |
| ResolveOES = 0x1, | |
| ResolveEXT = 0x2, | |
| ResolveANGLE = 0x4, | |
| ResolveNV = 0x8 | |
| }; | |
| | |
| template <typename Base, typename FuncType, int Policy, typename ReturnType> | |
| class Resolver | |
| { | |
| public: | |
| Resolver(FuncType Base::*func, FuncType fallback, const char *name, const char *alternateName = 0) | |
| : funcPointerName(func) | |
| , fallbackFuncPointer(fallback) | |
| , funcName(name) | |
| , alternateFuncName(alternateName) | |
| { | |
| } | |
| | |
| ReturnType operator()(); | |
| | |
| template <typename P1> | |
| ReturnType operator()(P1 p1); | |
| | |
| template <typename P1, typename P2> | |
| ReturnType operator()(P1 p1, P2 p2); | |
| | |
| template <typename P1, typename P2, typename P3> | |
| ReturnType operator()(P1 p1, P2 p2, P3 p3); | |
| | |
| template <typename P1, typename P2, typename P3, typename P4> | |
| ReturnType operator()(P1 p1, P2 p2, P3 p3, P4 p4); | |
| | |
| template <typename P1, typename P2, typename P3, typename P4, typename P5> | |
| ReturnType operator()(P1 p1, P2 p2, P3 p3, P4 p4, P5 p5); | |
| | |
| template <typename P1, typename P2, typename P3, typename P4, typename P5, typename P6> | |
| ReturnType operator()(P1 p1, P2 p2, P3 p3, P4 p4, P5 p5, P6 p6); | |
| | |
| template <typename P1, typename P2, typename P3, typename P4, typename P5, typename P6, typename P7> | |
| ReturnType operator()(P1 p1, P2 p2, P3 p3, P4 p4, P5 p5, P6 p6, P7 p7); | |
| | |
| template <typename P1, typename P2, typename P3, typename P4, typename P5, typename P6, typename P7, typename P8> | |
| ReturnType operator()(P1 p1, P2 p2, P3 p3, P4 p4, P5 p5, P6 p6, P7 p7, P8 p8); | |
| | |
| template <typename P1, typename P2, typename P3, typename P4, typename P5, typename P6, typename P7, typename P8, typename P9> | |
| ReturnType operator()(P1 p1, P2 p2, P3 p3, P4 p4, P5 p5, P6 p6, P7 p7, P8 p8, P9 p9); | |
| | |
| template <typename P1, typename P2, typename P3, typename P4, typename P5, typename P6, typename P7, typename P8, typename P9, typename P10> | |
| ReturnType operator()(P1 p1, P2 p2, P3 p3, P4 p4, P5 p5, P6 p6, P7 p7, P8 p8, P9 p9, P10 p10); | |
| | |
| template <typename P1, typename P2, typename P3, typename P4, typename P5, typename P6, typename P7, typename P8, typename P9, typename P10, typename P11> | |
| ReturnType operator()(P1 p1, P2 p2, P3 p3, P4 p4, P5 p5, P6 p6, P7 p7, P8 p8, P9 p9, P10 p10, P11 p11); | |
| | |
| private: | |
| FuncType Base::*funcPointerName; | |
| FuncType fallbackFuncPointer; | |
| QByteArray funcName; | |
| QByteArray alternateFuncName; | |
| }; | |
| | |
| template <typename Base, typename FuncType, int Policy> | |
| class Resolver<Base, FuncType, Policy, void>{ | |
2104 | | - |
| public: | |
| Resolver | |
2106 | | - |
2107 | | - |
2108 | static QFunctionPointer getProcAddress(FuncType Base::*func, FuncType fallback, const charQOpenGLContext *namecontext, const char *alternateName = 0) | - |
| : funcPointerName(func) | |
| , fallbackFuncPointer(fallback) | |
| , funcName(name) | |
| , alternateFuncName(alternateName) | |
| { | |
| } | |
| | |
| void operator()(); | |
| | |
| template <typename P1> | |
| void operator()(P1 p1); | |
| | |
| template <typename P1, typename P2> | |
| void operator()(P1 p1, P2 p2); | |
| | |
| template <typename P1, typename P2, typename P3> | |
| void operator()(P1 p1, P2 p2, P3 p3); | |
| | |
| template <typename P1, typename P2, typename P3, typename P4> | |
| void operator()(P1 p1, P2 p2, P3 p3, P4 p4); | |
| | |
| template <typename P1, typename P2, typename P3, typename P4, typename P5> | |
| void operator()(P1 p1, P2 p2, P3 p3, P4 p4, P5 p5); | |
| | |
| template <typename P1, typename P2, typename P3, typename P4, typename P5, typename P6> | |
| void operator()(P1 p1, P2 p2, P3 p3, P4 p4, P5 p5, P6 p6); | |
| | |
| template <typename P1, typename P2, typename P3, typename P4, typename P5, typename P6, typename P7> | |
| void operator()(P1 p1, P2 p2, P3 p3, P4 p4, P5 p5, P6 p6, P7 p7); | |
| | |
| template <typename P1, typename P2, typename P3, typename P4, typename P5, typename P6, typename P7, typename P8> | |
| void operator()(P1 p1, P2 p2, P3 p3, P4 p4, P5 p5, P6 p6, P7 p7, P8 p8); | |
| | |
| template <typename P1, typename P2, typename P3, typename P4, typename P5, typename P6, typename P7, typename P8, typename P9> | |
| void operator()(P1 p1, P2 p2, P3 p3, P4 p4, P5 p5, P6 p6, P7 p7, P8 p8, P9 p9); | |
| | |
| template <typename P1, typename P2, typename P3, typename P4, typename P5, typename P6, typename P7, typename P8, typename P9, typename P10> | |
| void operator()(P1 p1, P2 p2, P3 p3, P4 p4, P5 p5, P6 p6, P7 p7, P8 p8, P9 p9, P10 p10); | |
| | |
| template <typename P1, typename P2, typename P3, typename P4, typename P5, typename P6, typename P7, typename P8, typename P9, typename P10, typename P11> | |
| void operator()(P1 p1, P2 p2, P3 p3, P4 p4, P5 p5, P6 p6, P7 p7, P8 p8, P9 p9, P10 p10, P11 p11); | |
| | |
| private: | |
| FuncType Base::*funcPointerName; | |
| FuncType fallbackFuncPointer; | |
| QByteArray funcName; | |
| QByteArray alternateFuncName; | |
| }; | |
| | |
| #define RESOLVER_COMMON \ | |
| QOpenGLContext *context = QOpenGLContext::currentContext(); \ | |
| Base*funcs = qt_gl_functions(context); \ | |
| \ | |
| FuncType old = funcs->*funcPointerName; \ | |
| \ | |
| funcs->*funcPointerName = (FuncType)context->getProcAddress(funcName); \ | |
| \ | |
| if ((Policy & ResolveOES) && !(funcs->*funcPointerName)) \ | |
| funcs->*funcPointerName = (FuncType)context->getProcAddress(funcName + "OES"); \ | |
| \ | |
| if (!(funcs->*funcPointerName)) \ | |
| funcs->*funcPointerName = (FuncType)context->getProcAddress(funcName + "ARB"); \ | |
| \ | |
| if ((Policy & ResolveEXT) && !(funcs->*funcPointerName)) \ | |
| funcs->*funcPointerName = (FuncType)context->getProcAddress(funcName + "EXT"); \ | |
| \ | |
| if ((Policy & ResolveANGLE) && !(funcs->*funcPointerName)) \ | |
| funcs->*funcPointerName = (FuncType)context->getProcAddress(funcName+ "ANGLE"); \ | |
| \ | |
| if ((Policy & ResolveNV) && !(funcs->*funcPointerName)) \ | |
| funcs->*funcPointerName = (FuncType) | |
| context->getProcAddress(funcName + "NV"); \ | |
| \ | |
| if (!alternateFuncName.isEmpty() && !(funcs->*funcPointerName)){ | |
2110 | \ | - |
| funcs->*funcPointerName = (FuncType)context->getProcAddress(alternateFuncName); \ | |
| \ | |
| if ((Policy & ResolveOES) && !(funcs->*funcPointerName)) \ | |
| funcs->*funcPointerName = (FuncType)context->getProcAddress(alternateFuncName + "OES"); \ | |
| \ | |
| if (!(funcs->*funcPointerName)) \ | |
| funcs->*funcPointerName = (FuncType)context->getProcAddress(alternateFuncName + "ARB"); \ | |
| \ | |
| if ((Policy & ResolveEXT) && !(funcs->*funcPointerName)) \ | |
| funcs->*funcPointerName = (FuncType)context->getProcAddress(alternateFuncName + "EXT"); \ | |
| \ | |
| if ((Policy & ResolveANGLE) && !(funcs->*funcPointerName)) \ | |
| funcs->*funcPointerName = (FuncType)context->getProcAddress(funcName + "ANGLE"); \ | |
| \ | |
| if ((Policy & ResolveNV) && !(funcs->*funcPointerName)) \ | |
| funcs->*funcPointerNameQFunctionPointer function = (FuncType)context->getProcAddress(funcName+ "NV"); | |
2111 | | - |
2112 | \ | - |
| } | |
| | |
| #define RESOLVER_COMMON_NON_VOID \ | |
| RESOLVER_COMMON \ | |
| \ | |
| if (!(funcs->*funcPointerName)) { \ | |
| if (fallbackFuncPointer) { \ | |
| funcs->*funcPointerName = fallbackFuncPointer; \ | |
| } elsestatic const struct { | |
2113 | \ | - |
| funcs->*funcPointerName = oldconst char *name; | |
2114 | \ | - |
| return ReturnType(); \ | |
| } \ | |
| } | |
| | |
| #define RESOLVER_COMMON_VOID \ | |
| RESOLVER_COMMON \ | |
| \ | |
| if (!(funcs->*funcPointerName)) { \ | |
| if (fallbackFuncPointer) { \ | |
| funcs->*funcPointerName = fallbackFuncPointerint len; \ | |
2115 | } else { \ | - |
| funcs->*funcPointerNameextensions[] = old; \ | |
| return; \ | |
| } \ | |
| } | |
| | |
| template <typename Base, typename FuncType, int Policy, typename ReturnType> | |
| ReturnType Resolver<Base, FuncType, Policy, ReturnType>::operator()() | |
| { | |
| RESOLVER_COMMON_NON_VOID | |
| | |
| return (funcs->*funcPointerName)(); | |
| } | |
| | |
| template <typename Base, typename FuncType, int Policy, typename ReturnType> template <typename P1> | |
| ReturnType Resolver<Base, FuncType, Policy, ReturnType>::operator()(P1 p1) | |
| { | |
| RESOLVER_COMMON_NON_VOID | |
| | |
| return (funcs->*funcPointerName)(p1); | |
| } | |
| | |
| template <typename Base, typename FuncType, int Policy, typename ReturnType> template <typename P1, typename P2> | |
| ReturnType Resolver<Base, FuncType, Policy, ReturnType>::operator()(P1 p1, P2 p2) | |
| { | |
| RESOLVER_COMMON_NON_VOID | |
| | |
| return (funcs->*funcPointerName)(p1, p2); | |
| } | |
| | |
| template <typename Base, typename FuncType, int Policy, typename ReturnType> template <typename P1, typename P2, typename P3> | |
| ReturnType Resolver<Base, FuncType, Policy, ReturnType>::operator()(P1 p1, P2 p2, P3 p3) | |
| { | |
| RESOLVER_COMMON_NON_VOID | |
| | |
| return (funcs->*funcPointerName)(p1, p2, p3); | |
| } | |
| | |
| template <typename Base, typename FuncType, int Policy, typename ReturnType> template <typename P1, typename P2, typename P3, typename P4> | |
| ReturnType Resolver<Base, FuncType, Policy, ReturnType>::operator()(P1 p1, P2 p2, P3 p3, P4 p4) | |
| { | |
| RESOLVER_COMMON_NON_VOID | |
| | |
| return (funcs->*funcPointerName)(p1, p2, p3, p4); | |
| } | |
| | |
| template <typename Base, typename FuncType, int Policy, typename ReturnType> template <typename P1, typename P2, typename P3, typename P4, typename P5> | |
| ReturnType Resolver<Base, FuncType, Policy, ReturnType>::operator()(P1 p1, P2 p2, P3 p3, P4 p4, P5 p5) | |
| { | |
| RESOLVER_COMMON_NON_VOID | |
| | |
| return (funcs->*funcPointerName)(p1, p2, p3, p4, p5); | |
| } | |
| | |
| template <typename Base, typename FuncType, int Policy, typename ReturnType> template <typename P1, typename P2, typename P3, typename P4, typename P5, typename P6> | |
| ReturnType Resolver<Base, FuncType, Policy, ReturnType>::operator()(P1 p1, P2 p2, P3 p3, P4 p4, P5 p5, P6 p6) | |
| { | |
| RESOLVER_COMMON_NON_VOID | |
| | |
| return (funcs->*funcPointerName)(p1, p2, p3, p4, p5, p6); | |
| } | |
| | |
| template <typename Base, typename FuncType, int Policy, typename ReturnType> template <typename P1, typename P2, typename P3, typename P4, typename P5, typename P6, typename P7> | |
| ReturnType Resolver<Base, FuncType, Policy, ReturnType>::operator()(P1 p1, P2 p2, P3 p3, P4 p4, P5 p5, P6 p6, P7 p7){ | |
2116 | RESOLVER_COMMON_NON_VOID | - |
| | |
| return (funcs->*funcPointerName)(p1, p2, p3, p4, p5, p6, p7); | |
| } | |
| | |
| template <typename Base, typename FuncType, int Policy, typename ReturnType> template <typename P1, typename P2, typename P3, typename P4, typename P5, typename P6, typename P7, typename P8> | |
| ReturnType Resolver<Base, FuncType, Policy, ReturnType>::operator()(P1 p1, P2 p2, P3 p3, P4 p4, P5 p5, P6 p6, P7 p7, P8 p8){RESOLVER_COMMON_NON_VOID | |
| | |
| return (funcs->*funcPointerName)(p1, p2, p3, p4, p5, p6, p7, p8); | |
| } | |
| | |
| template <typename Base, typename FuncType, int Policy, typename ReturnType> template <typename P1, typename P2, typename P3, typename P4, typename P5, typename P6, typename P7, typename P8, typename P9> | |
| ReturnType Resolver<Base, FuncType, Policy, ReturnType>::operator()(P1 p1, P2 p2, P3 p3, P4 p4, P5 p5, P6 p6, P7 p7, P8 p8 "ARB", P9 p9)4 }, | |
2117 | {RESOLVER_COMMON_NON_VOID | - |
| | |
| return (funcs->*funcPointerName)(p1, p2, p3, p4, p5, p6, p7, p8, p9); | |
| } | |
| | |
| template <typename Base, typename FuncType, int Policy, typename ReturnType> template <typename P1, typename P2, typename P3, typename P4, typename P5, typename P6, typename P7, typename P8, typename P9, typename P10> | |
| ReturnType Resolver<Base, FuncType, Policy, ReturnType>::operator()(P1 p1, P2 p2, P3 p3, P4 p4, P5 p5, P6 p6, P7 p7, P8 p8, P9 p9 "OES", P10 p10)4 }, | |
2118 | {RESOLVER_COMMON_NON_VOID | - |
| | |
| return (funcs->*funcPointerName)(p1, p2, p3, p4, p5, p6, p7, p8, p9, p10); | |
| } | |
| | |
| template <typename Base, typename FuncType, int Policy> | |
| void Resolver<Base, FuncType, Policy "EXT", void>::operator()()4 }, | |
2119 | {RESOLVER_COMMON_VOID | - |
| | |
| (funcs->*funcPointerName)(); | |
| } | |
| | |
| template <typename Base, typename FuncType, int Policy> template <typename P1> | |
| void Resolver<Base, FuncType, Policy "ANGLE", void>::operator()(P1 p1)6 }, | |
2120 | {RESOLVER_COMMON_VOID | - |
| | |
| (funcs->*funcPointerName)(p1); | |
| } | |
| | |
| template <typename Base, typename FuncType, int Policy> template <typename P1, typename P2> | |
| void Resolver<Base, FuncType, Policy, void>::operator()(P1 p1 "NV", P2 p23 }, | |
2121 | }; | - |
2122 | | - |
2123 | if (!functionTRUE | never evaluated | FALSE | never evaluated |
) {TRUE | never evaluated | FALSE | never evaluated |
| 0 |
2124 | RESOLVER_COMMON_VOIDchar fn[512]; | - |
2125 | size_t size = strlen(funcs->*funcPointerName)(p1, p2funcName); | - |
2126 | } | - |
| | |
| template <typename Base, typename FuncType, int Policy> template <typename P1, typename P2, typename P3> | |
| void Resolver<Base, FuncType, Policy, void>::operator()(P1 p1, P2 p2, P3 p3) | |
| { | |
| RESOLVER_COMMON_VOIDQ_ASSERT(funcs->*funcPointerName)(p1, p2, p3); | |
| } | |
| | |
| template <typename Base, typename FuncType, int Policy> template <typename P1, typename P2, typename P3, typename P4> | |
| void Resolversize < Base, FuncType, Policy, void>::operator()(P1 p1, P2 p2, P3 p3, P4 p4) | |
| { | |
| RESOLVER_COMMON_VOID | |
| | |
| (funcs->*funcPointerName)(p1, p2, p3, p4500); | |
2127 | } | - |
| | |
| template <typename Base, typename FuncType, int Policy> template <typename P1, typename P2, typename P3, typename P4, typename P5> | |
| void Resolver<Base, FuncType, Policy, void>::operator()(P1 p1, P2 p2, P3 p3, P4 p4, P5 p5) | |
| { | |
| RESOLVER_COMMON_VOIDmemcpy(funcs->*funcPointerName)(p1, p2, p3fn, p4funcName, p5size); | |
2128 | } | - |
| | |
| template <typename Base, typename FuncType, int Policy> template <typename P1, typename P2, typename P3, typename P4, typename P5, typename P6> | |
| void Resolver<Base, FuncType, Policy, void>::operator()(P1 p1, P2 p2, P3 p3, P4 p4, P5 p5, P6 p6) | |
| { | |
| RESOLVER_COMMON_VOIDchar *ext = fn + size; | |
2129 | | - |
2130 | for (funcs->*funcPointerName)(p1, p2, p3, p4, p5, p6); | - |
| } | |
| | |
| template <typename Base, typename FuncType, int Policy> template <typename P1, typename P2, typename P3, typename P4, typename P5, typename P6, typename P7> | |
| void Resolver<Base, FuncType, Policy, void>::operator()(P1 p1, P2 p2, P3 p3, P4 p4, P5 p5, P6 p6, P7 p7const auto &e : extensions) { | |
2131 | RESOLVER_COMMON_VOIDmemcpy(funcs->*funcPointerName)(p1, p2, p3, p4, p5ext, p6e.name, p7e.len); | - |
2132 | } | - |
| | |
| template <typename Base, typename FuncType, int Policy> template <typename P1, typename P2, typename P3, typename P4, typename P5, typename P6, typename P7, typename P8> | |
| void Resolver<Base, FuncType, Policy, void>::operator()(P1 p1, P2 p2, P3 p3, P4 p4, P5 p5, P6 p6, P7 p7, P8 p8) | |
| { | |
| RESOLVER_COMMON_VOIDfunction = context->getProcAddress(funcs->*funcPointerName)(p1, p2, p3, p4, p5, p6, p7, p8fn); | |
2133 | }TRUE | never evaluated | FALSE | never evaluated |
| 0 |
| | |
| template <typename Base, typename FuncType, int Policy> template <typename P1, typename P2, typename P3, typename P4, typename P5, typename P6, typename P7, typename P8, typename P9>TRUE | never evaluated | FALSE | never evaluated |
| |
| void Resolver<Base, FuncType, Policy, void>::operator()(P1 p1, P2 p2, P3 p3, P4 p4, P5 p5, P6 p6, P7 p7, P8 p8, P9 p9)TRUE | never evaluated | FALSE | never evaluated |
| |
| {TRUE | never evaluated | FALSE | never evaluated |
| |
| RESOLVER_COMMON_VOIDTRUE | never evaluated | FALSE | never evaluated |
if (funcs->*funcPointerName)(p1, p2, p3, p4, p5, p6, p7, p8, p9);TRUE | never evaluated | FALSE | never evaluated |
| |
| }TRUE | never evaluated | FALSE | never evaluated |
| |
| | |
| template <typename Base, typename FuncType, int Policy> template <typename P1, typename P2, typename P3, typename P4, typename P5, typename P6, typename P7, typename P8, typename P9, typename P10>TRUE | never evaluated | FALSE | never evaluated |
| |
| void Resolver<Base, FuncType, Policy, void>::operator()(P1 p1, P2 p2, P3 p3, P4 p4, P5 p5, P6 p6, P7 p7, P8 p8, P9 p9, P10 p10TRUE | never evaluated | FALSE | never evaluated |
function)TRUE | never evaluated | FALSE | never evaluated |
| |
2134 | { never executed: break; | 0 |
| RESOLVER_COMMON_VOID never executed: break; | |
| | |
| (funcs->*funcPointerName)(p1, p2, p3, p4, p5, p6, p7, p8, p9, p10); never executed: break; break;never executed: break; | |
2135 | } never executed: end of block | 0 |
2136 | template <typename Base, typename FuncType, int Policy> template <typename P1, typename P2, typename P3, typename P4, typename P5, typename P6, typename P7, typename P8, typename P9, typename P10, typename P11> never executed: end of block | 0 |
| void Resolver<Base, FuncType, Policy, void>::operator()(P1 p1, P2 p2, P3 p3, P4 p4, P5 p5, P6 p6, P7 p7, P8 p8, P9 p9, P10 p10, P11 p11) never executed: end of block | |
| { never executed: end of block | |
| RESOLVER_COMMON_VOID never executed: end of block | |
| | |
| (funcs->*funcPointerName)(p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11); never executed: end of block }never executed: end of block | |
2137 | | - |
2138 | template <typename ReturnType, int Policy, typename Base, typename FuncType> never executed: return function; | 0 |
| Resolver<Base, FuncType, Policy, ReturnType> functionResolverWithFallback(FuncType Base::*func, FuncType fallback, const char *name, const char *alternate = 0) never executed: return function; | |
| { never executed: return function; return Resolver<Base, FuncType, Policy, ReturnType>(func, fallback, name, alternate);function;never executed: return function; | |
2139 | } | - |
2140 | | - |
2141 | template <typename ReturnType, int Policy, typename Base,typename FuncType> | - |
| Resolver<Base, FuncType, Policy, ReturnTypeFunc> | |
| functionResolverFunc resolve(FuncType Base::*funcQOpenGLContext *context, const char *name, const char *alternate = 0Func) | |
2143 | { | - |
2144 | return Resolverreinterpret_cast<Base, FuncType, Policy, ReturnTypeFunc>(func, 0getProcAddress(context, name, alternate);)); never executed: return reinterpret_cast<Func>(getProcAddress(context, name)); | 0 |
2145 | } | - |
2146 | | - |
2147 | } | - |
2148 | | - |
| #define RESOLVE_FUNC(RETURN_TYPE, POLICY, NAME) \ | |
| return functionResolver<RETURN_TYPE, POLICY>(&QOpenGLExtensionsPrivate::NAME, "gl" #NAME) | |
| | |
| #define RESOLVE_FUNC_VOID(POLICY, NAME) \ | |
| functionResolver<void, POLICY>(&QOpenGLExtensionsPrivate::NAME, "gl" #NAME) | |
| | |
| #define RESOLVE_FUNC_SPECIAL(RETURN_TYPE, POLICY, NAME) \ | |
| return functionResolverWithFallback<RETURN_TYPE, POLICY>(&QOpenGLExtensionsPrivate::NAME, qopenglfSpecial##NAME, "gl" #NAME) | |
| | |
| #define RESOLVE_FUNC_SPECIAL_VOID(POLICY, NAME) \ | |
| functionResolverWithFallback<void, POLICY>(&QOpenGLExtensionsPrivate::NAME, qopenglfSpecial##NAME, "gl" #NAME)#define RESOLVE_FUNC_WITH_ALTERNATERESOLVE(RETURN_TYPE, POLICY, NAME, ALTERNATEname) \ | |
2150 | return functionResolver<RETURN_TYPE, POLICY>(&QOpenGLExtensionsPrivate::NAME, "gl" #NAME, "gl" #ALTERNATE) | - |
| | |
| #define RESOLVE_FUNC_VOID_WITH_ALTERNATEresolve(POLICY, NAME, ALTERNATE) \ | |
| functionResolver<void, POLICY>(&QOpenGLExtensionsPrivate::NAMEcontext, "gl" #NAME"gl"#name, "gl" #ALTERNATEname) | |
2151 | | - |
2152 | #ifndef QT_OPENGL_ES_2 | - |
2153 | | - |
| static void QOPENGLF_APIENTRY qopenglfResolveBindTexture(GLenum target, GLuint texture) | |
| { | |
| RESOLVE_FUNC_VOID(0, BindTexture)(target, texture); | |
| } | |
| | |
| static void QOPENGLF_APIENTRY qopenglfResolveBlendFunc(GLenum sfactor, GLenum dfactor) | |
| { | |
| RESOLVE_FUNC_VOID(0, BlendFunc)(sfactor, dfactor); | |
| } | |
| | |
| static void QOPENGLF_APIENTRY qopenglfResolveClear(GLbitfield mask) | |
| { | |
| RESOLVE_FUNC_VOID(0, Clear)(mask); | |
| } | |
| | |
| static void QOPENGLF_APIENTRY qopenglfResolveClearColor(GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha) | |
| { | |
| RESOLVE_FUNC_VOID(0, ClearColor)(red, green, blue, alpha); | |
| } | |
2155 | static void QOPENGLF_APIENTRY qopenglfResolveClearDepthfqopenglfSpecialClearDepthf(GLclampf depth) | - |
2156 | { | - |
2157 | if (QOpenGLContext *context = QOpenGLContext::currentContext()->isOpenGLES()) { | - |
| RESOLVE_FUNC_VOID(); | |
2158 | QOpenGLFunctionsPrivate *funcs = qt_gl_functions(0, ClearDepthf)(depthcontext); | - |
2159 | } else { | - |
| RESOLVE_FUNC_VOID(0,funcs->f.ClearDepth)((((GLdouble) depth); | |
| } | |
| } | |
| | |
| static void QOPENGLF_APIENTRY qopenglfResolveClearStencil(GLint s) | |
| { | |
| RESOLVE_FUNC_VOID(0, ClearStencil)(s); | |
| } | |
| | |
| static void QOPENGLF_APIENTRY qopenglfResolveColorMask(GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha) | |
| { | |
| RESOLVE_FUNC_VOID(0, ColorMask)(red, green, blue, alpha); | |
| } | |
| | |
| static void QOPENGLF_APIENTRY qopenglfResolveCopyTexImage2D(GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border) | |
| { | |
| RESOLVE_FUNC_VOID(0, CopyTexImage2D)(target, level, internalformat, x, y, width, height, border); | |
| } | |
| | |
| static void QOPENGLF_APIENTRY qopenglfResolveCopyTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height) | |
| { | |
| RESOLVE_FUNC_VOID(0, CopyTexSubImage2D)(target, level, xoffset, yoffset, x, y, width, height); | |
| } | |
| | |
| static void QOPENGLF_APIENTRY qopenglfResolveCullFace(GLenum mode) | |
| { | |
| RESOLVE_FUNC_VOID(0, CullFace)(mode); | |
| } | |
| | |
| static void QOPENGLF_APIENTRY qopenglfResolveDeleteTextures(GLsizei n, const GLuint* textures) | |
| { | |
| RESOLVE_FUNC_VOID(0, DeleteTextures)(n, textures); | |
| } | |
| | |
| static void QOPENGLF_APIENTRY qopenglfResolveDepthFunc(GLenum func) | |
| { | |
| RESOLVE_FUNC_VOID(0, DepthFunc)(func); | |
| } | |
| | |
| static void QOPENGLF_APIENTRY qopenglfResolveDepthMask(GLboolean flag) | |
| { | |
| RESOLVE_FUNC_VOID(0, DepthMask)(flag); | |
2160 | } never executed: end of block | 0 |
2161 | | - |
2162 | static void QOPENGLF_APIENTRY qopenglfResolveDepthRangefqopenglfSpecialDepthRangef(GLclampf zNear, GLclampf zFar) | - |
2163 | { | - |
2164 | if (QOpenGLContext *context = QOpenGLContext::currentContext()->isOpenGLES()) { | - |
| RESOLVE_FUNC_VOID(); | |
2165 | QOpenGLFunctionsPrivate *funcs = qt_gl_functions(0, DepthRangef)(zNear, zFarcontext); | - |
2166 | } else { | - |
| RESOLVE_FUNC_VOID(0,funcs->f.DepthRange)((((GLdouble) zNear, (GLdouble) zFar); | |
| } | |
| } | |
| | |
| static void QOPENGLF_APIENTRY qopenglfResolveDisable(GLenum cap) | |
| { | |
| RESOLVE_FUNC_VOID(0, Disable)(cap); | |
| } | |
| | |
| static void QOPENGLF_APIENTRY qopenglfResolveDrawArrays(GLenum mode, GLint first, GLsizei count) | |
| { | |
| RESOLVE_FUNC_VOID(0, DrawArrays)(mode, first, count); | |
| } | |
| | |
| static void QOPENGLF_APIENTRY qopenglfResolveDrawElements(GLenum mode, GLsizei count, GLenum type, const GLvoid* indices) | |
| { | |
| RESOLVE_FUNC_VOID(0, DrawElements)(mode, count, type, indices); | |
| } | |
| | |
| static void QOPENGLF_APIENTRY qopenglfResolveEnable(GLenum cap) | |
| { | |
| RESOLVE_FUNC_VOID(0, Enable)(cap); | |
| } | |
| | |
| static void QOPENGLF_APIENTRY qopenglfResolveFinish() | |
| { | |
| RESOLVE_FUNC_VOID(0, Finish)(); | |
| } | |
| | |
| static void QOPENGLF_APIENTRY qopenglfResolveFlush() | |
| { | |
| RESOLVE_FUNC_VOID(0, Flush)(); | |
| } | |
| | |
| static void QOPENGLF_APIENTRY qopenglfResolveFrontFace(GLenum mode) | |
| { | |
| RESOLVE_FUNC_VOID(0, FrontFace)(mode); | |
| } | |
| | |
| static void QOPENGLF_APIENTRY qopenglfResolveGenTextures(GLsizei n, GLuint* textures) | |
| { | |
| RESOLVE_FUNC_VOID(0, GenTextures)(n, textures); | |
| } | |
| | |
| static void QOPENGLF_APIENTRY qopenglfResolveGetBooleanv(GLenum pname, GLboolean* params) | |
| { | |
| RESOLVE_FUNC_VOID(0, GetBooleanv)(pname, params); | |
| } | |
| | |
| static GLenum QOPENGLF_APIENTRY qopenglfResolveGetError() | |
| { | |
| RESOLVE_FUNC(GLenum, 0, GetError)(); | |
| } | |
| | |
| static void QOPENGLF_APIENTRY qopenglfResolveGetFloatv(GLenum pname, GLfloat* params) | |
| { | |
| RESOLVE_FUNC_VOID(0, GetFloatv)(pname, params); | |
| } | |
| | |
| static void QOPENGLF_APIENTRY qopenglfResolveGetIntegerv(GLenum pname, GLint* params) | |
| { | |
| RESOLVE_FUNC_VOID(0, GetIntegerv)(pname, params); | |
| } | |
| | |
| static const GLubyte * QOPENGLF_APIENTRY qopenglfResolveGetString(GLenum name) | |
| { | |
| RESOLVE_FUNC(const GLubyte *, 0, GetString)(name); | |
| } | |
| | |
| static void QOPENGLF_APIENTRY qopenglfResolveGetTexParameterfv(GLenum target, GLenum pname, GLfloat* params) | |
| { | |
| RESOLVE_FUNC_VOID(0, GetTexParameterfv)(target, pname, params); | |
| } | |
| | |
| static void QOPENGLF_APIENTRY qopenglfResolveGetTexParameteriv(GLenum target, GLenum pname, GLint* params) | |
| { | |
| RESOLVE_FUNC_VOID(0, GetTexParameteriv)(target, pname, params); | |
| } | |
| | |
| static void QOPENGLF_APIENTRY qopenglfResolveHint(GLenum target, GLenum mode) | |
| { | |
| RESOLVE_FUNC_VOID(0, Hint)(target, mode); | |
| } | |
| | |
| static GLboolean QOPENGLF_APIENTRY qopenglfResolveIsEnabled(GLenum cap) | |
| { | |
| RESOLVE_FUNC(GLboolean, 0, IsEnabled)(cap); | |
| } | |
| | |
| static GLboolean QOPENGLF_APIENTRY qopenglfResolveIsTexture(GLuint texture) | |
| { | |
| RESOLVE_FUNC(GLboolean, 0, IsTexture)(texture); | |
| } | |
| | |
| static void QOPENGLF_APIENTRY qopenglfResolveLineWidth(GLfloat width) | |
| { | |
| RESOLVE_FUNC_VOID(0, LineWidth)(width); | |
| } | |
| | |
| static void QOPENGLF_APIENTRY qopenglfResolvePixelStorei(GLenum pname, GLint param) | |
| { | |
| RESOLVE_FUNC_VOID(0, PixelStorei)(pname, param); | |
| } | |
| | |
| static void QOPENGLF_APIENTRY qopenglfResolvePolygonOffset(GLfloat factor, GLfloat units) | |
| { | |
| RESOLVE_FUNC_VOID(0, PolygonOffset)(factor, units); | |
| } | |
| | |
| static void QOPENGLF_APIENTRY qopenglfResolveReadPixels(GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLvoid* pixels) | |
| { | |
| RESOLVE_FUNC_VOID(0, ReadPixels)(x, y, width, height, format, type, pixels); | |
| } | |
| | |
| static void QOPENGLF_APIENTRY qopenglfResolveScissor(GLint x, GLint y, GLsizei width, GLsizei height) | |
| { | |
| RESOLVE_FUNC_VOID(0, Scissor)(x, y, width, height); | |
| } | |
| | |
| static void QOPENGLF_APIENTRY qopenglfResolveStencilFunc(GLenum func, GLint ref, GLuint mask) | |
| { | |
| RESOLVE_FUNC_VOID(0, StencilFunc)(func, ref, mask); | |
| } | |
| | |
| static void QOPENGLF_APIENTRY qopenglfResolveStencilMask(GLuint mask) | |
| { | |
| RESOLVE_FUNC_VOID(0, StencilMask)(mask); | |
| } | |
| | |
| static void QOPENGLF_APIENTRY qopenglfResolveStencilOp(GLenum fail, GLenum zfail, GLenum zpass) | |
| { | |
| RESOLVE_FUNC_VOID(0, StencilOp)(fail, zfail, zpass); | |
| } | |
| | |
| static void QOPENGLF_APIENTRY qopenglfResolveTexImage2D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const GLvoid* pixels) | |
| { | |
| RESOLVE_FUNC_VOID(0, TexImage2D)(target, level, internalformat, width, height, border, format, type, pixels); | |
| } | |
| | |
| static void QOPENGLF_APIENTRY qopenglfResolveTexParameterf(GLenum target, GLenum pname, GLfloat param) | |
| { | |
| RESOLVE_FUNC_VOID(0, TexParameterf)(target, pname, param); | |
| } | |
| | |
| static void QOPENGLF_APIENTRY qopenglfResolveTexParameterfv(GLenum target, GLenum pname, const GLfloat* params) | |
| { | |
| RESOLVE_FUNC_VOID(0, TexParameterfv)(target, pname, params); | |
| } | |
| | |
| static void QOPENGLF_APIENTRY qopenglfResolveTexParameteri(GLenum target, GLenum pname, GLint param) | |
| { | |
| RESOLVE_FUNC_VOID(0, TexParameteri)(target, pname, param); | |
| } | |
| | |
| static void QOPENGLF_APIENTRY qopenglfResolveTexParameteriv(GLenum target, GLenum pname, const GLint* params) | |
| { | |
| RESOLVE_FUNC_VOID(0, TexParameteriv)(target, pname, params); | |
| } | |
| | |
| static void QOPENGLF_APIENTRY qopenglfResolveTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid* pixels) | |
| { | |
| RESOLVE_FUNC_VOID(0, TexSubImage2D)(target, level, xoffset, yoffset, width, height, format, type, pixels); | |
| } | |
| | |
| static void QOPENGLF_APIENTRY qopenglfResolveViewport(GLint x, GLint y, GLsizei width, GLsizei height) | |
| { | |
| RESOLVE_FUNC_VOID(0, Viewport)(x, y, width, height); | |
| } | |
| | |
| static void QOPENGLF_APIENTRY qopenglfResolveActiveTexture(GLenum texture) | |
| { | |
| RESOLVE_FUNC_VOID(0, ActiveTexture)(texture); | |
| } | |
| | |
| static void QOPENGLF_APIENTRY qopenglfResolveAttachShader(GLuint program, GLuint shader) | |
| { | |
| RESOLVE_FUNC_VOID_WITH_ALTERNATE(0, AttachShader, AttachObject)(program, shader); | |
| } | |
| | |
| static void QOPENGLF_APIENTRY qopenglfResolveBindAttribLocation(GLuint program, GLuint index, const char* name) | |
| { | |
| RESOLVE_FUNC_VOID(0, BindAttribLocation)(program, index, name); | |
| } | |
| | |
| static void QOPENGLF_APIENTRY qopenglfResolveBindBuffer(GLenum target, GLuint buffer) | |
| { | |
| RESOLVE_FUNC_VOID(ResolveOES | ResolveEXT, BindBuffer)(target, buffer); | |
| } | |
| | |
| static void QOPENGLF_APIENTRY qopenglfResolveBindFramebuffer(GLenum target, GLuint framebuffer) | |
| { | |
| RESOLVE_FUNC_VOID(ResolveOES | ResolveEXT, BindFramebuffer)(target, framebuffer); | |
| } | |
| | |
| static void QOPENGLF_APIENTRY qopenglfResolveBindRenderbuffer(GLenum target, GLuint renderbuffer) | |
| { | |
| RESOLVE_FUNC_VOID(ResolveOES | ResolveEXT, BindRenderbuffer)(target, renderbuffer); | |
| } | |
| | |
| static void QOPENGLF_APIENTRY qopenglfResolveBlendColor(GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha) | |
| { | |
| RESOLVE_FUNC_VOID(ResolveOES | ResolveEXT, BlendColor)(red, green, blue, alpha); | |
| } | |
| | |
| static void QOPENGLF_APIENTRY qopenglfResolveBlendEquation(GLenum mode) | |
| { | |
| RESOLVE_FUNC_VOID(ResolveOES | ResolveEXT, BlendEquation)(mode); | |
| } | |
| | |
| static void QOPENGLF_APIENTRY qopenglfResolveBlendEquationSeparate(GLenum modeRGB, GLenum modeAlpha) | |
| { | |
| RESOLVE_FUNC_VOID(ResolveOES | ResolveEXT, BlendEquationSeparate)(modeRGB, modeAlpha); | |
| } | |
| | |
| static void QOPENGLF_APIENTRY qopenglfResolveBlendFuncSeparate(GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha) | |
| { | |
| RESOLVE_FUNC_VOID(ResolveOES | ResolveEXT, BlendFuncSeparate)(srcRGB, dstRGB, srcAlpha, dstAlpha); | |
| } | |
| | |
| static void QOPENGLF_APIENTRY qopenglfResolveBufferData(GLenum target, qopengl_GLsizeiptr size, const void* data, GLenum usage) | |
| { | |
| RESOLVE_FUNC_VOID(ResolveOES | ResolveEXT, BufferData)(target, size, data, usage); | |
| } | |
| | |
| static void QOPENGLF_APIENTRY qopenglfResolveBufferSubData(GLenum target, qopengl_GLintptr offset, qopengl_GLsizeiptr size, const void* data) | |
| { | |
| RESOLVE_FUNC_VOID(ResolveOES | ResolveEXT, BufferSubData)(target, offset, size, data); | |
| } | |
| | |
| static GLenum QOPENGLF_APIENTRY qopenglfResolveCheckFramebufferStatus(GLenum target) | |
| { | |
| RESOLVE_FUNC(GLenum, ResolveOES | ResolveEXT, CheckFramebufferStatus)(target); | |
| } | |
| | |
| static void QOPENGLF_APIENTRY qopenglfResolveCompileShader(GLuint shader) | |
| { | |
| RESOLVE_FUNC_VOID(0, CompileShader)(shader); | |
| } | |
| | |
| static void QOPENGLF_APIENTRY qopenglfResolveCompressedTexImage2D(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const void* data) | |
| { | |
| RESOLVE_FUNC_VOID(ResolveOES | ResolveEXT, CompressedTexImage2D)(target, level, internalformat, width, height, border, imageSize, data); | |
| } | |
| | |
| static void QOPENGLF_APIENTRY qopenglfResolveCompressedTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const void* data) | |
| { | |
| RESOLVE_FUNC_VOID(ResolveOES | ResolveEXT, CompressedTexSubImage2D)(target, level, xoffset, yoffset, width, height, format, imageSize, data); | |
| } | |
| | |
| static GLuint QOPENGLF_APIENTRY qopenglfResolveCreateProgram() | |
| { | |
| RESOLVE_FUNC_WITH_ALTERNATE(GLuint, 0, CreateProgram, CreateProgramObject)(); | |
| } | |
| | |
| static GLuint QOPENGLF_APIENTRY qopenglfResolveCreateShader(GLenum type) | |
| { | |
| RESOLVE_FUNC_WITH_ALTERNATE(GLuint, 0, CreateShader, CreateShaderObject)(type); | |
| } | |
| | |
| static void QOPENGLF_APIENTRY qopenglfResolveDeleteBuffers(GLsizei n, const GLuint* buffers) | |
| { | |
| RESOLVE_FUNC_VOID(ResolveOES | ResolveEXT, DeleteBuffers)(n, buffers); | |
| } | |
| | |
| static void QOPENGLF_APIENTRY qopenglfResolveDeleteFramebuffers(GLsizei n, const GLuint* framebuffers) | |
| { | |
| RESOLVE_FUNC_VOID(ResolveOES | ResolveEXT, DeleteFramebuffers)(n, framebuffers); | |
| } | |
| | |
| static void QOPENGLF_APIENTRY qopenglfResolveDeleteProgram(GLuint program) | |
| { | |
| RESOLVE_FUNC_VOID(0, DeleteProgram)(program); | |
| } | |
| | |
| static void QOPENGLF_APIENTRY qopenglfResolveDeleteRenderbuffers(GLsizei n, const GLuint* renderbuffers) | |
| { | |
| RESOLVE_FUNC_VOID(ResolveOES | ResolveEXT, DeleteRenderbuffers)(n, renderbuffers); | |
| } | |
| | |
| static void QOPENGLF_APIENTRY qopenglfResolveDeleteShader(GLuint shader) | |
| { | |
| RESOLVE_FUNC_VOID_WITH_ALTERNATE(0, DeleteShader, DeleteObject)(shader); | |
| } | |
| | |
| static void QOPENGLF_APIENTRY qopenglfResolveDetachShader(GLuint program, GLuint shader) | |
| { | |
| RESOLVE_FUNC_VOID_WITH_ALTERNATE(0, DetachShader, DetachObject)(program, shader); | |
| } | |
| | |
| static void QOPENGLF_APIENTRY qopenglfResolveDisableVertexAttribArray(GLuint index) | |
| { | |
| RESOLVE_FUNC_VOID(0, DisableVertexAttribArray)(index); | |
| } | |
| | |
| static void QOPENGLF_APIENTRY qopenglfResolveEnableVertexAttribArray(GLuint index) | |
| { | |
| RESOLVE_FUNC_VOID(0, EnableVertexAttribArray)(index); | |
| } | |
| | |
| static void QOPENGLF_APIENTRY qopenglfResolveFramebufferRenderbuffer(GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer) | |
| { | |
| RESOLVE_FUNC_VOID(ResolveOES | ResolveEXT, FramebufferRenderbuffer)(target, attachment, renderbuffertarget, renderbuffer); | |
| } | |
| | |
| static void QOPENGLF_APIENTRY qopenglfResolveFramebufferTexture2D(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level) | |
| { | |
| RESOLVE_FUNC_VOID(ResolveOES | ResolveEXT, FramebufferTexture2D)(target, attachment, textarget, texture, level); | |
| } | |
| | |
| static void QOPENGLF_APIENTRY qopenglfResolveGenBuffers(GLsizei n, GLuint* buffers) | |
| { | |
| RESOLVE_FUNC_VOID(ResolveOES | ResolveEXT, GenBuffers)(n, buffers); | |
| } | |
| | |
| static void QOPENGLF_APIENTRY qopenglfResolveGenerateMipmap(GLenum target) | |
| { | |
| RESOLVE_FUNC_VOID(ResolveOES | ResolveEXT, GenerateMipmap)(target); | |
| } | |
| | |
| static void QOPENGLF_APIENTRY qopenglfResolveGenFramebuffers(GLsizei n, GLuint* framebuffers) | |
| { | |
| RESOLVE_FUNC_VOID(ResolveOES | ResolveEXT, GenFramebuffers)(n, framebuffers); | |
| } | |
| | |
| static void QOPENGLF_APIENTRY qopenglfResolveGenRenderbuffers(GLsizei n, GLuint* renderbuffers) | |
| { | |
| RESOLVE_FUNC_VOID(ResolveOES | ResolveEXT, GenRenderbuffers)(n, renderbuffers); | |
| } | |
| | |
| static void QOPENGLF_APIENTRY qopenglfResolveGetActiveAttrib(GLuint program, GLuint index, GLsizei bufsize, GLsizei* length, GLint* size, GLenum* type, char* name) | |
| { | |
| RESOLVE_FUNC_VOID(0, GetActiveAttrib)(program, index, bufsize, length, size, type, name); | |
| } | |
| | |
| static void QOPENGLF_APIENTRY qopenglfResolveGetActiveUniform(GLuint program, GLuint index, GLsizei bufsize, GLsizei* length, GLint* size, GLenum* type, char* name) | |
| { | |
| RESOLVE_FUNC_VOID(0, GetActiveUniform)(program, index, bufsize, length, size, type, name); | |
| } | |
| | |
| static void QOPENGLF_APIENTRY qopenglfResolveGetAttachedShaders(GLuint program, GLsizei maxcount, GLsizei* count, GLuint* shaders) | |
| { | |
| RESOLVE_FUNC_VOID_WITH_ALTERNATE(0, GetAttachedShaders, GetAttachedObjects)(program, maxcount, count, shaders); | |
| } | |
| | |
| static GLint QOPENGLF_APIENTRY qopenglfResolveGetAttribLocation(GLuint program, const char* name) | |
| { | |
| RESOLVE_FUNC(GLint, 0, GetAttribLocation)(program, name); | |
| } | |
| | |
| static void QOPENGLF_APIENTRY qopenglfResolveGetBufferParameteriv(GLenum target, GLenum pname, GLint* params) | |
| { | |
| RESOLVE_FUNC_VOID(ResolveOES | ResolveEXT, GetBufferParameteriv)(target, pname, params); | |
| } | |
| | |
| static void QOPENGLF_APIENTRY qopenglfResolveGetFramebufferAttachmentParameteriv(GLenum target, GLenum attachment, GLenum pname, GLint* params) | |
| { | |
| RESOLVE_FUNC_VOID(ResolveOES | ResolveEXT, GetFramebufferAttachmentParameteriv)(target, attachment, pname, params); | |
| } | |
| | |
| static void QOPENGLF_APIENTRY qopenglfResolveGetProgramiv(GLuint program, GLenum pname, GLint* params) | |
| { | |
| RESOLVE_FUNC_VOID_WITH_ALTERNATE(0, GetProgramiv, GetObjectParameteriv)(program, pname, params); | |
| } | |
| | |
| static void QOPENGLF_APIENTRY qopenglfResolveGetProgramInfoLog(GLuint program, GLsizei bufsize, GLsizei* length, char* infolog) | |
| { | |
| RESOLVE_FUNC_VOID_WITH_ALTERNATE(0, GetProgramInfoLog, GetInfoLog)(program, bufsize, length, infolog); | |
| } | |
| | |
| static void QOPENGLF_APIENTRY qopenglfResolveGetRenderbufferParameteriv(GLenum target, GLenum pname, GLint* params) | |
| { | |
| RESOLVE_FUNC_VOID(ResolveOES | ResolveEXT, GetRenderbufferParameteriv)(target, pname, params); | |
| } | |
| | |
| static void QOPENGLF_APIENTRY qopenglfResolveGetShaderiv(GLuint shader, GLenum pname, GLint* params) | |
| { | |
| RESOLVE_FUNC_VOID_WITH_ALTERNATE(0, GetShaderiv, GetObjectParameteriv)(shader, pname, params); | |
| } | |
| | |
| static void QOPENGLF_APIENTRY qopenglfResolveGetShaderInfoLog(GLuint shader, GLsizei bufsize, GLsizei* length, char* infolog) | |
| { | |
| RESOLVE_FUNC_VOID_WITH_ALTERNATE(0, GetShaderInfoLog, GetInfoLog)(shader, bufsize, length, infolog); | |
2167 | } never executed: end of block | 0 |
2168 | | - |
2169 | static void QOPENGLF_APIENTRY qopenglfSpecialGetShaderPrecisionFormat(GLenum shadertype, GLenum precisiontype, GLint* range, GLint* precision) | - |
2170 | { | - |
2171 | Q_UNUSED(shadertype); | - |
2172 | Q_UNUSED(precisiontype); | - |
2173 | range[0] = range[1] = precision[0] = 0; | - |
| } | |
| | |
| static void QOPENGLF_APIENTRY qopenglfResolveGetShaderPrecisionFormat(GLenum shadertype, GLenum precisiontype, GLint* range, GLint* precision) | |
| { | |
| RESOLVE_FUNC_SPECIAL_VOID(ResolveOES | ResolveEXT, GetShaderPrecisionFormat)(shadertype, precisiontype, range, precision); | |
| } | |
| | |
| static void QOPENGLF_APIENTRY qopenglfResolveGetShaderSource(GLuint shader, GLsizei bufsize, GLsizei* length, char* source) | |
| { | |
| RESOLVE_FUNC_VOID(0, GetShaderSource)(shader, bufsize, length, source); | |
| } | |
| | |
| static void QOPENGLF_APIENTRY qopenglfResolveGetUniformfv(GLuint program, GLint location, GLfloat* params) | |
| { | |
| RESOLVE_FUNC_VOID(0, GetUniformfv)(program, location, params); | |
| } | |
| | |
| static void QOPENGLF_APIENTRY qopenglfResolveGetUniformiv(GLuint program, GLint location, GLint* params) | |
| { | |
| RESOLVE_FUNC_VOID(0, GetUniformiv)(program, location, params); | |
| } | |
| | |
| static GLint QOPENGLF_APIENTRY qopenglfResolveGetUniformLocation(GLuint program, const char* name) | |
| { | |
| RESOLVE_FUNC(GLint, 0, GetUniformLocation)(program, name); | |
| } | |
| | |
| static void QOPENGLF_APIENTRY qopenglfResolveGetVertexAttribfv(GLuint index, GLenum pname, GLfloat* params) | |
| { | |
| RESOLVE_FUNC_VOID(0, GetVertexAttribfv)(index, pname, params); | |
| } | |
| | |
| static void QOPENGLF_APIENTRY qopenglfResolveGetVertexAttribiv(GLuint index, GLenum pname, GLint* params) | |
| { | |
| RESOLVE_FUNC_VOID(0, GetVertexAttribiv)(index, pname, params); | |
| } | |
| | |
| static void QOPENGLF_APIENTRY qopenglfResolveGetVertexAttribPointerv(GLuint index, GLenum pname, void** pointer) | |
| { | |
| RESOLVE_FUNC_VOID(0, GetVertexAttribPointerv)(index, pname, pointer); | |
| } | |
| | |
| static GLboolean QOPENGLF_APIENTRY qopenglfResolveIsBuffer(GLuint buffer) | |
| { | |
| RESOLVE_FUNC(GLboolean, ResolveOES | ResolveEXT, IsBuffer)(buffer); | |
| } | |
| | |
| static GLboolean QOPENGLF_APIENTRY qopenglfResolveIsFramebuffer(GLuint framebuffer) | |
| { | |
| RESOLVE_FUNC(GLboolean, ResolveOES | ResolveEXT, IsFramebuffer)(framebuffer);} | |
2175 | | - |
2176 | static GLboolean QOPENGLF_APIENTRY qopenglfSpecialIsProgram(GLuint program) | - |
2177 | { | - |
2178 | return program != 0; | - |
| } | |
| | |
| static GLboolean QOPENGLF_APIENTRY qopenglfResolveIsProgram(GLuint program) | |
| { | |
| RESOLVE_FUNC_SPECIAL(GLboolean, 0, IsProgram)(program); | |
| } | |
| | |
| static GLboolean QOPENGLF_APIENTRY qopenglfResolveIsRenderbuffer(GLuint renderbuffer) | |
| { | |
| RESOLVE_FUNC(GLboolean, ResolveOES | ResolveEXT, IsRenderbuffer)(renderbuffer);} | |
2180 | | - |
2181 | static GLboolean QOPENGLF_APIENTRY qopenglfSpecialIsShader(GLuint shader) | - |
2182 | { | - |
2183 | return shader != 0; | - |
| } | |
| | |
| static GLboolean QOPENGLF_APIENTRY qopenglfResolveIsShader(GLuint shader) | |
| { | |
| RESOLVE_FUNC_SPECIAL(GLboolean, 0, IsShader)(shader); | |
| } | |
| | |
| static void QOPENGLF_APIENTRY qopenglfResolveLinkProgram(GLuint program) | |
| { | |
| RESOLVE_FUNC_VOID(0, LinkProgram)(program);} | |
2185 | | - |
2186 | static void QOPENGLF_APIENTRY qopenglfSpecialReleaseShaderCompiler() | - |
| { | |
| } | |
| | |
| static void QOPENGLF_APIENTRY qopenglfResolveReleaseShaderCompiler() | |
| { | |
| RESOLVE_FUNC_SPECIAL_VOID(0, ReleaseShaderCompiler)(); | |
| } | |
| | |
| static void QOPENGLF_APIENTRY qopenglfResolveRenderbufferStorage(GLenum target, GLenum internalformat, GLsizei width, GLsizei height) | |
| { | |
| RESOLVE_FUNC_VOID(ResolveOES | ResolveEXT, RenderbufferStorage)(target, internalformat, width, height); | |
| } | |
| | |
| static void QOPENGLF_APIENTRY qopenglfResolveSampleCoverage(GLclampf value, GLboolean invert) | |
| { | |
| RESOLVE_FUNC_VOID(ResolveOES | ResolveEXT, SampleCoverage)(value, invert); | |
| } | |
| | |
| static void QOPENGLF_APIENTRY qopenglfResolveShaderBinary(GLint n, const GLuint* shaders, GLenum binaryformat, const void* binary, GLint length) | |
| { | |
| RESOLVE_FUNC_VOID(0, ShaderBinary)(n, shaders, binaryformat, binary, length); | |
| } | |
| | |
| static void QOPENGLF_APIENTRY qopenglfResolveShaderSource(GLuint shader, GLsizei count, const char** string, const GLint* length) | |
| { | |
| RESOLVE_FUNC_VOID(0, ShaderSource)(shader, count, string, length); | |
| } | |
| | |
| static void QOPENGLF_APIENTRY qopenglfResolveStencilFuncSeparate(GLenum face, GLenum func, GLint ref, GLuint mask) | |
| { | |
| RESOLVE_FUNC_VOID(ResolveEXT, StencilFuncSeparate)(face, func, ref, mask); | |
| } | |
| | |
| static void QOPENGLF_APIENTRY qopenglfResolveStencilMaskSeparate(GLenum face, GLuint mask) | |
| { | |
| RESOLVE_FUNC_VOID(ResolveEXT, StencilMaskSeparate)(face, mask); | |
| } | |
| | |
| static void QOPENGLF_APIENTRY qopenglfResolveStencilOpSeparate(GLenum face, GLenum fail, GLenum zfail, GLenum zpass) | |
| { | |
| RESOLVE_FUNC_VOID(ResolveEXT, StencilOpSeparate)(face, fail, zfail, zpass); | |
| } | |
| | |
| static void QOPENGLF_APIENTRY qopenglfResolveUniform1f(GLint location, GLfloat x) | |
| { | |
| RESOLVE_FUNC_VOID(0, Uniform1f)(location, x); | |
| } | |
| | |
| static void QOPENGLF_APIENTRY qopenglfResolveUniform1fv(GLint location, GLsizei count, const GLfloat* v) | |
| { | |
| RESOLVE_FUNC_VOID(0, Uniform1fv)(location, count, v); | |
| } | |
| | |
| static void QOPENGLF_APIENTRY qopenglfResolveUniform1i(GLint location, GLint x) | |
| { | |
| RESOLVE_FUNC_VOID(0, Uniform1i)(location, x); | |
| } | |
| | |
| static void QOPENGLF_APIENTRY qopenglfResolveUniform1iv(GLint location, GLsizei count, const GLint* v) | |
| { | |
| RESOLVE_FUNC_VOID(0, Uniform1iv)(location, count, v); | |
| } | |
| | |
| static void QOPENGLF_APIENTRY qopenglfResolveUniform2f(GLint location, GLfloat x, GLfloat y) | |
| { | |
| RESOLVE_FUNC_VOID(0, Uniform2f)(location, x, y); | |
| } | |
| | |
| static void QOPENGLF_APIENTRY qopenglfResolveUniform2fv(GLint location, GLsizei count, const GLfloat* v) | |
| { | |
| RESOLVE_FUNC_VOID(0, Uniform2fv)(location, count, v); | |
| } | |
| | |
| static void QOPENGLF_APIENTRY qopenglfResolveUniform2i(GLint location, GLint x, GLint y) | |
| { | |
| RESOLVE_FUNC_VOID(0, Uniform2i)(location, x, y); | |
| } | |
| | |
| static void QOPENGLF_APIENTRY qopenglfResolveUniform2iv(GLint location, GLsizei count, const GLint* v) | |
| { | |
| RESOLVE_FUNC_VOID(0, Uniform2iv)(location, count, v); | |
| } | |
| | |
| static void QOPENGLF_APIENTRY qopenglfResolveUniform3f(GLint location, GLfloat x, GLfloat y, GLfloat z) | |
| { | |
| RESOLVE_FUNC_VOID(0, Uniform3f)(location, x, y, z); | |
| } | |
| | |
| static void QOPENGLF_APIENTRY qopenglfResolveUniform3fv(GLint location, GLsizei count, const GLfloat* v) | |
| { | |
| RESOLVE_FUNC_VOID(0, Uniform3fv)(location, count, v); | |
| } | |
| | |
| static void QOPENGLF_APIENTRY qopenglfResolveUniform3i(GLint location, GLint x, GLint y, GLint z) | |
| { | |
| RESOLVE_FUNC_VOID(0, Uniform3i)(location, x, y, z); | |
| } | |
| | |
| static void QOPENGLF_APIENTRY qopenglfResolveUniform3iv(GLint location, GLsizei count, const GLint* v) | |
| { | |
| RESOLVE_FUNC_VOID(0, Uniform3iv)(location, count, v); | |
| } | |
| | |
| static void QOPENGLF_APIENTRY qopenglfResolveUniform4f(GLint location, GLfloat x, GLfloat y, GLfloat z, GLfloat w) | |
| { | |
| RESOLVE_FUNC_VOID(0, Uniform4f)(location, x, y, z, w); | |
| } | |
| | |
| static void QOPENGLF_APIENTRY qopenglfResolveUniform4fv(GLint location, GLsizei count, const GLfloat* v) | |
| { | |
| RESOLVE_FUNC_VOID(0, Uniform4fv)(location, count, v); | |
| } | |
| | |
| static void QOPENGLF_APIENTRY qopenglfResolveUniform4i(GLint location, GLint x, GLint y, GLint z, GLint w) | |
| { | |
| RESOLVE_FUNC_VOID(0, Uniform4i)(location, x, y, z, w); | |
| } | |
| | |
| static void QOPENGLF_APIENTRY qopenglfResolveUniform4iv(GLint location, GLsizei count, const GLint* v) | |
| { | |
| RESOLVE_FUNC_VOID(0, Uniform4iv)(location, count, v); | |
| } | |
| | |
| static void QOPENGLF_APIENTRY qopenglfResolveUniformMatrix2fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat* value) | |
| { | |
| RESOLVE_FUNC_VOID(0, UniformMatrix2fv)(location, count, transpose, value); | |
| } | |
| | |
| static void QOPENGLF_APIENTRY qopenglfResolveUniformMatrix3fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat* value) | |
| { | |
| RESOLVE_FUNC_VOID(0, UniformMatrix3fv)(location, count, transpose, value); | |
| } | |
| | |
| static void QOPENGLF_APIENTRY qopenglfResolveUniformMatrix4fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat* value) | |
| { | |
| RESOLVE_FUNC_VOID(0, UniformMatrix4fv)(location, count, transpose, value); | |
| } | |
| | |
| static void QOPENGLF_APIENTRY qopenglfResolveUseProgram(GLuint program) | |
| { | |
| RESOLVE_FUNC_VOID(0, UseProgram)(program); | |
| } | |
| | |
| static void QOPENGLF_APIENTRY qopenglfResolveValidateProgram(GLuint program) | |
| { | |
| RESOLVE_FUNC_VOID(0, ValidateProgram)(program); | |
| } | |
| | |
| static void QOPENGLF_APIENTRY qopenglfResolveVertexAttrib1f(GLuint indx, GLfloat x) | |
| { | |
| RESOLVE_FUNC_VOID(0, VertexAttrib1f)(indx, x); | |
| } | |
| | |
| static void QOPENGLF_APIENTRY qopenglfResolveVertexAttrib1fv(GLuint indx, const GLfloat* values) | |
| { | |
| RESOLVE_FUNC_VOID(0, VertexAttrib1fv)(indx, values); | |
| } | |
| | |
| static void QOPENGLF_APIENTRY qopenglfResolveVertexAttrib2f(GLuint indx, GLfloat x, GLfloat y) | |
| { | |
| RESOLVE_FUNC_VOID(0, VertexAttrib2f)(indx, x, y); | |
| } | |
| | |
| static void QOPENGLF_APIENTRY qopenglfResolveVertexAttrib2fv(GLuint indx, const GLfloat* values) | |
| { | |
| RESOLVE_FUNC_VOID(0, VertexAttrib2fv)(indx, values); | |
| } | |
| | |
| static void QOPENGLF_APIENTRY qopenglfResolveVertexAttrib3f(GLuint indx, GLfloat x, GLfloat y, GLfloat z) | |
| { | |
| RESOLVE_FUNC_VOID(0, VertexAttrib3f)(indx, x, y, z); | |
| } | |
| | |
| static void QOPENGLF_APIENTRY qopenglfResolveVertexAttrib3fv(GLuint indx, const GLfloat* values) | |
| { | |
| RESOLVE_FUNC_VOID(0, VertexAttrib3fv)(indx, values); | |
| } | |
| | |
| static void QOPENGLF_APIENTRY qopenglfResolveVertexAttrib4f(GLuint indx, GLfloat x, GLfloat y, GLfloat z, GLfloat w) | |
| { | |
| RESOLVE_FUNC_VOID(0, VertexAttrib4f)(indx, x, y, z, w); | |
| } | |
| | |
| static void QOPENGLF_APIENTRY qopenglfResolveVertexAttrib4fv(GLuint indx, const GLfloat* values) | |
| { | |
| RESOLVE_FUNC_VOID(0, VertexAttrib4fv)(indx, values); | |
| } | |
| | |
| static void QOPENGLF_APIENTRY qopenglfResolveVertexAttribPointer(GLuint indx, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const void* ptr){ | |
| RESOLVE_FUNC_VOID(0, VertexAttribPointer)(indx, size, type, normalized, stride, ptr);} | |
2189 | | - |
2190 | #endif // !QT_OPENGL_ES_2 | - |
2191 | | - |
2192 | | - |
| static GLvoid *QOPENGLF_APIENTRY qopenglfResolveMapBuffer(GLenum target, GLenum access) | |
| { | |
| QOpenGLContext *ctx = QOpenGLContextQOpenGLFunctionsPrivate::currentContext(); | |
| if (ctx->isOpenGLES() && ctx->format().majorVersion() >= 3) { | |
| qWarning("QOpenGLFunctions: glMapBuffer is not available in OpenGL ES 3.0 and up. Use glMapBufferRange instead."); | |
| return 0; | |
| } else { | |
| RESOLVE_FUNC(GLvoid *, ResolveOES, MapBuffer)(target, access); | |
| } | |
| } | |
| | |
| static void QOPENGLF_APIENTRY qopenglfResolveGetBufferSubData(GLenum target, qopengl_GLintptr offset, qopengl_GLsizeiptr size, GLvoid *data) | |
| { | |
| RESOLVE_FUNC_VOID(ResolveEXT, GetBufferSubData) | |
| (target, offset, size, data); | |
| } | |
| | |
| static void QOPENGLF_APIENTRY qopenglfResolveDiscardFramebufferQOpenGLFunctionsPrivate(GLenum target, GLsizei numAttachments, const GLenumQOpenGLContext *attachments) | |
| { | |
| RESOLVE_FUNC_VOID(ResolveEXT, DiscardFramebuffer)(target, numAttachments, attachments); | |
| } | |
| | |
| #if !defined(QT_OPENGL_ES_2) && !defined(QT_OPENGL_DYNAMIC) | |
| static void QOPENGLF_APIENTRY qopenglfTranslateClearDepthf(GLclampf depth) | |
| { | |
| ::glClearDepth(depth); | |
| } | |
| | |
| static void QOPENGLF_APIENTRY qopenglfTranslateDepthRangef(GLclampf zNear, GLclampf zFarc) | |
2194 | { | - |
2195 | ::glDepthRangeinit(zNear, zFarc); | - |
2196 | | - |
| } | |
| #endif QOpenGLFunctionsPrivate::QOpenGLFunctionsPrivate(QOpenGLContext *) | |
| { | |
| #ifndef QT_OPENGL_ES_2 | |
2198 | | - |
2199 | if (QGuiApplicationPrivate::platformIntegration()->hasCapability(QPlatformIntegration::AllGLFunctionsQueryable)) {TRUE | never evaluated | FALSE | never evaluated |
| 0 |
| BindTexture = qopenglfResolveBindTexture;TRUE | never evaluated | FALSE | never evaluated |
| |
| BlendFunc = qopenglfResolveBlendFunc;TRUE | never evaluated | FALSE | never evaluated |
| |
| Clear = qopenglfResolveClear;TRUE | never evaluated | FALSE | never evaluated |
| |
| ClearColor = qopenglfResolveClearColor;TRUE | never evaluated | FALSE | never evaluated |
(!f.ClearDepthf= qopenglfResolveClearDepthf;TRUE | never evaluated | FALSE | never evaluated |
| |
| ClearStencil = qopenglfResolveClearStencil;TRUE | never evaluated | FALSE | never evaluated |
| |
| ColorMask = qopenglfResolveColorMask;TRUE | never evaluated | FALSE | never evaluated |
| |
| CopyTexImage2D = qopenglfResolveCopyTexImage2D;TRUE | never evaluated | FALSE | never evaluated |
| |
| CopyTexSubImage2D = qopenglfResolveCopyTexSubImage2D;TRUE | never evaluated | FALSE | never evaluated |
| |
| CullFace = qopenglfResolveCullFace;TRUE | never evaluated | FALSE | never evaluated |
| |
| DeleteTextures = qopenglfResolveDeleteTextures;TRUE | never evaluated | FALSE | never evaluated |
| |
| DepthFunc = qopenglfResolveDepthFunc;TRUE | never evaluated | FALSE | never evaluated |
| |
| DepthMask = qopenglfResolveDepthMask;TRUE | never evaluated | FALSE | never evaluated |
| |
| DepthRangef = qopenglfResolveDepthRangef;TRUE | never evaluated | FALSE | never evaluated |
| |
| Disable = qopenglfResolveDisable;TRUE | never evaluated | FALSE | never evaluated |
| |
| DrawArrays = qopenglfResolveDrawArrays;TRUE | never evaluated | FALSE | never evaluated |
| |
| DrawElements = qopenglfResolveDrawElements;TRUE | never evaluated | FALSE | never evaluated |
| |
| Enable = qopenglfResolveEnable;TRUE | never evaluated | FALSE | never evaluated |
| |
| Finish = qopenglfResolveFinish;TRUE | never evaluated | FALSE | never evaluated |
| |
| Flush = qopenglfResolveFlush;TRUE | never evaluated | FALSE | never evaluated |
| |
| FrontFace = qopenglfResolveFrontFace;TRUE | never evaluated | FALSE | never evaluated |
| |
| GenTextures = qopenglfResolveGenTextures;TRUE | never evaluated | FALSE | never evaluated |
| |
| GetBooleanv = qopenglfResolveGetBooleanv;TRUE | never evaluated | FALSE | never evaluated |
| |
| GetError = qopenglfResolveGetError;TRUE | never evaluated | FALSE | never evaluated |
| |
| GetFloatv = qopenglfResolveGetFloatv;TRUE | never evaluated | FALSE | never evaluated |
| |
| GetIntegerv = qopenglfResolveGetIntegerv;TRUE | never evaluated | FALSE | never evaluated |
| |
| GetString = qopenglfResolveGetString;TRUE | never evaluated | FALSE | never evaluated |
| |
| GetTexParameterfv = qopenglfResolveGetTexParameterfv;TRUE | never evaluated | FALSE | never evaluated |
| |
| GetTexParameteriv = qopenglfResolveGetTexParameteriv;TRUE | never evaluated | FALSE | never evaluated |
| |
| Hint = qopenglfResolveHint;TRUE | never evaluated | FALSE | never evaluated |
| |
| IsEnabled = qopenglfResolveIsEnabled;TRUE | never evaluated | FALSE | never evaluated |
| |
| IsTexture = qopenglfResolveIsTexture;TRUE | never evaluated | FALSE | never evaluated |
| |
| LineWidth = qopenglfResolveLineWidth;TRUE | never evaluated | FALSE | never evaluated |
| |
| PixelStorei = qopenglfResolvePixelStorei;TRUE | never evaluated | FALSE | never evaluated |
| |
| PolygonOffset = qopenglfResolvePolygonOffset;TRUE | never evaluated | FALSE | never evaluated |
| |
| ReadPixels = qopenglfResolveReadPixels;TRUE | never evaluated | FALSE | never evaluated |
| |
| Scissor = qopenglfResolveScissor;TRUE | never evaluated | FALSE | never evaluated |
| |
| StencilFunc = qopenglfResolveStencilFunc;TRUE | never evaluated | FALSE | never evaluated |
| |
| StencilMask = qopenglfResolveStencilMask;TRUE | never evaluated | FALSE | never evaluated |
| |
| StencilOp = qopenglfResolveStencilOp;TRUE | never evaluated | FALSE | never evaluated |
| |
| TexImage2D = qopenglfResolveTexImage2D;TRUE | never evaluated | FALSE | never evaluated |
| |
| TexParameterf = qopenglfResolveTexParameterf;TRUE | never evaluated | FALSE | never evaluated |
| |
| TexParameterfv = qopenglfResolveTexParameterfv;TRUE | never evaluated | FALSE | never evaluated |
| |
| TexParameteri = qopenglfResolveTexParameteri;TRUE | never evaluated | FALSE | never evaluated |
| |
| TexParameteriv = qopenglfResolveTexParameteriv;TRUE | never evaluated | FALSE | never evaluated |
| |
| TexSubImage2D = qopenglfResolveTexSubImage2D;TRUE | never evaluated | FALSE | never evaluated |
| |
| Viewport = qopenglfResolveViewport;TRUE | never evaluated | FALSE | never evaluated |
| |
| } else {TRUE | never evaluated | FALSE | never evaluated |
| |
| #ifndef QT_OPENGL_DYNAMICTRUE | never evaluated | FALSE | never evaluated |
| |
| BindTexture = ::glBindTexture;TRUE | never evaluated | FALSE | never evaluated |
| |
| BlendFunc = ::glBlendFunc;TRUE | never evaluated | FALSE | never evaluated |
| |
| Clear = ::glClear;TRUE | never evaluated | FALSE | never evaluated |
| |
| ClearColor = ::glClearColor;TRUE | never evaluated | FALSE | never evaluated |
)TRUE | never evaluated | FALSE | never evaluated |
| |
2200 | f. never executed: f.ClearDepthf = qopenglfSpecialClearDepthf; ClearDepthf = qopenglfTranslateClearDepthf;never executed: f.ClearDepthf = qopenglfSpecialClearDepthf; | 0 |
| ClearStencil = ::glClearStencil; never executed: f.ClearDepthf = qopenglfSpecialClearDepthf; | |
| ColorMask = ::glColorMask; never executed: f.ClearDepthf = qopenglfSpecialClearDepthf; | |
| CopyTexImage2D = ::glCopyTexImage2D; never executed: f.ClearDepthf = qopenglfSpecialClearDepthf; | |
| CopyTexSubImage2D = ::glCopyTexSubImage2D; never executed: f.ClearDepthf = qopenglfSpecialClearDepthf; | |
| CullFace = ::glCullFace; never executed: f.ClearDepthf = qopenglfSpecialClearDepthf; | |
| DeleteTextures = ::glDeleteTextures; never executed: f.ClearDepthf = qopenglfSpecialClearDepthf; | |
| DepthFunc = ::glDepthFunc; never executed: f.ClearDepthf = qopenglfSpecialClearDepthf; | |
| DepthMask never executed: f.ClearDepthf = qopenglfSpecialClearDepthf; = ::glDepthMaskqopenglfSpecialClearDepthf;never executed: f.ClearDepthf = qopenglfSpecialClearDepthf; | |
2201 | if (!f.DepthRangef= qopenglfTranslateDepthRangef;TRUE | never evaluated | FALSE | never evaluated |
| 0 |
| Disable = ::glDisable;TRUE | never evaluated | FALSE | never evaluated |
| |
| DrawArrays = ::glDrawArrays;TRUE | never evaluated | FALSE | never evaluated |
| |
| DrawElements = ::glDrawElements;TRUE | never evaluated | FALSE | never evaluated |
| |
| Enable = ::glEnable;TRUE | never evaluated | FALSE | never evaluated |
| |
| Finish = ::glFinish;TRUE | never evaluated | FALSE | never evaluated |
| |
| Flush = ::glFlush;TRUE | never evaluated | FALSE | never evaluated |
| |
| FrontFace = ::glFrontFace;TRUE | never evaluated | FALSE | never evaluated |
| |
| GenTextures = ::glGenTextures;TRUE | never evaluated | FALSE | never evaluated |
| |
| GetBooleanv = ::glGetBooleanv;TRUE | never evaluated | FALSE | never evaluated |
| |
| GetError = ::glGetError;TRUE | never evaluated | FALSE | never evaluated |
| |
| GetFloatv = ::glGetFloatv;TRUE | never evaluated | FALSE | never evaluated |
| |
| GetIntegerv = ::glGetIntegerv;TRUE | never evaluated | FALSE | never evaluated |
| |
| GetString = ::glGetString;TRUE | never evaluated | FALSE | never evaluated |
| |
| GetTexParameterfv = ::glGetTexParameterfv;TRUE | never evaluated | FALSE | never evaluated |
| |
| GetTexParameteriv = ::glGetTexParameteriv;TRUE | never evaluated | FALSE | never evaluated |
| |
| Hint = ::glHint;TRUE | never evaluated | FALSE | never evaluated |
| |
| IsEnabled = ::glIsEnabled;TRUE | never evaluated | FALSE | never evaluated |
| |
| IsTexture = ::glIsTexture;TRUE | never evaluated | FALSE | never evaluated |
| |
| LineWidth = ::glLineWidth;TRUE | never evaluated | FALSE | never evaluated |
| |
| PixelStorei = ::glPixelStorei;TRUE | never evaluated | FALSE | never evaluated |
| |
| PolygonOffset = ::glPolygonOffset;TRUE | never evaluated | FALSE | never evaluated |
| |
| ReadPixels = ::glReadPixels;TRUE | never evaluated | FALSE | never evaluated |
| |
| Scissor = ::glScissor;TRUE | never evaluated | FALSE | never evaluated |
| |
| StencilFunc = ::glStencilFunc;TRUE | never evaluated | FALSE | never evaluated |
| |
| StencilMask = ::glStencilMask;TRUE | never evaluated | FALSE | never evaluated |
| |
| StencilOp = ::glStencilOp;TRUE | never evaluated | FALSE | never evaluated |
| |
| #if defined(Q_OS_OSXTRUE | never evaluated | FALSE | never evaluated |
)TRUE | never evaluated | FALSE | never evaluated |
| |
2202 | && MAC_OS_X_VERSION_MAX_ALLOWED < MAC_OS_X_VERSION_10_7 never executed: f.DepthRangef = qopenglfSpecialDepthRangef; | 0 |
| TexImage2D = reinterpret_cast<void (*)(GLenum, GLint, GLint, GLsizei, GLsizei, GLint, GLenum, GLenum, const GLvoid *)>(glTexImage2D); never executed: f.DepthRangef = qopenglfSpecialDepthRangef; | |
| #else never executed: f.DepthRangef = qopenglfSpecialDepthRangef; | |
| TexImage2D = glTexImage2D; never executed: f.DepthRangef = qopenglfSpecialDepthRangef; | |
| #endif never executed: f.DepthRangef = qopenglfSpecialDepthRangef; | |
| TexParameterf = ::glTexParameterf; never executed: f.DepthRangef = qopenglfSpecialDepthRangef; | |
| TexParameterfv = ::glTexParameterfv; never executed: f.DepthRangef = qopenglfSpecialDepthRangef; | |
| TexParameteri = ::glTexParameteri; never executed: f.DepthRangef = qopenglfSpecialDepthRangef; | |
| TexParameteriv = ::glTexParameteriv; never executed: f.DepthRangef = qopenglfSpecialDepthRangef; | |
| TexSubImage2D = ::glTexSubImage2D; never executed: f.DepthRangef = qopenglfSpecialDepthRangef; | |
| Viewport = ::glViewport; never executed: f.DepthRangef = qopenglfSpecialDepthRangef; | |
| #else qFatal("QOpenGLFunctions: Dynamic OpenGL builds do not support platforms with insufficient function resolving capabilities"); never executed: f.DepthRangef = qopenglfSpecialDepthRangef; | |
| #endif never executed: f.DepthRangef = qopenglfSpecialDepthRangef; | |
| } never executed: f.DepthRangef = qopenglfSpecialDepthRangef; | |
| | |
| ActiveTexture = qopenglfResolveActiveTexture; never executed: f.DepthRangef = qopenglfSpecialDepthRangef; | |
| AttachShader = qopenglfResolveAttachShader; never executed: f.DepthRangef = qopenglfSpecialDepthRangef; | |
| BindAttribLocation = qopenglfResolveBindAttribLocation; never executed: f.DepthRangef = qopenglfSpecialDepthRangef; | |
| BindBuffer = qopenglfResolveBindBuffer; never executed: f.DepthRangef = qopenglfSpecialDepthRangef; | |
| BindFramebuffer = qopenglfResolveBindFramebuffer; never executed: f.DepthRangef = qopenglfSpecialDepthRangef; | |
| BindRenderbuffer = qopenglfResolveBindRenderbuffer; never executed: f.DepthRangef = qopenglfSpecialDepthRangef; | |
| BlendColor = qopenglfResolveBlendColor; never executed: f.DepthRangef = qopenglfSpecialDepthRangef; | |
| BlendEquation = qopenglfResolveBlendEquation; never executed: f.DepthRangef = qopenglfSpecialDepthRangef; | |
| BlendEquationSeparate = qopenglfResolveBlendEquationSeparate; never executed: f.DepthRangef = qopenglfSpecialDepthRangef; | |
| BlendFuncSeparate = qopenglfResolveBlendFuncSeparate; never executed: f.DepthRangef = qopenglfSpecialDepthRangef; | |
| BufferData = qopenglfResolveBufferData; never executed: f.DepthRangef = qopenglfSpecialDepthRangef; | |
| BufferSubData = qopenglfResolveBufferSubData; never executed: f.DepthRangef = qopenglfSpecialDepthRangef; | |
| CheckFramebufferStatus = qopenglfResolveCheckFramebufferStatus; never executed: f.DepthRangef = qopenglfSpecialDepthRangef; | |
| CompileShader = qopenglfResolveCompileShader; never executed: f.DepthRangef = qopenglfSpecialDepthRangef; | |
| CompressedTexImage2D = qopenglfResolveCompressedTexImage2D; never executed: f.DepthRangef = qopenglfSpecialDepthRangef; | |
| CompressedTexSubImage2D = qopenglfResolveCompressedTexSubImage2D; never executed: f.DepthRangef = qopenglfSpecialDepthRangef; | |
| CreateProgram = qopenglfResolveCreateProgram; never executed: f.DepthRangef = qopenglfSpecialDepthRangef; | |
| CreateShader = qopenglfResolveCreateShader; never executed: f.DepthRangef = qopenglfSpecialDepthRangef; | |
| DeleteBuffers = qopenglfResolveDeleteBuffers; never executed: f.DepthRangef = qopenglfSpecialDepthRangef; | |
| DeleteFramebuffers = qopenglfResolveDeleteFramebuffers; never executed: f.DepthRangef = qopenglfSpecialDepthRangef; | |
| DeleteProgram = qopenglfResolveDeleteProgram; never executed: f.DepthRangef = qopenglfSpecialDepthRangef; | |
| DeleteRenderbuffers = qopenglfResolveDeleteRenderbuffers; never executed: f.DepthRangef = qopenglfSpecialDepthRangef; | |
| DeleteShader = qopenglfResolveDeleteShader; never executed: f.DepthRangef = qopenglfSpecialDepthRangef; | |
| DetachShader = qopenglfResolveDetachShader; never executed: f.DepthRangef = qopenglfSpecialDepthRangef; | |
| DisableVertexAttribArray = qopenglfResolveDisableVertexAttribArray; never executed: f.DepthRangef = qopenglfSpecialDepthRangef; | |
| EnableVertexAttribArray = qopenglfResolveEnableVertexAttribArray; never executed: f.DepthRangef = qopenglfSpecialDepthRangef; | |
| FramebufferRenderbuffer = qopenglfResolveFramebufferRenderbuffer; never executed: f.DepthRangef = qopenglfSpecialDepthRangef; | |
| FramebufferTexture2D = qopenglfResolveFramebufferTexture2D; never executed: f.DepthRangef = qopenglfSpecialDepthRangef; | |
| GenBuffers = qopenglfResolveGenBuffers; never executed: f.DepthRangef = qopenglfSpecialDepthRangef; | |
| GenerateMipmap = qopenglfResolveGenerateMipmap; never executed: f.DepthRangef = qopenglfSpecialDepthRangef; | |
| GenFramebuffers = qopenglfResolveGenFramebuffers; never executed: f.DepthRangef = qopenglfSpecialDepthRangef; | |
| GenRenderbuffers = qopenglfResolveGenRenderbuffers; never executed: f.DepthRangef = qopenglfSpecialDepthRangef; | |
| GetActiveAttrib = qopenglfResolveGetActiveAttrib; never executed: f.DepthRangef = qopenglfSpecialDepthRangef; | |
| GetActiveUniform = qopenglfResolveGetActiveUniform; never executed: f.DepthRangef = qopenglfSpecialDepthRangef; | |
| GetAttachedShaders = qopenglfResolveGetAttachedShaders; never executed: f.DepthRangef = qopenglfSpecialDepthRangef; | |
| GetAttribLocation = qopenglfResolveGetAttribLocation; never executed: f.DepthRangef = qopenglfSpecialDepthRangef; | |
| GetBufferParameteriv = qopenglfResolveGetBufferParameteriv; never executed: f.DepthRangef = qopenglfSpecialDepthRangef; | |
| GetFramebufferAttachmentParameteriv = qopenglfResolveGetFramebufferAttachmentParameteriv; never executed: f.DepthRangef = qopenglfSpecialDepthRangef; | |
| GetProgramiv = qopenglfResolveGetProgramiv; never executed: f.DepthRangef = qopenglfSpecialDepthRangef; | |
| GetProgramInfoLog = qopenglfResolveGetProgramInfoLog; never executed: f.DepthRangef = qopenglfSpecialDepthRangef; | |
| GetRenderbufferParameteriv = qopenglfResolveGetRenderbufferParameteriv; never executed: f.DepthRangef = qopenglfSpecialDepthRangef; | |
| GetShaderiv = qopenglfResolveGetShaderiv; never executed: f.DepthRangef = qopenglfSpecialDepthRangef; | |
| GetShaderInfoLog never executed: f.DepthRangef = qopenglfSpecialDepthRangef; f.DepthRangef = qopenglfResolveGetShaderInfoLogqopenglfSpecialDepthRangef;never executed: f.DepthRangef = qopenglfSpecialDepthRangef; | |
2203 | if (!f.GetShaderPrecisionFormat= qopenglfResolveGetShaderPrecisionFormat;TRUE | never evaluated | FALSE | never evaluated |
| 0 |
| GetShaderSource = qopenglfResolveGetShaderSource;TRUE | never evaluated | FALSE | never evaluated |
| |
| GetUniformfv = qopenglfResolveGetUniformfv;TRUE | never evaluated | FALSE | never evaluated |
| |
| GetUniformiv = qopenglfResolveGetUniformiv;TRUE | never evaluated | FALSE | never evaluated |
| |
| GetUniformLocation = qopenglfResolveGetUniformLocation;TRUE | never evaluated | FALSE | never evaluated |
| |
| GetVertexAttribfv = qopenglfResolveGetVertexAttribfv;TRUE | never evaluated | FALSE | never evaluated |
| |
| GetVertexAttribiv = qopenglfResolveGetVertexAttribiv;TRUE | never evaluated | FALSE | never evaluated |
| |
| GetVertexAttribPointerv = qopenglfResolveGetVertexAttribPointerv;TRUE | never evaluated | FALSE | never evaluated |
| |
| IsBuffer = qopenglfResolveIsBuffer;TRUE | never evaluated | FALSE | never evaluated |
| |
| IsFramebufferTRUE | never evaluated | FALSE | never evaluated |
)TRUE | never evaluated | FALSE | never evaluated |
| |
2204 | f.GetShaderPrecisionFormat never executed: f.GetShaderPrecisionFormat = qopenglfSpecialGetShaderPrecisionFormat; = qopenglfResolveIsFramebufferqopenglfSpecialGetShaderPrecisionFormat;never executed: f.GetShaderPrecisionFormat = qopenglfSpecialGetShaderPrecisionFormat; | 0 |
2205 | if (!f.IsProgram= qopenglfResolveIsProgram;TRUE | never evaluated | FALSE | never evaluated |
| 0 |
| IsRenderbufferTRUE | never evaluated | FALSE | never evaluated |
)TRUE | never evaluated | FALSE | never evaluated |
| |
2206 | f.IsProgram never executed: f.IsProgram = qopenglfSpecialIsProgram; = qopenglfResolveIsRenderbufferqopenglfSpecialIsProgram;never executed: f.IsProgram = qopenglfSpecialIsProgram; | 0 |
2207 | if (!f.IsShader= qopenglfResolveIsShader;TRUE | never evaluated | FALSE | never evaluated |
| 0 |
| LinkProgramTRUE | never evaluated | FALSE | never evaluated |
)TRUE | never evaluated | FALSE | never evaluated |
| |
2208 | f.IsShader never executed: f.IsShader = qopenglfSpecialIsShader; = qopenglfResolveLinkProgramqopenglfSpecialIsShader;never executed: f.IsShader = qopenglfSpecialIsShader; | 0 |
2209 | if (!f.ReleaseShaderCompiler= qopenglfResolveReleaseShaderCompiler;TRUE | never evaluated | FALSE | never evaluated |
| 0 |
| RenderbufferStorage = qopenglfResolveRenderbufferStorage;TRUE | never evaluated | FALSE | never evaluated |
| |
| SampleCoverage = qopenglfResolveSampleCoverage;TRUE | never evaluated | FALSE | never evaluated |
| |
| ShaderBinary = qopenglfResolveShaderBinary;TRUE | never evaluated | FALSE | never evaluated |
| |
| ShaderSource = qopenglfResolveShaderSource;TRUE | never evaluated | FALSE | never evaluated |
| |
| StencilFuncSeparate = qopenglfResolveStencilFuncSeparate;TRUE | never evaluated | FALSE | never evaluated |
| |
| StencilMaskSeparate = qopenglfResolveStencilMaskSeparate;TRUE | never evaluated | FALSE | never evaluated |
| |
| StencilOpSeparate = qopenglfResolveStencilOpSeparate;TRUE | never evaluated | FALSE | never evaluated |
| |
| Uniform1f = qopenglfResolveUniform1f;TRUE | never evaluated | FALSE | never evaluated |
| |
| Uniform1fv = qopenglfResolveUniform1fv;TRUE | never evaluated | FALSE | never evaluated |
| |
| Uniform1i = qopenglfResolveUniform1i;TRUE | never evaluated | FALSE | never evaluated |
| |
| Uniform1iv = qopenglfResolveUniform1iv;TRUE | never evaluated | FALSE | never evaluated |
| |
| Uniform2f = qopenglfResolveUniform2f;TRUE | never evaluated | FALSE | never evaluated |
| |
| Uniform2fv = qopenglfResolveUniform2fv;TRUE | never evaluated | FALSE | never evaluated |
| |
| Uniform2i = qopenglfResolveUniform2i;TRUE | never evaluated | FALSE | never evaluated |
| |
| Uniform2iv = qopenglfResolveUniform2iv;TRUE | never evaluated | FALSE | never evaluated |
| |
| Uniform3f = qopenglfResolveUniform3f;TRUE | never evaluated | FALSE | never evaluated |
| |
| Uniform3fv = qopenglfResolveUniform3fv;TRUE | never evaluated | FALSE | never evaluated |
| |
| Uniform3i = qopenglfResolveUniform3i;TRUE | never evaluated | FALSE | never evaluated |
| |
| Uniform3iv = qopenglfResolveUniform3iv;TRUE | never evaluated | FALSE | never evaluated |
| |
| Uniform4f = qopenglfResolveUniform4f;TRUE | never evaluated | FALSE | never evaluated |
| |
| Uniform4fv = qopenglfResolveUniform4fv;TRUE | never evaluated | FALSE | never evaluated |
| |
| Uniform4i = qopenglfResolveUniform4i;TRUE | never evaluated | FALSE | never evaluated |
| |
| Uniform4iv = qopenglfResolveUniform4iv;TRUE | never evaluated | FALSE | never evaluated |
| |
| UniformMatrix2fv = qopenglfResolveUniformMatrix2fv;TRUE | never evaluated | FALSE | never evaluated |
| |
| UniformMatrix3fv = qopenglfResolveUniformMatrix3fv;TRUE | never evaluated | FALSE | never evaluated |
| |
| UniformMatrix4fv = qopenglfResolveUniformMatrix4fv;TRUE | never evaluated | FALSE | never evaluated |
| |
| UseProgram = qopenglfResolveUseProgram;TRUE | never evaluated | FALSE | never evaluated |
| |
| ValidateProgram = qopenglfResolveValidateProgram;TRUE | never evaluated | FALSE | never evaluated |
| |
| VertexAttrib1f = qopenglfResolveVertexAttrib1f;TRUE | never evaluated | FALSE | never evaluated |
| |
| VertexAttrib1fv = qopenglfResolveVertexAttrib1fv;TRUE | never evaluated | FALSE | never evaluated |
| |
| VertexAttrib2f = qopenglfResolveVertexAttrib2f;TRUE | never evaluated | FALSE | never evaluated |
| |
| VertexAttrib2fv = qopenglfResolveVertexAttrib2fv;TRUE | never evaluated | FALSE | never evaluated |
| |
| VertexAttrib3f = qopenglfResolveVertexAttrib3f;TRUE | never evaluated | FALSE | never evaluated |
| |
| VertexAttrib3fv = qopenglfResolveVertexAttrib3fv;TRUE | never evaluated | FALSE | never evaluated |
| |
| VertexAttrib4f = qopenglfResolveVertexAttrib4f;TRUE | never evaluated | FALSE | never evaluated |
| |
| VertexAttrib4fv = qopenglfResolveVertexAttrib4fv;TRUE | never evaluated | FALSE | never evaluated |
| |
| VertexAttribPointerTRUE | never evaluated | FALSE | never evaluated |
)TRUE | never evaluated | FALSE | never evaluated |
| |
2210 | f.ReleaseShaderCompiler never executed: f.ReleaseShaderCompiler = qopenglfSpecialReleaseShaderCompiler; = qopenglfResolveVertexAttribPointerqopenglfSpecialReleaseShaderCompiler;never executed: f.ReleaseShaderCompiler = qopenglfSpecialReleaseShaderCompiler; | 0 |
2211 | #endif | - |
2212 | } never executed: end of block | 0 |
2213 | | - |
2214 | | - |
2215 | QT_OPENGL_IMPLEMENT(QOpenGLFunctionsPrivate, QT_OPENGL_FUNCTIONS) never executed: end of block never executed: end of block TRUE | never evaluated | FALSE | never evaluated |
| 0 |
2216 | | - |
2217 | | - |
2218 | | - |
2219 | | - |
2220 | | - |
2221 | | - |
2222 | | - |
2223 | | - |
2224 | | - |
2225 | | - |
2226 | | - |
2227 | | - |
2228 | | - |
2229 | | - |
2230 | | - |
2231 | | - |
2232 | | - |
2233 | | - |
2234 | | - |
2235 | | - |
2236 | | - |
2237 | | - |
2238 | | - |
2239 | | - |
2240 | | - |
2241 | | - |
2242 | | - |
2243 | | - |
2244 | | - |
2245 | | - |
2246 | | - |
2247 | | - |
2248 | | - |
2249 | | - |
2250 | | - |
2251 | | - |
2252 | | - |
2253 | | - |
2254 | | - |
2255 | | - |
2256 | | - |
2257 | | - |
2258 | | - |
2259 | | - |
2260 | | - |
2261 | | - |
2262 | | - |
2263 | | - |
2264 | | - |
2265 | | - |
2266 | | - |
2267 | | - |
2268 | | - |
2269 | | - |
2270 | | - |
2271 | | - |
2272 | | - |
2273 | | - |
2274 | | - |
2275 | | - |
2276 | | - |
2277 | | - |
2278 | | - |
2279 | | - |
2280 | | - |
2281 | | - |
2282 | | - |
2283 | | - |
2284 | | - |
2285 | | - |
2286 | | - |
2287 | | - |
2288 | | - |
2289 | | - |
2290 | | - |
2291 | | - |
2292 | | - |
2293 | | - |
2294 | | - |
2295 | | - |
2296 | | - |
2297 | | - |
2298 | | - |
2299 | | - |
2300 | | - |
2301 | | - |
2302 | | - |
2303 | | - |
2304 | | - |
2305 | | - |
2306 | | - |
2307 | | - |
2308 | | - |
2309 | | - |
2310 | | - |
2311 | | - |
2312 | | - |
2313 | | - |
2314 | | - |
2315 | | - |
2316 | | - |
2317 | | - |
2318 | | - |
2319 | | - |
2320 | | - |
2321 | | - |
2322 | | - |
2323 | | - |
2324 | | - |
2325 | | - |
2326 | | - |
2327 | | - |
2328 | | - |
2329 | | - |
2330 | | - |
2331 | | - |
2332 | | - |
2333 | | - |
2334 | | - |
2335 | | - |
2336 | | - |
2337 | | - |
2338 | | - |
2339 | | - |
2340 | | - |
2341 | | - |
2342 | | - |
2343 | | - |
2344 | | - |
2345 | | - |
2346 | | - |
2347 | | - |
2348 | | - |
2349 | | - |
2350 | | - |
2351 | | - |
2352 | | - |
2353 | | - |
2354 | | - |
2355 | | - |
2356 | | - |
2357 | | - |
2358 | | - |
2359 | | - |
2360 | | - |
2361 | | - |
2362 | | - |
2363 | | - |
2364 | | - |
2365 | | - |
2366 | | - |
2367 | | - |
2368 | | - |
2369 | | - |
2370 | | - |
2371 | | - |
2372 | | - |
2373 | | - |
2374 | | - |
2375 | | - |
2376 | | - |
2377 | | - |
2378 | | - |
2379 | | - |
2380 | | - |
2381 | | - |
2382 | | - |
2383 | | - |
2384 | | - |
2385 | | - |
2386 | | - |
2387 | | - |
2388 | | - |
2389 | | - |
2390 | | - |
2391 | | - |
2392 | | - |
2393 | | - |
2394 | | - |
2395 | | - |
2396 | | - |
2397 | | - |
2398 | | - |
2399 | | - |
2400 | | - |
2401 | | - |
2402 | | - |
2403 | | - |
2404 | | - |
2405 | | - |
2406 | | - |
2407 | | - |
2408 | | - |
2409 | | - |
2410 | | - |
2411 | | - |
2412 | | - |
2413 | | - |
2414 | | - |
2415 | | - |
2416 | | - |
2417 | | - |
2418 | | - |
2419 | | - |
2420 | | - |
2421 | | - |
2422 | | - |
2423 | | - |
2424 | | - |
2425 | | - |
2426 | | - |
2427 | | - |
2428 | | - |
2429 | | - |
2430 | | - |
2431 | | - |
2432 | | - |
2433 | | - |
2434 | | - |
2435 | | - |
2436 | | - |
2437 | | - |
2438 | | - |
2439 | | - |
2440 | | - |
2441 | | - |
2442 | | - |
2443 | | - |
2444 | | - |
2445 | | - |
2446 | | - |
2447 | | - |
2448 | | - |
2449 | | - |
2450 | | - |
2451 | | - |
2452 | | - |
2453 | | - |
2454 | | - |
2455 | | - |
2456 | | - |
2457 | | - |
2458 | | - |
2459 | | - |
2460 | | - |
2461 | | - |
2462 | | - |
2463 | | - |
2464 | | - |
2465 | | - |
2466 | | - |
2467 | | - |
2468 | | - |
2469 | | - |
2470 | | - |
2471 | | - |
2472 | | - |
2473 | | - |
2474 | | - |
2475 | | - |
2476 | | - |
2477 | | - |
2478 | | - |
2479 | | - |
2480 | | - |
2481 | | - |
2482 | | - |
2483 | | - |
2484 | | - |
2485 | | - |
2486 | | - |
2487 | | - |
2488 | | - |
2489 | | - |
2490 | | - |
2491 | | - |
2492 | | - |
2493 | | - |
2494 | | - |
2495 | | - |
2496 | | - |
2497 | | - |
2498 | | - |
2499 | | - |
2500 | | - |
2501 | | - |
2502 | | - |
2503 | | - |
2504 | | - |
2505 | | - |
2506 | | - |
2507 | | - |
2508 | | - |
2509 | | - |
2510 | | - |
2511 | | - |
2512 | | - |
2513 | | - |
2514 | | - |
2515 | | - |
2516 | | - |
2517 | | - |
2518 | | - |
2519 | | - |
2520 | | - |
2521 | | - |
2522 | | - |
2523 | | - |
2524 | | - |
2525 | | - |
2526 | | - |
2527 | | - |
2528 | | - |
2529 | | - |
2530 | | - |
2531 | | - |
2532 | | - |
2533 | | - |
2534 | | - |
2535 | | - |
2536 | | - |
2537 | | - |
2538 | | - |
2539 | | - |
2540 | | - |
2541 | | - |
2542 | | - |
2543 | | - |
2544 | | - |
2545 | | - |
2546 | | - |
2547 | | - |
2548 | | - |
2549 | | - |
2550 | | - |
2551 | | - |
2552 | | - |
2553 | | - |
2554 | | - |
2555 | | - |
2556 | | - |
2557 | | - |
2558 | | - |
2559 | | - |
2560 | | - |
2561 | | - |
2562 | | - |
2563 | | - |
2564 | | - |
2565 | | - |
2566 | | - |
2567 | | - |
2568 | | - |
2569 | | - |
2570 | | - |
2571 | | - |
2572 | | - |
2573 | | - |
2574 | | - |
2575 | | - |
2576 | | - |
2577 | | - |
2578 | | - |
2579 | | - |
2580 | | - |
2581 | | - |
2582 | | - |
2583 | | - |
2584 | | - |
2585 | | - |
2586 | | - |
2587 | | - |
2588 | | - |
2589 | | - |
2590 | | - |
2591 | | - |
2592 | | - |
2593 | | - |
2594 | | - |
2595 | | - |
2596 | | - |
2597 | | - |
2598 | | - |
2599 | | - |
2600 | | - |
2601 | | - |
2602 | | - |
2603 | | - |
2604 | | - |
2605 | | - |
2606 | | - |
2607 | | - |
2608 | | - |
2609 | | - |
2610 | | - |
2611 | | - |
2612 | | - |
2613 | | - |
2614 | | - |
2615 | | - |
2616 | | - |
2617 | | - |
2618 | | - |
2619 | | - |
2620 | | - |
2621 | | - |
2622 | | - |
2623 | | - |
2624 | | - |
2625 | | - |
2626 | | - |
2627 | | - |
2628 | | - |
2629 | | - |
2630 | | - |
2631 | | - |
2632 | | - |
2633 | | - |
2634 | | - |
2635 | | - |
2636 | | - |
2637 | | - |
2638 | | - |
2639 | | - |
2640 | | - |
2641 | | - |
2642 | | - |
2643 | | - |
2644 | | - |
2645 | | - |
2646 | | - |
2647 | | - |
2648 | | - |
2649 | | - |
2650 | | - |
2651 | | - |
2652 | | - |
2653 | | - |
2654 | | - |
2655 | | - |
2656 | | - |
2657 | | - |
2658 | | - |
2659 | | - |
2660 | | - |
2661 | | - |
2662 | | - |
2663 | | - |
2664 | | - |
2665 | | - |
2666 | | - |
2667 | | - |
2668 | | - |
2669 | | - |
2670 | | - |
2671 | | - |
2672 | | - |
2673 | | - |
2674 | | - |
2675 | | - |
2676 | | - |
2677 | | - |
2678 | | - |
2679 | | - |
2680 | | - |
2681 | | - |
2682 | | - |
2683 | | - |
2684 | | - |
2685 | | - |
2686 | | - |
2687 | | - |
2688 | | - |
2689 | | - |
2690 | | - |
2691 | | - |
2692 | | - |
2693 | | - |
2694 | | - |
2695 | | - |
2696 | | - |
2697 | | - |
2698 | | - |
2699 | | - |
2700 | | - |
2701 | | - |
2702 | | - |
2703 | | - |
2704 | | - |
2705 | | - |
2706 | | - |
2707 | | - |
2708 | | - |
2709 | | - |
2710 | | - |
2711 | | - |
2712 | | - |
2713 | | - |
2714 | | - |
2715 | | - |
2716 | | - |
2717 | | - |
2718 | | - |
2719 | | - |
2720 | | - |
2721 | | - |
2722 | | - |
2723 | | - |
2724 | | - |
2725 | | - |
2726 | | - |
2727 | | - |
2728 | | - |
2729 | | - |
2730 | | - |
2731 | | - |
2732 | | - |
2733 | | - |
2734 | | - |
2735 | | - |
2736 | | - |
2737 | | - |
2738 | | - |
2739 | | - |
2740 | | - |
2741 | | - |
2742 | | - |
2743 | | - |
2744 | | - |
2745 | | - |
2746 | | - |
2747 | | - |
2748 | | - |
2749 | | - |
2750 | | - |
2751 | | - |
2752 | | - |
2753 | | - |
2754 | | - |
2755 | | - |
2756 | | - |
2757 | | - |
2758 | | - |
2759 | | - |
2760 | | - |
2761 | | - |
2762 | | - |
2763 | | - |
2764 | | - |
2765 | | - |
2766 | | - |
2767 | | - |
2768 | | - |
2769 | | - |
2770 | | - |
2771 | | - |
2772 | | - |
2773 | | - |
2774 | | - |
2775 | | - |
2776 | | - |
2777 | | - |
2778 | | - |
2779 | | - |
2780 | | - |
2781 | | - |
2782 | | - |
2783 | | - |
2784 | | - |
2785 | | - |
2786 | | - |
2787 | | - |
2788 | | - |
2789 | | - |
2790 | | - |
2791 | | - |
2792 | | - |
2793 | | - |
2794 | | - |
2795 | | - |
2796 | | - |
2797 | | - |
2798 | | - |
2799 | | - |
2800 | | - |
2801 | | - |
2802 | | - |
2803 | | - |
2804 | | - |
2805 | | - |
2806 | | - |
2807 | | - |
2808 | | - |
2809 | | - |
2810 | | - |
2811 | | - |
2812 | | - |
2813 | | - |
2814 | | - |
2815 | | - |
2816 | | - |
2817 | | - |
2818 | | - |
2819 | | - |
2820 | | - |
2821 | | - |
2822 | | - |
2823 | | - |
2824 | | - |
2825 | | - |
2826 | | - |
2827 | | - |
2828 | | - |
2829 | | - |
2830 | | - |
2831 | | - |
2832 | | - |
2833 | | - |
2834 | | - |
2835 | | - |
2836 | | - |
2837 | | - |
2838 | | - |
2839 | | - |
2840 | | - |
2841 | | - |
2842 | | - |
2843 | | - |
2844 | | - |
2845 | | - |
2846 | | - |
2847 | | - |
2848 | | - |
2849 | | - |
2850 | | - |
2851 | | - |
2852 | | - |
2853 | | - |
2854 | | - |
2855 | | - |
2856 | | - |
2857 | | - |
2858 | | - |
2859 | | - |
2860 | | - |
2861 | | - |
2862 | | - |
2863 | | - |
2864 | | - |
2865 | | - |
2866 | | - |
2867 | | - |
2868 | | - |
2869 | | - |
2870 | | - |
2871 | | - |
2872 | | - |
2873 | | - |
2874 | | - |
2875 | | - |
2876 | | - |
2877 | | - |
2878 | | - |
2879 | | - |
2880 | | - |
2881 | | - |
2882 | | - |
2883 | | - |
2884 | | - |
2885 | | - |
2886 | | - |
2887 | | - |
2888 | | - |
2889 | | - |
2890 | | - |
2891 | | - |
2892 | | - |
2893 | | - |
2894 | | - |
2895 | | - |
2896 | | - |
2897 | | - |
2898 | | - |
2899 | | - |
2900 | | - |
2901 | | - |
2902 | | - |
2903 | | - |
2904 | | - |
2905 | | - |
2906 | | - |
2907 | | - |
2908 | | - |
2909 | | - |
2910 | | - |
2911 | | - |
2912 | | - |
2913 | | - |
2914 | | - |
2915 | | - |
2916 | | - |
2917 | | - |
2918 | | - |
2919 | | - |
2920 | | - |
2921 | | - |
2922 | | - |
2923 | | - |
2924 | | - |
2925 | | - |
2926 | | - |
2927 | | - |
2928 | | - |
2929 | | - |
2930 | | - |
2931 | | - |
2932 | | - |
2933 | | - |
2934 | | - |
2935 | | - |
2936 | | - |
2937 | | - |
2938 | | - |
2939 | | - |
2940 | | - |
2941 | | - |
2942 | | - |
2943 | | - |
2944 | | - |
2945 | | - |
2946 | | - |
2947 | | - |
2948 | | - |
2949 | | - |
2950 | | - |
2951 | | - |
2952 | | - |
2953 | | - |
2954 | | - |
2955 | | - |
2956 | | - |
2957 | | - |
2958 | | - |
2959 | | - |
2960 | | - |
2961 | | - |
2962 | | - |
2963 | | - |
2964 | | - |
2965 | | - |
2966 | | - |
2967 | | - |
2968 | | - |
2969 | | - |
2970 | | - |
2971 | | - |
2972 | | - |
2973 | | - |
2974 | | - |
2975 | | - |
2976 | | - |
2977 | | - |
2978 | | - |
2979 | | - |
2980 | | - |
2981 | | - |
2982 | | - |
2983 | | - |
2984 | | - |
2985 | | - |
2986 | | - |
2987 | | - |
2988 | | - |
2989 | | - |
2990 | | - |
2991 | | - |
2992 | | - |
2993 | | - |
2994 | | - |
2995 | | - |
2996 | | - |
2997 | | - |
2998 | | - |
2999 | | - |
3000 | | - |
3001 | | - |
3002 | | - |
3003 | | - |
3004 | | - |
3005 | | - |
3006 | | - |
3007 | | - |
3008 | | - |
3009 | | - |
3010 | | - |
3011 | | - |
3012 | | - |
3013 | | - |
3014 | | - |
3015 | | - |
3016 | | - |
3017 | | - |
3018 | | - |
3019 | | - |
3020 | | - |
3021 | | - |
3022 | | - |
3023 | | - |
3024 | | - |
3025 | | - |
3026 | | - |
3027 | | - |
3028 | | - |
3029 | | - |
3030 | | - |
3031 | | - |
3032 | | - |
3033 | | - |
3034 | | - |
3035 | | - |
3036 | | - |
3037 | | - |
3038 | | - |
3039 | | - |
3040 | | - |
3041 | | - |
3042 | | - |
3043 | | - |
3044 | | - |
3045 | | - |
3046 | | - |
3047 | | - |
3048 | | - |
3049 | | - |
3050 | | - |
3051 | | - |
3052 | | - |
3053 | | - |
3054 | | - |
3055 | | - |
3056 | | - |
3057 | | - |
3058 | | - |
3059 | | - |
3060 | | - |
3061 | | - |
3062 | | - |
3063 | | - |
3064 | | - |
3065 | | - |
3066 | | - |
3067 | | - |
3068 | | - |
3069 | | - |
3070 | | - |
3071 | | - |
3072 | | - |
3073 | | - |
3074 | | - |
3075 | | - |
3076 | | - |
3077 | | - |
3078 | | - |
3079 | | - |
3080 | | - |
3081 | | - |
3082 | | - |
3083 | | - |
3084 | | - |
3085 | | - |
3086 | | - |
3087 | | - |
3088 | | - |
3089 | | - |
3090 | | - |
3091 | | - |
3092 | | - |
3093 | | - |
3094 | | - |
3095 | | - |
3096 | | - |
3097 | | - |
3098 | | - |
3099 | | - |
3100 | | - |
3101 | | - |
3102 | | - |
3103 | | - |
3104 | | - |
3105 | | - |
3106 | | - |
3107 | | - |
3108 | | - |
3109 | | - |
3110 | | - |
3111 | | - |
3112 | | - |
3113 | | - |
3114 | | - |
3115 | | - |
3116 | | - |
3117 | | - |
3118 | | - |
3119 | | - |
3120 | | - |
3121 | | - |
3122 | | - |
3123 | | - |
3124 | | - |
3125 | | - |
3126 | | - |
3127 | | - |
3128 | | - |
3129 | | - |
3130 | | - |
3131 | | - |
3132 | | - |
3133 | | - |
3134 | | - |
3135 | | - |
3136 | | - |
3137 | | - |
3138 | | - |
3139 | | - |
3140 | | - |
3141 | | - |
3142 | | - |
3143 | | - |
3144 | | - |
3145 | | - |
3146 | | - |
3147 | | - |
3148 | | - |
3149 | | - |
3150 | | - |
3151 | | - |
3152 | | - |
3153 | | - |
3154 | | - |
3155 | | - |
3156 | | - |
3157 | | - |
3158 | | - |
3159 | | - |
3160 | | - |
3161 | | - |
3162 | | - |
3163 | | - |
3164 | | - |
3165 | | - |
3166 | | - |
3167 | | - |
3168 | | - |
3169 | | - |
3170 | | - |
3171 | | - |
3172 | | - |
3173 | | - |
3174 | | - |
3175 | | - |
3176 | | - |
3177 | | - |
3178 | | - |
3179 | | - |
3180 | | - |
3181 | | - |
3182 | | - |
3183 | | - |
3184 | | - |
3185 | | - |
3186 | | - |
3187 | | - |
3188 | | - |
3189 | | - |
3190 | | - |
3191 | | - |
3192 | | - |
3193 | | - |
3194 | | - |
3195 | | - |
3196 | | - |
3197 | | - |
3198 | | - |
3199 | | - |
3200 | | - |
3201 | | - |
3202 | | - |
3203 | | - |
3204 | | - |
3205 | | - |
3206 | | - |
3207 | | - |
3208 | | - |
3209 | | - |
3210 | | - |
3211 | | - |
3212 | | - |
3213 | | - |
3214 | | - |
3215 | | - |
3216 | | - |
3217 | | - |
3218 | | - |
3219 | | - |
3220 | | - |
3221 | | - |
3222 | | - |
3223 | | - |
3224 | | - |
3225 | | - |
3226 | | - |
3227 | | - |
3228 | | - |
3229 | | - |
3230 | | - |
3231 | | - |
3232 | | - |
3233 | | - |
3234 | | - |
3235 | | - |
3236 | | - |
3237 | | - |
3238 | | - |
3239 | | - |
3240 | | - |
3241 | | - |
3242 | | - |
3243 | | - |
3244 | | - |
3245 | | - |
3246 | | - |
3247 | | - |
3248 | | - |
3249 | | - |
3250 | | - |
3251 | | - |
3252 | | - |
3253 | | - |
3254 | | - |
3255 | | - |
3256 | | - |
3257 | | - |
3258 | | - |
3259 | | - |
3260 | | - |
3261 | | - |
3262 | | - |
3263 | | - |
3264 | | - |
3265 | | - |
3266 | | - |
3267 | | - |
3268 | | - |
3269 | | - |
3270 | | - |
3271 | | - |
3272 | | - |
3273 | | - |
3274 | | - |
3275 | | - |
3276 | | - |
3277 | | - |
3278 | | - |
3279 | | - |
3280 | | - |
3281 | | - |
3282 | | - |
3283 | | - |
3284 | | - |
3285 | | - |
3286 | | - |
3287 | | - |
3288 | | - |
3289 | | - |
3290 | | - |
3291 | | - |
3292 | | - |
3293 | | - |
3294 | | - |
3295 | | - |
3296 | | - |
3297 | | - |
3298 | | - |
3299 | | - |
3300 | | - |
3301 | | - |
3302 | | - |
3303 | | - |
3304 | | - |
3305 | | - |
3306 | | - |
3307 | | - |
3308 | | - |
3309 | | - |
3310 | | - |
3311 | | - |
3312 | | - |
3313 | | - |
3314 | | - |
3315 | | - |
3316 | | - |
3317 | | - |
3318 | | - |
3319 | | - |
3320 | | - |
3321 | | - |
3322 | | - |
3323 | | - |
3324 | | - |
3325 | | - |
3326 | | - |
3327 | | - |
3328 | | - |
3329 | | - |
3330 | | - |
3331 | | - |
3332 | | - |
3333 | | - |
3334 | | - |
3335 | | - |
3336 | | - |
3337 | | - |
3338 | | - |
3339 | | - |
3340 | | - |
3341 | | - |
3342 | | - |
3343 | | - |
3344 | | - |
3345 | | - |
3346 | | - |
3347 | | - |
3348 | | - |
3349 | | - |
3350 | | - |
3351 | | - |
3352 | | - |
3353 | | - |
3354 | | - |
3355 | | - |
3356 | | - |
3357 | | - |
3358 | | - |
3359 | | - |
3360 | | - |
3361 | | - |
3362 | | - |
3363 | | - |
3364 | | - |
3365 | | - |
3366 | | - |
3367 | | - |
3368 | | - |
3369 | | - |
3370 | | - |
3371 | | - |
3372 | | - |
3373 | | - |
3374 | | - |
3375 | | - |
3376 | | - |
3377 | | - |
3378 | | - |
3379 | | - |
3380 | | - |
3381 | | - |
3382 | | - |
3383 | | - |
3384 | | - |
3385 | | - |
3386 | | - |
3387 | | - |
3388 | | - |
3389 | | - |
3390 | | - |
3391 | | - |
3392 | | - |
3393 | | - |
3394 | | - |
3395 | | - |
3396 | | - |
3397 | | - |
3398 | | - |
3399 | | - |
3400 | | - |
3401 | | - |
3402 | | - |
3403 | | - |
3404 | | - |
3405 | | - |
3406 | | - |
3407 | | - |
3408 | | - |
3409 | | - |
3410 | | - |
3411 | | - |
3412 | | - |
3413 | | - |
3414 | | - |
3415 | | - |
3416 | | - |
3417 | | - |
3418 | | - |
3419 | | - |
3420 | | - |
3421 | | - |
3422 | | - |
3423 | | - |
3424 | | - |
3425 | | - |
3426 | | - |
3427 | | - |
3428 | | - |
3429 | | - |
3430 | | - |
3431 | | - |
3432 | | - |
3433 | | - |
3434 | | - |
3435 | | - |
3436 | | - |
3437 | | - |
3438 | | - |
3439 | | - |
3440 | | - |
3441 | | - |
3442 | | - |
3443 | | - |
3444 | | - |
3445 | | - |
3446 | | - |
3447 | | - |
3448 | | - |
3449 | | - |
3450 | | - |
3451 | | - |
3452 | | - |
3453 | | - |
3454 | | - |
3455 | | - |
3456 | | - |
3457 | | - |
3458 | | - |
3459 | | - |
3460 | | - |
3461 | | - |
3462 | | - |
3463 | | - |
3464 | | - |
3465 | | - |
3466 | | - |
3467 | | - |
3468 | | - |
3469 | | - |
3470 | | - |
3471 | | - |
3472 | | - |
3473 | | - |
3474 | | - |
3475 | | - |
3476 | | - |
3477 | | - |
3478 | | - |
3479 | | - |
3480 | | - |
3481 | | - |
3482 | | - |
3483 | | - |
3484 | | - |
3485 | | - |
3486 | | - |
3487 | | - |
3488 | | - |
3489 | | - |
3490 | | - |
3491 | | - |
3492 | | - |
3493 | | - |
3494 | | - |
3495 | | - |
3496 | | - |
3497 | | - |
3498 | | - |
3499 | | - |
3500 | | - |
3501 | | - |
3502 | | - |
3503 | | - |
3504 | | - |
3505 | | - |
3506 | | - |
3507 | | - |
3508 | | - |
3509 | | - |
3510 | | - |
3511 | | - |
3512 | | - |
3513 | | - |
3514 | | - |
3515 | | - |
3516 | | - |
3517 | | - |
3518 | | - |
3519 | | - |
3520 | | - |
3521 | | - |
3522 | | - |
3523 | | - |
3524 | | - |
3525 | | - |
3526 | | - |
3527 | | - |
3528 | | - |
3529 | | - |
3530 | | - |
3531 | | - |
3532 | | - |
3533 | | - |
3534 | | - |
3535 | | - |
3536 | | - |
3537 | | - |
3538 | | - |
3539 | | - |
3540 | | - |
3541 | | - |
3542 | | - |
3543 | | - |
3544 | | - |
3545 | | - |
3546 | | - |
3547 | | - |
3548 | | - |
3549 | | - |
3550 | | - |
3551 | | - |
3552 | | - |
3553 | | - |
3554 | | - |
3555 | | - |
3556 | | - |
3557 | | - |
3558 | | - |
3559 | | - |
3560 | | - |
3561 | | - |
3562 | | - |
3563 | | - |
3564 | | - |
3565 | | - |
3566 | | - |
3567 | | - |
3568 | | - |
3569 | | - |
3570 | | - |
3571 | | - |
3572 | | - |
3573 | | - |
3574 | | - |
3575 | | - |
3576 | | - |
3577 | | - |
3578 | | - |
3579 | | - |
3580 | | - |
3581 | | - |
3582 | | - |
3583 | | - |
3584 | | - |
3585 | | - |
3586 | | - |
3587 | | - |
3588 | | - |
3589 | | - |
3590 | | - |
3591 | | - |
3592 | | - |
3593 | | - |
3594 | | - |
3595 | | - |
3596 | | - |
3597 | | - |
3598 | | - |
3599 | | - |
3600 | | - |
3601 | | - |
3602 | | - |
3603 | | - |
3604 | | - |
3605 | | - |
3606 | | - |
3607 | | - |
3608 | | - |
3609 | | - |
3610 | | - |
3611 | | - |
3612 | | - |
3613 | | - |
3614 | | - |
3615 | | - |
3616 | | - |
3617 | | - |
3618 | | - |
3619 | | - |
3620 | | - |
3621 | | - |
3622 | | - |
3623 | | - |
3624 | | - |
3625 | | - |
3626 | | - |
3627 | | - |
3628 | | - |
3629 | | - |
3630 | | - |
3631 | | - |
3632 | | - |
3633 | | - |
3634 | | - |
3635 | | - |
3636 | | - |
3637 | | - |
3638 | | - |
3639 | | - |
3640 | | - |
3641 | | - |
3642 | | - |
3643 | | - |
3644 | | - |
3645 | | - |
3646 | | - |
3647 | | - |
3648 | | - |
3649 | | - |
3650 | | - |
3651 | | - |
3652 | | - |
3653 | | - |
3654 | | - |
3655 | | - |
3656 | | - |
3657 | | - |
3658 | | - |
3659 | | - |
3660 | | - |
3661 | | - |
3662 | | - |
3663 | | - |
3664 | | - |
3665 | | - |
3666 | | - |
3667 | | - |
3668 | | - |
3669 | | - |
3670 | | - |
3671 | | - |
3672 | | - |
3673 | | - |
3674 | | - |
3675 | | - |
3676 | | - |
3677 | | - |
3678 | | - |
3679 | | - |
3680 | | - |
3681 | | - |
3682 | | - |
3683 | | - |
3684 | | - |
3685 | | - |
3686 | | - |
3687 | | - |
3688 | | - |
3689 | | - |
3690 | | - |
3691 | | - |
3692 | | - |
3693 | | - |
3694 | | - |
3695 | | - |
3696 | | - |
3697 | | - |
3698 | | - |
3699 | | - |
3700 | | - |
3701 | | - |
3702 | | - |
3703 | | - |
3704 | | - |
3705 | | - |
3706 | | - |
3707 | | - |
3708 | | - |
3709 | | - |
3710 | | - |
3711 | | - |
3712 | | - |
3713 | | - |
3714 | | - |
3715 | | - |
3716 | | - |
3717 | | - |
3718 | | - |
3719 | | - |
3720 | | - |
3721 | | - |
3722 | | - |
3723 | | - |
3724 | | - |
3725 | | - |
3726 | | - |
3727 | | - |
3728 | | - |
3729 | | - |
3730 | | - |
3731 | | - |
3732 | | - |
3733 | | - |
3734 | | - |
3735 | | - |
3736 | | - |
3737 | | - |
3738 | | - |
3739 | | - |
3740 | | - |
3741 | | - |
3742 | | - |
3743 | | - |
3744 | | - |
3745 | | - |
3746 | | - |
3747 | | - |
3748 | | - |
3749 | | - |
3750 | | - |
3751 | | - |
3752 | | - |
3753 | | - |
3754 | | - |
3755 | | - |
3756 | | - |
3757 | | - |
3758 | | - |
3759 | | - |
3760 | | - |
3761 | | - |
3762 | | - |
3763 | | - |
3764 | | - |
3765 | | - |
3766 | | - |
3767 | | - |
3768 | | - |
3769 | | - |
3770 | | - |
3771 | | - |
3772 | | - |
3773 | | - |
3774 | | - |
3775 | | - |
3776 | | - |
3777 | | - |
3778 | | - |
3779 | | - |
3780 | | - |
3781 | | - |
3782 | | - |
3783 | | - |
3784 | | - |
3785 | | - |
3786 | | - |
3787 | | - |
3788 | | - |
3789 | | - |
3790 | | - |
3791 | | - |
3792 | | - |
3793 | | - |
3794 | | - |
3795 | | - |
3796 | | - |
3797 | | - |
3798 | | - |
3799 | | - |
3800 | | - |
3801 | | - |
3802 | | - |
3803 | | - |
3804 | | - |
3805 | | - |
3806 | | - |
3807 | | - |
3808 | | - |
3809 | | - |
3810 | | - |
3811 | | - |
3812 | | - |
3813 | | - |
3814 | | - |
3815 | | - |
3816 | | - |
3817 | | - |
3818 | | - |
3819 | | - |
3820 | | - |
3821 | | - |
3822 | | - |
3823 | | - |
3824 | | - |
3825 | | - |
3826 | | - |
3827 | | - |
3828 | | - |
3829 | | - |
3830 | | - |
3831 | | - |
3832 | | - |
3833 | | - |
3834 | | - |
3835 | | - |
3836 | | - |
3837 | | - |
3838 | | - |
3839 | | - |
3840 | | - |
3841 | | - |
3842 | | - |
3843 | | - |
3844 | | - |
3845 | | - |
3846 | | - |
3847 | | - |
3848 | | - |
3849 | | - |
3850 | | - |
3851 | | - |
3852 | | - |
3853 | | - |
3854 | | - |
3855 | | - |
3856 | | - |
3857 | | - |
3858 | | - |
3859 | | - |
3860 | | - |
3861 | | - |
3862 | | - |
3863 | | - |
3864 | | - |
3865 | | - |
3866 | | - |
3867 | | - |
3868 | | - |
3869 | | - |
3870 | | - |
3871 | | - |
3872 | | - |
3873 | | - |
3874 | | - |
3875 | | - |
3876 | | - |
3877 | | - |
3878 | | - |
3879 | | - |
3880 | | - |
3881 | | - |
3882 | | - |
3883 | | - |
3884 | | - |
3885 | | - |
3886 | | - |
3887 | | - |
3888 | | - |
3889 | | - |
3890 | | - |
3891 | | - |
3892 | | - |
3893 | | - |
3894 | | - |
3895 | | - |
3896 | | - |
3897 | | - |
3898 | | - |
3899 | | - |
3900 | | - |
3901 | | - |
3902 | | - |
3903 | | - |
3904 | | - |
3905 | | - |
3906 | | - |
3907 | | - |
3908 | | - |
3909 | | - |
3910 | | - |
3911 | | - |
3912 | | - |
3913 | | - |
3914 | | - |
3915 | | - |
3916 | | - |
3917 | | - |
3918 | | - |
3919 | | - |
3920 | | - |
3921 | | - |
3922 | | - |
3923 | | - |
3924 | | - |
3925 | | - |
3926 | | - |
3927 | | - |
3928 | | - |
3929 | | - |
3930 | | - |
3931 | | - |
3932 | | - |
3933 | | - |
3934 | | - |
3935 | | - |
3936 | | - |
3937 | | - |
3938 | | - |
3939 | | - |
3940 | | - |
3941 | | - |
3942 | | - |
3943 | | - |
3944 | | - |
3945 | | - |
3946 | | - |
3947 | | - |
3948 | | - |
3949 | | - |
3950 | | - |
3951 | | - |
3952 | | - |
3953 | | - |
3954 | | - |
3955 | | - |
3956 | | - |
3957 | | - |
3958 | | - |
3959 | | - |
3960 | | - |
3961 | | - |
3962 | | - |
3963 | | - |
3964 | | - |
3965 | | - |
3966 | | - |
3967 | | - |
3968 | | - |
3969 | | - |
3970 | | - |
3971 | | - |
3972 | | - |
3973 | | - |
3974 | | - |
3975 | | - |
3976 | | - |
3977 | | - |
3978 | | - |
3979 | | - |
3980 | | - |
3981 | | - |
3982 | | - |
3983 | | - |
3984 | | - |
3985 | | - |
3986 | | - |
3987 | | - |
3988 | | - |
3989 | | - |
3990 | | - |
3991 | | - |
3992 | | - |
3993 | | - |
3994 | | - |
3995 | | - |
3996 | | - |
3997 | | - |
3998 | | - |
3999 | | - |
4000 | | - |
4001 | | - |
4002 | | - |
4003 | | - |
4004 | | - |
4005 | | - |
4006 | | - |
4007 | | - |
4008 | | - |
4009 | | - |
4010 | | - |
4011 | | - |
4012 | | - |
4013 | | - |
4014 | | - |
4015 | | - |
4016 | | - |
4017 | | - |
4018 | | - |
4019 | | - |
4020 | | - |
4021 | | - |
4022 | | - |
4023 | | - |
4024 | | - |
4025 | | - |
4026 | | - |
4027 | | - |
4028 | | - |
4029 | | - |
4030 | | - |
4031 | | - |
4032 | | - |
4033 | | - |
4034 | | - |
4035 | | - |
4036 | | - |
4037 | | - |
4038 | | - |
4039 | | - |
4040 | | - |
4041 | | - |
4042 | | - |
4043 | | - |
4044 | | - |
4045 | | - |
4046 | | - |
4047 | | - |
4048 | | - |
4049 | | - |
4050 | | - |
4051 | | - |
4052 | | - |
4053 | | - |
4054 | | - |
4055 | | - |
4056 | | - |
4057 | | - |
4058 | | - |
4059 | | - |
4060 | | - |
4061 | | - |
4062 | | - |
4063 | | - |
4064 | | - |
4065 | | - |
4066 | | - |
4067 | | - |
4068 | | - |
4069 | | - |
4070 | | - |
4071 | | - |
4072 | | - |
4073 | | - |
4074 | | - |
4075 | | - |
4076 | | - |
4077 | | - |
4078 | | - |
4079 | | - |
4080 | | - |
4081 | | - |
4082 | | - |
4083 | | - |
4084 | | - |
4085 | | - |
4086 | | - |
4087 | | - |
4088 | | - |
4089 | | - |
4090 | | - |
4091 | | - |
4092 | | - |
4093 | | - |
4094 | | - |
4095 | | - |
4096 | | - |
4097 | | - |
4098 | | - |
4099 | | - |
4100 | | - |
4101 | | - |
4102 | | - |
4103 | | - |
4104 | | - |
4105 | | - |
4106 | | - |
4107 | | - |
4108 | | - |
4109 | | - |
4110 | | - |
4111 | | - |
4112 | | - |
4113 | | - |
4114 | | - |
4115 | | - |
4116 | | - |
4117 | | - |
4118 | | - |
4119 | | - |
4120 | | - |
4121 | | - |
4122 | | - |
4123 | | - |
4124 | | - |
4125 | | - |
4126 | | - |
4127 | | - |
4128 | | - |
4129 | | - |
4130 | | - |
4131 | | - |
4132 | | - |
4133 | | - |
4134 | | - |
4135 | | - |
4136 | | - |
4137 | | - |
4138 | | - |
4139 | | - |
4140 | | - |
4141 | | - |
4142 | | - |
4143 | | - |
4144 | | - |
4145 | | - |
4146 | | - |
4147 | | - |
4148 | | - |
4149 | | - |
4150 | | - |
4151 | | - |
4152 | | - |
4153 | | - |
4154 | | - |
4155 | | - |
4156 | | - |
4157 | | - |
4158 | | - |
4159 | | - |
4160 | | - |
4161 | | - |
4162 | | - |
4163 | | - |
4164 | | - |
4165 | | - |
4166 | | - |
4167 | | - |
4168 | | - |
4169 | | - |
4170 | | - |
4171 | | - |
4172 | | - |
4173 | | - |
4174 | | - |
4175 | | - |
4176 | | - |
4177 | | - |
4178 | | - |
4179 | | - |
4180 | | - |
4181 | | - |
4182 | | - |
4183 | | - |
4184 | | - |
4185 | | - |
4186 | | - |
4187 | | - |
4188 | | - |
4189 | | - |
4190 | | - |
4191 | | - |
4192 | | - |
4193 | | - |
4194 | | - |
4195 | | - |
4196 | | - |
4197 | | - |
4198 | | - |
4199 | | - |
4200 | | - |
4201 | | - |
4202 | | - |
4203 | | - |
4204 | | - |
4205 | | - |
4206 | | - |
4207 | | - |
4208 | | - |
4209 | | - |
4210 | | - |
4211 | | - |
4212 | | - |
4213 | | - |
4214 | | - |
4215 | | - |
4216 | | - |
4217 | | - |
4218 | | - |
4219 | | - |
4220 | | - |
4221 | | - |
4222 | | - |
4223 | | - |
4224 | | - |
4225 | | - |
4226 | | - |
4227 | | - |
4228 | | - |
4229 | | - |
4230 | | - |
4231 | | - |
4232 | | - |
4233 | | - |
4234 | | - |
4235 | | - |
4236 | | - |
4237 | | - |
4238 | | - |
4239 | | - |
4240 | | - |
4241 | | - |
4242 | | - |
4243 | | - |
4244 | | - |
4245 | | - |
4246 | | - |
4247 | | - |
4248 | | - |
4249 | | - |
4250 | | - |
4251 | | - |
4252 | | - |
4253 | | - |
4254 | | - |
4255 | | - |
4256 | | - |
4257 | | - |
4258 | | - |
4259 | | - |
4260 | | - |
4261 | | - |
4262 | | - |
4263 | | - |
4264 | | - |
4265 | | - |
4266 | | - |
4267 | | - |
4268 | | - |
4269 | | - |
4270 | | - |
4271 | | - |
4272 | | - |
4273 | | - |
4274 | | - |
4275 | | - |
4276 | | - |
4277 | | - |
4278 | | - |
4279 | | - |
4280 | | - |
4281 | | - |
4282 | | - |
4283 | | - |
4284 | | - |
4285 | | - |
4286 | | - |
4287 | | - |
4288 | | - |
4289 | | - |
4290 | | - |
4291 | | - |
4292 | | - |
4293 | | - |
4294 | | - |
4295 | | - |
4296 | | - |
4297 | | - |
4298 | | - |
4299 | | - |
4300 | | - |
4301 | | - |
4302 | | - |
4303 | | - |
4304 | | - |
4305 | | - |
4306 | | - |
4307 | | - |
4308 | | - |
4309 | | - |
4310 | | - |
4311 | | - |
4312 | | - |
4313 | | - |
4314 | | - |
4315 | | - |
4316 | | - |
4317 | | - |
4318 | | - |
4319 | | - |
4320 | | - |
4321 | | - |
4322 | | - |
4323 | | - |
4324 | | - |
4325 | | - |
4326 | | - |
4327 | | - |
4328 | | - |
4329 | | - |
4330 | | - |
4331 | | - |
4332 | | - |
4333 | | - |
4334 | | - |
4335 | | - |
4336 | | - |
4337 | | - |
4338 | | - |
4339 | | - |
4340 | | - |
4341 | | - |
4342 | | - |
4343 | | - |
4344 | | - |
4345 | | - |
4346 | | - |
4347 | | - |
4348 | | - |
4349 | | - |
4350 | | - |
4351 | | - |
4352 | | - |
4353 | | - |
4354 | | - |
4355 | | - |
4356 | | - |
4357 | | - |
4358 | | - |
4359 | | - |
4360 | | - |
4361 | | - |
4362 | | - |
4363 | | - |
4364 | | - |
4365 | | - |
4366 | | - |
4367 | | - |
4368 | | - |
4369 | | - |
4370 | | - |
4371 | | - |
4372 | | - |
4373 | | - |
4374 | | - |
4375 | | - |
4376 | | - |
4377 | | - |
4378 | | - |
4379 | | - |
4380 | | - |
4381 | | - |
4382 | | - |
4383 | | - |
4384 | | - |
4385 | | - |
4386 | | - |
4387 | | - |
4388 | | - |
4389 | | - |
4390 | | - |
4391 | | - |
4392 | | - |
4393 | | - |
4394 | | - |
4395 | | - |
4396 | | - |
4397 | | - |
4398 | | - |
4399 | | - |
4400 | | - |
4401 | | - |
4402 | | - |
4403 | | - |
4404 | | - |
4405 | | - |
4406 | | - |
4407 | | - |
4408 | | - |
4409 | | - |
4410 | | - |
4411 | | - |
4412 | | - |
4413 | | - |
4414 | | - |
4415 | | - |
4416 | | - |
4417 | | - |
4418 | | - |
4419 | | - |
4420 | | - |
4421 | | - |
4422 | | - |
4423 | | - |
4424 | | - |
4425 | | - |
4426 | | - |
4427 | | - |
4428 | | - |
4429 | | - |
4430 | | - |
4431 | | - |
4432 | | - |
4433 | | - |
4434 | | - |
4435 | | - |
4436 | | - |
4437 | | - |
4438 | | - |
4439 | | - |
4440 | | - |
4441 | | - |
4442 | | - |
4443 | | - |
4444 | | - |
4445 | | - |
4446 | | - |
4447 | | - |
4448 | | - |
4449 | | - |
4450 | | - |
4451 | | - |
4452 | | - |
4453 | | - |
4454 | | - |
4455 | | - |
4456 | | - |
4457 | | - |
4458 | | - |
4459 | | - |
4460 | | - |
4461 | | - |
4462 | | - |
4463 | | - |
4464 | | - |
4465 | | - |
4466 | | - |
4467 | | - |
4468 | | - |
4469 | | - |
4470 | | - |
4471 | | - |
4472 | | - |
4473 | | - |
4474 | | - |
4475 | | - |
4476 | | - |
4477 | | - |
4478 | | - |
4479 | | - |
| Q_GLOBAL_STATIC(QOpenGLES3Helper, qgles3Helper) | |
| | |
| bool QOpenGLES3Helper::init() | |
| { | |
| #ifdef QT_NO_LIBRARY | |
| return false; | |
| #elif !defined(Q_OS_IOS) | |
| # ifdef Q_OS_WIN | |
| # ifndef QT_DEBUG | |
| m_gl.setFileName(QStringLiteral("libGLESv2")); | |
| # else | |
| m_gl.setFileName(QStringLiteral("libGLESv2d")); | |
| # endif | |
| # else | |
| # ifdef Q_OS_ANDROID | |
| m_gl.setFileName(QStringLiteral("GLESv2")); | |
| # else | |
| m_gl.setFileNameAndVersion(QStringLiteral("GLESv2"), 2); | |
| # endif | |
| # endif return m_gl.load(); | |
| #else | |
| return true; | |
| #endif } | |
| | |
| QFunctionPointer QOpenGLES3Helper::resolve(const char *name) | |
| { | |
| #ifdef Q_OS_IOS | |
| return QFunctionPointer(dlsym(RTLD_DEFAULT, name)); | |
| #elif !defined(QT_NO_LIBRARY) | |
| return m_gl.resolve(name); | |
| #else | |
| Q_UNUSED(name); | |
| return 0; | |
| #endif | |
| } | |
| | |
| QOpenGLES3Helper::QOpenGLES3Helper() | |
| { | |
| m_supportedVersion = qMakePair(2, 0); | |
| | |
| if (init()) { | |
| const QPair<int, int> contextVersion = QOpenGLContext::currentContext()->format().version(); | |
| | |
| qCDebug(lcGLES3, "Resolving OpenGL ES 3.0 entry points"); | |
| | |
| BeginQuery = (void (QOPENGLF_APIENTRYP) (GLenum, GLuint)) resolve("glBeginQuery"); | |
| BeginTransformFeedback = (void (QOPENGLF_APIENTRYP) (GLenum)) resolve("glBeginTransformFeedback"); | |
| BindBufferBase = (void (QOPENGLF_APIENTRYP) (GLenum, GLuint, GLuint)) resolve("glBindBufferBase"); | |
| BindBufferRange = (void (QOPENGLF_APIENTRYP) (GLenum, GLuint, GLuint, GLintptr, GLsizeiptr)) resolve("glBindBufferRange"); | |
| BindSampler = (void (QOPENGLF_APIENTRYP) (GLuint, GLuint)) resolve("glBindSampler"); | |
| BindTransformFeedback = (void (QOPENGLF_APIENTRYP) (GLenum, GLuint)) resolve("glBindTransformFeedback"); | |
| BindVertexArray = (void (QOPENGLF_APIENTRYP) (GLuint)) resolve("glBindVertexArray"); | |
| BlitFramebuffer = (void (QOPENGLF_APIENTRYP) (GLint, GLint, GLint, GLint, GLint, GLint, GLint, GLint, GLbitfield, GLenum)) resolve("glBlitFramebuffer"); | |
| ClearBufferfi = (void (QOPENGLF_APIENTRYP) (GLenum, GLint, GLfloat, GLint)) resolve("glClearBufferfi"); | |
| ClearBufferfv = (void (QOPENGLF_APIENTRYP) (GLenum, GLint, const GLfloat *)) resolve("glClearBufferfv"); | |
| ClearBufferiv = (void (QOPENGLF_APIENTRYP) (GLenum, GLint, const GLint *)) resolve("glClearBufferiv"); | |
| ClearBufferuiv = (void (QOPENGLF_APIENTRYP) (GLenum, GLint, const GLuint *)) resolve("glClearBufferuiv"); | |
| ClientWaitSync = (GLenum (QOPENGLF_APIENTRYP) (GLsync, GLbitfield, GLuint64)) resolve("glClientWaitSync"); | |
| CompressedTexImage3D = (void (QOPENGLF_APIENTRYP) (GLenum, GLint, GLenum, GLsizei, GLsizei, GLsizei, GLint, GLsizei, const void *)) resolve("glCompressedTexImage3D"); | |
| CompressedTexSubImage3D = (void (QOPENGLF_APIENTRYP) (GLenum, GLint, GLint, GLint, GLint, GLsizei, GLsizei, GLsizei, GLenum, GLsizei, const void *)) resolve("glCompressedTexSubImage3D"); | |
| CopyBufferSubData = (void (QOPENGLF_APIENTRYP) (GLenum, GLenum, GLintptr, GLintptr, GLsizeiptr)) resolve("glCopyBufferSubData"); | |
| CopyTexSubImage3D = (void (QOPENGLF_APIENTRYP) (GLenum, GLint, GLint, GLint, GLint, GLint, GLint, GLsizei, GLsizei)) resolve("glCopyTexSubImage3D"); | |
| DeleteQueries = (void (QOPENGLF_APIENTRYP) (GLsizei, const GLuint *)) resolve("glDeleteQueries"); | |
| DeleteSamplers = (void (QOPENGLF_APIENTRYP) (GLsizei, const GLuint *)) resolve("glDeleteSamplers"); | |
| DeleteSync = (void (QOPENGLF_APIENTRYP) (GLsync)) resolve("glDeleteSync"); | |
| DeleteTransformFeedbacks = (void (QOPENGLF_APIENTRYP) (GLsizei, const GLuint *)) resolve("glDeleteTransformFeedbacks"); | |
| DeleteVertexArrays = (void (QOPENGLF_APIENTRYP) (GLsizei, const GLuint *)) resolve("glDeleteVertexArrays"); | |
| DrawArraysInstanced = (void (QOPENGLF_APIENTRYP) (GLenum, GLint, GLsizei, GLsizei)) resolve("glDrawArraysInstanced"); | |
| DrawBuffers = (void (QOPENGLF_APIENTRYP) (GLsizei, const GLenum *)) resolve("glDrawBuffers"); | |
| DrawElementsInstanced = (void (QOPENGLF_APIENTRYP) (GLenum, GLsizei, GLenum, const void *, GLsizei)) resolve("glDrawElementsInstanced"); | |
| DrawRangeElements = (void (QOPENGLF_APIENTRYP) (GLenum, GLuint, GLuint, GLsizei, GLenum, const void *)) resolve("glDrawRangeElements"); | |
| EndQuery = (void (QOPENGLF_APIENTRYP) (GLenum)) resolve("glEndQuery"); | |
| EndTransformFeedback = (void (QOPENGLF_APIENTRYP) ()) resolve("glEndTransformFeedback"); | |
| FenceSync = (GLsync (QOPENGLF_APIENTRYP) (GLenum, GLbitfield)) resolve("glFenceSync"); | |
| FlushMappedBufferRange = (void (QOPENGLF_APIENTRYP) (GLenum, GLintptr, GLsizeiptr)) resolve("glFlushMappedBufferRange"); | |
| FramebufferTextureLayer = (void (QOPENGLF_APIENTRYP) (GLenum, GLenum, GLuint, GLint, GLint)) resolve("glFramebufferTextureLayer"); | |
| GenQueries = (void (QOPENGLF_APIENTRYP) (GLsizei, GLuint*)) resolve("glGenQueries"); | |
| GenSamplers = (void (QOPENGLF_APIENTRYP) (GLsizei, GLuint*)) resolve("glGenSamplers"); | |
| GenTransformFeedbacks = (void (QOPENGLF_APIENTRYP) (GLsizei, GLuint*)) resolve("glGenTransformFeedbacks"); | |
| GenVertexArrays = (void (QOPENGLF_APIENTRYP) (GLsizei, GLuint*)) resolve("glGenVertexArrays"); | |
| GetActiveUniformBlockName = (void (QOPENGLF_APIENTRYP) (GLuint, GLuint, GLsizei, GLsizei*, GLchar*)) resolve("glGetActiveUniformBlockName"); | |
| GetActiveUniformBlockiv = (void (QOPENGLF_APIENTRYP) (GLuint, GLuint, GLenum, GLint*)) resolve("glGetActiveUniformBlockiv"); | |
| GetActiveUniformsiv = (void (QOPENGLF_APIENTRYP) (GLuint, GLsizei, const GLuint *, GLenum, GLint*)) resolve("glGetActiveUniformsiv"); | |
| GetBufferParameteri64v = (void (QOPENGLF_APIENTRYP) (GLenum, GLenum, GLint64*)) resolve("glGetBufferParameteri64v"); | |
| GetBufferPointerv = (void (QOPENGLF_APIENTRYP) (GLenum, GLenum, void **)) resolve("glGetBufferPointerv"); | |
| GetFragDataLocation = (GLint (QOPENGLF_APIENTRYP) (GLuint, const GLchar *)) resolve("glGetFragDataLocation"); | |
| GetInteger64i_v = (void (QOPENGLF_APIENTRYP) (GLenum, GLuint, GLint64*)) resolve("glGetInteger64i_v"); | |
| GetInteger64v = (void (QOPENGLF_APIENTRYP) (GLenum, GLint64*)) resolve("glGetInteger64v"); | |
| GetIntegeri_v = (void (QOPENGLF_APIENTRYP) (GLenum, GLuint, GLint*)) resolve("glGetIntegeri_v"); | |
| GetInternalformativ = (void (QOPENGLF_APIENTRYP) (GLenum, GLenum, GLenum, GLsizei, GLint*)) resolve("glGetInternalformativ"); | |
| GetProgramBinary = (void (QOPENGLF_APIENTRYP) (GLuint, GLsizei, GLsizei*, GLenum*, void *)) resolve("glGetProgramBinary"); | |
| GetQueryObjectuiv = (void (QOPENGLF_APIENTRYP) (GLuint, GLenum, GLuint*)) resolve("glGetQueryObjectuiv"); | |
| GetQueryiv = (void (QOPENGLF_APIENTRYP) (GLenum, GLenum, GLint*)) resolve("glGetQueryiv"); | |
| GetSamplerParameterfv = (void (QOPENGLF_APIENTRYP) (GLuint, GLenum, GLfloat*)) resolve("glGetSamplerParameterfv"); | |
| GetSamplerParameteriv = (void (QOPENGLF_APIENTRYP) (GLuint, GLenum, GLint*)) resolve("glGetSamplerParameteriv"); | |
| GetStringi = (const GLubyte * (QOPENGLF_APIENTRYP) (GLenum, GLuint)) resolve("glGetStringi"); | |
| GetSynciv = (void (QOPENGLF_APIENTRYP) (GLsync, GLenum, GLsizei, GLsizei*, GLint*)) resolve("glGetSynciv"); | |
| GetTransformFeedbackVarying = (void (QOPENGLF_APIENTRYP) (GLuint, GLuint, GLsizei, GLsizei*, GLsizei*, GLenum*, GLchar*)) resolve("glGetTransformFeedbackVarying"); | |
| GetUniformBlockIndex = (GLuint (QOPENGLF_APIENTRYP) (GLuint, const GLchar *)) resolve("glGetUniformBlockIndex"); | |
| GetUniformIndices = (void (QOPENGLF_APIENTRYP) (GLuint, GLsizei, const GLchar *const*, GLuint*)) resolve("glGetUniformIndices"); | |
| GetUniformuiv = (void (QOPENGLF_APIENTRYP) (GLuint, GLint, GLuint*)) resolve("glGetUniformuiv"); | |
| GetVertexAttribIiv = (void (QOPENGLF_APIENTRYP) (GLuint, GLenum, GLint*)) resolve("glGetVertexAttribIiv"); | |
| GetVertexAttribIuiv = (void (QOPENGLF_APIENTRYP) (GLuint, GLenum, GLuint*)) resolve("glGetVertexAttribIuiv"); | |
| InvalidateFramebuffer = (void (QOPENGLF_APIENTRYP) (GLenum, GLsizei, const GLenum *)) resolve("glInvalidateFramebuffer"); | |
| InvalidateSubFramebuffer = (void (QOPENGLF_APIENTRYP) (GLenum, GLsizei, const GLenum *, GLint, GLint, GLsizei, GLsizei)) resolve("glInvalidateSubFramebuffer"); | |
| IsQuery = (GLboolean (QOPENGLF_APIENTRYP) (GLuint)) resolve("glIsQuery"); | |
| IsSampler = (GLboolean (QOPENGLF_APIENTRYP) (GLuint)) resolve("glIsSampler"); | |
| IsSync = (GLboolean (QOPENGLF_APIENTRYP) (GLsync)) resolve("glIsSync"); | |
| IsTransformFeedback = (GLboolean (QOPENGLF_APIENTRYP) (GLuint)) resolve("glIsTransformFeedback"); | |
| IsVertexArray = (GLboolean (QOPENGLF_APIENTRYP) (GLuint)) resolve("glIsVertexArray"); | |
| MapBufferRange = (void * (QOPENGLF_APIENTRYP) (GLenum, GLintptr, GLsizeiptr, GLbitfield)) resolve("glMapBufferRange"); | |
| PauseTransformFeedback = (void (QOPENGLF_APIENTRYP) ()) resolve("glPauseTransformFeedback"); | |
| ProgramBinary = (void (QOPENGLF_APIENTRYP) (GLuint, GLenum, const void *, GLsizei)) resolve("glProgramBinary"); | |
| ProgramParameteri = (void (QOPENGLF_APIENTRYP) (GLuint, GLenum, GLint)) resolve("glProgramParameteri"); | |
| ReadBuffer = (void (QOPENGLF_APIENTRYP) (GLenum)) resolve("glReadBuffer"); | |
| RenderbufferStorageMultisample = (void (QOPENGLF_APIENTRYP) (GLenum, GLsizei, GLenum, GLsizei, GLsizei)) resolve("glRenderbufferStorageMultisample"); | |
| ResumeTransformFeedback = (void (QOPENGLF_APIENTRYP) ()) resolve("glResumeTransformFeedback"); | |
| SamplerParameterf = (void (QOPENGLF_APIENTRYP) (GLuint, GLenum, GLfloat)) resolve("glSamplerParameterf"); | |
| SamplerParameterfv = (void (QOPENGLF_APIENTRYP) (GLuint, GLenum, const GLfloat *)) resolve("glSamplerParameterfv"); | |
| SamplerParameteri = (void (QOPENGLF_APIENTRYP) (GLuint, GLenum, GLint)) resolve("glSamplerParameteri"); | |
| SamplerParameteriv = (void (QOPENGLF_APIENTRYP) (GLuint, GLenum, const GLint *)) resolve("glSamplerParameteriv"); | |
| TexImage3D = (void (QOPENGLF_APIENTRYP) (GLenum, GLint, GLint, GLsizei, GLsizei, GLsizei, GLint, GLenum, GLenum, const void *)) resolve("glTexImage3D"); | |
| TexStorage2D = (void (QOPENGLF_APIENTRYP) (GLenum, GLsizei, GLenum, GLsizei, GLsizei)) resolve("glTexStorage2D"); | |
| TexStorage3D = (void (QOPENGLF_APIENTRYP) (GLenum, GLsizei, GLenum, GLsizei, GLsizei, GLsizei)) resolve("glTexStorage3D"); | |
| TexSubImage3D = (void (QOPENGLF_APIENTRYP) (GLenum, GLint, GLint, GLint, GLint, GLsizei, GLsizei, GLsizei, GLenum, GLenum, const void *)) resolve("glTexSubImage3D"); | |
| TransformFeedbackVaryings = (void (QOPENGLF_APIENTRYP) (GLuint, GLsizei, const GLchar *const*, GLenum)) resolve("glTransformFeedbackVaryings"); | |
| Uniform1ui = (void (QOPENGLF_APIENTRYP) (GLint, GLuint)) resolve("glUniform1ui"); | |
| Uniform1uiv = (void (QOPENGLF_APIENTRYP) (GLint, GLsizei, const GLuint *)) resolve("glUniform1uiv"); | |
| Uniform2ui = (void (QOPENGLF_APIENTRYP) (GLint, GLuint, GLuint)) resolve("glUniform2ui"); | |
| Uniform2uiv = (void (QOPENGLF_APIENTRYP) (GLint, GLsizei, const GLuint *)) resolve("glUniform2uiv"); | |
| Uniform3ui = (void (QOPENGLF_APIENTRYP) (GLint, GLuint, GLuint, GLuint)) resolve("glUniform3ui"); | |
| Uniform3uiv = (void (QOPENGLF_APIENTRYP) (GLint, GLsizei, const GLuint *)) resolve("glUniform3uiv"); | |
| Uniform4ui = (void (QOPENGLF_APIENTRYP) (GLint, GLuint, GLuint, GLuint, GLuint)) resolve("glUniform4ui"); | |
| Uniform4uiv = (void (QOPENGLF_APIENTRYP) (GLint, GLsizei, const GLuint *)) resolve("glUniform4uiv"); | |
| UniformBlockBinding = (void (QOPENGLF_APIENTRYP) (GLuint, GLuint, GLuint)) resolve("glUniformBlockBinding"); | |
| UniformMatrix2x3fv = (void (QOPENGLF_APIENTRYP) (GLint, GLsizei, GLboolean, const GLfloat *)) resolve("glUniformMatrix2x3fv"); | |
| UniformMatrix2x4fv = (void (QOPENGLF_APIENTRYP) (GLint, GLsizei, GLboolean, const GLfloat *)) resolve("glUniformMatrix2x4fv"); | |
| UniformMatrix3x2fv = (void (QOPENGLF_APIENTRYP) (GLint, GLsizei, GLboolean, const GLfloat *)) resolve("glUniformMatrix3x2fv"); | |
| UniformMatrix3x4fv = (void (QOPENGLF_APIENTRYP) (GLint, GLsizei, GLboolean, const GLfloat *)) resolve("glUniformMatrix3x4fv"); | |
| UniformMatrix4x2fv = (void (QOPENGLF_APIENTRYP) (GLint, GLsizei, GLboolean, const GLfloat *)) resolve("glUniformMatrix4x2fv"); | |
| UniformMatrix4x3fv = (void (QOPENGLF_APIENTRYP) (GLint, GLsizei, GLboolean, const GLfloat *)) resolve("glUniformMatrix4x3fv"); | |
| UnmapBuffer = (GLboolean (QOPENGLF_APIENTRYP) (GLenum)) resolve("glUnmapBuffer"); | |
| VertexAttribDivisor = (void (QOPENGLF_APIENTRYP) (GLuint, GLuint)) resolve("glVertexAttribDivisor"); | |
| VertexAttribI4i = (void (QOPENGLF_APIENTRYP) (GLuint, GLint, GLint, GLint, GLint)) resolve("glVertexAttribI4i"); | |
| VertexAttribI4iv = (void (QOPENGLF_APIENTRYP) (GLuint, const GLint *)) resolve("glVertexAttribI4iv"); | |
| VertexAttribI4ui = (void (QOPENGLF_APIENTRYP) (GLuint, GLuint, GLuint, GLuint, GLuint)) resolve("glVertexAttribI4ui"); | |
| VertexAttribI4uiv = (void (QOPENGLF_APIENTRYP) (GLuint, const GLuint *)) resolve("glVertexAttribI4uiv"); | |
| VertexAttribIPointer = (void (QOPENGLF_APIENTRYP) (GLuint, GLint, GLenum, GLsizei, const void *)) resolve("glVertexAttribIPointer"); | |
| WaitSync = (void (QOPENGLF_APIENTRYP) (GLsync, GLbitfield, GLuint64)) resolve("glWaitSync"); | |
| | |
| if (!BeginQuery || !BlitFramebuffer || !GenTransformFeedbacks || !GenVertexArrays || !MapBufferRange | |
| || !RenderbufferStorageMultisample || !TexStorage2D || !WaitSync) { | |
| qWarning("OpenGL ES 3.0 entry points not found. This is odd because the driver returned a context of version %d.%d", | |
| contextVersion.first, contextVersion.second); | |
| return; | |
| } | |
| m_supportedVersion = qMakePair(3, 0); | |
| | |
| if (contextVersion >= qMakePair(3, 1)) { | |
| qCDebug(lcGLES3, "Resolving OpenGL ES 3.1 entry points"); | |
| | |
| ActiveShaderProgram = (void (QOPENGLF_APIENTRYP) (GLuint, GLuint)) resolve("glActiveShaderProgram"); | |
| BindImageTexture = (void (QOPENGLF_APIENTRYP) (GLuint, GLuint, GLint, GLboolean, GLint, GLenum, GLenum)) resolve("glBindImageTexture"); | |
| BindProgramPipeline = (void (QOPENGLF_APIENTRYP) (GLuint)) resolve("glBindProgramPipeline"); | |
| BindVertexBuffer = (void (QOPENGLF_APIENTRYP) (GLuint, GLuint, GLintptr, GLsizei)) resolve("glBindVertexBuffer"); | |
| CreateShaderProgramv = (GLuint (QOPENGLF_APIENTRYP) (GLenum, GLsizei, const GLchar *const*)) resolve("glCreateShaderProgramv"); | |
| DeleteProgramPipelines = (void (QOPENGLF_APIENTRYP) (GLsizei, const GLuint *)) resolve("glDeleteProgramPipelines"); | |
| DispatchCompute = (void (QOPENGLF_APIENTRYP) (GLuint, GLuint, GLuint)) resolve("glDispatchCompute"); | |
| DispatchComputeIndirect = (void (QOPENGLF_APIENTRYP) (GLintptr)) resolve("glDispatchComputeIndirect"); | |
| DrawArraysIndirect = (void (QOPENGLF_APIENTRYP) (GLenum, const void *)) resolve("glDrawArraysIndirect"); | |
| DrawElementsIndirect = (void (QOPENGLF_APIENTRYP) (GLenum, GLenum, const void *)) resolve("glDrawElementsIndirect"); | |
| FramebufferParameteri = (void (QOPENGLF_APIENTRYP) (GLenum, GLenum, GLint)) resolve("glFramebufferParameteri"); | |
| GenProgramPipelines = (void (QOPENGLF_APIENTRYP) (GLsizei, GLuint*)) resolve("glGenProgramPipelines"); | |
| GetBooleani_v = (void (QOPENGLF_APIENTRYP) (GLenum, GLuint, GLboolean*)) resolve("glGetBooleani_v"); | |
| GetFramebufferParameteriv = (void (QOPENGLF_APIENTRYP) (GLenum, GLenum, GLint*)) resolve("glGetFramebufferParameteriv"); | |
| GetMultisamplefv = (void (QOPENGLF_APIENTRYP) (GLenum, GLuint, GLfloat*)) resolve("glGetMultisamplefv"); | |
| GetProgramInterfaceiv = (void (QOPENGLF_APIENTRYP) (GLuint, GLenum, GLenum, GLint*)) resolve("glGetProgramInterfaceiv"); | |
| GetProgramPipelineInfoLog = (void (QOPENGLF_APIENTRYP) (GLuint, GLsizei, GLsizei*, GLchar*)) resolve("glGetProgramPipelineInfoLog"); | |
| GetProgramPipelineiv = (void (QOPENGLF_APIENTRYP) (GLuint, GLenum, GLint*)) resolve("glGetProgramPipelineiv"); | |
| GetProgramResourceIndex = (GLuint (QOPENGLF_APIENTRYP) (GLuint, GLenum, const GLchar *)) resolve("glGetProgramResourceIndex"); | |
| GetProgramResourceLocation = (GLint (QOPENGLF_APIENTRYP) (GLuint, GLenum, const GLchar *)) resolve("glGetProgramResourceLocation"); | |
| GetProgramResourceName = (void (QOPENGLF_APIENTRYP) (GLuint, GLenum, GLuint, GLsizei, GLsizei*, GLchar*)) resolve("glGetProgramResourceName"); | |
| GetProgramResourceiv = (void (QOPENGLF_APIENTRYP) (GLuint, GLenum, GLuint, GLsizei, const GLenum *, GLsizei, GLsizei*, GLint*)) resolve("glGetProgramResourceiv"); | |
| GetTexLevelParameterfv = (void (QOPENGLF_APIENTRYP) (GLenum, GLint, GLenum, GLfloat*)) resolve("glGetTexLevelParameterfv"); | |
| GetTexLevelParameteriv = (void (QOPENGLF_APIENTRYP) (GLenum, GLint, GLenum, GLint*)) resolve("glGetTexLevelParameteriv"); | |
| IsProgramPipeline = (GLboolean (QOPENGLF_APIENTRYP) (GLuint)) resolve("glIsProgramPipeline"); | |
| MemoryBarrierFunc = (void (QOPENGLF_APIENTRYP) (GLbitfield)) resolve("glMemoryBarrier"); | |
| MemoryBarrierByRegion = (void (QOPENGLF_APIENTRYP) (GLbitfield)) resolve("glMemoryBarrierByRegion"); | |
| ProgramUniform1f = (void (QOPENGLF_APIENTRYP) (GLuint, GLint, GLfloat)) resolve("glProgramUniform1f"); | |
| ProgramUniform1fv = (void (QOPENGLF_APIENTRYP) (GLuint, GLint, GLsizei, const GLfloat *)) resolve("glProgramUniform1fv"); | |
| ProgramUniform1i = (void (QOPENGLF_APIENTRYP) (GLuint, GLint, GLint)) resolve("glProgramUniform1i"); | |
| ProgramUniform1iv = (void (QOPENGLF_APIENTRYP) (GLuint, GLint, GLsizei, const GLint *)) resolve("glProgramUniform1iv"); | |
| ProgramUniform1ui = (void (QOPENGLF_APIENTRYP) (GLuint, GLint, GLuint)) resolve("glProgramUniform1ui"); | |
| ProgramUniform1uiv = (void (QOPENGLF_APIENTRYP) (GLuint, GLint, GLsizei, const GLuint *)) resolve("glProgramUniform1uiv"); | |
| ProgramUniform2f = (void (QOPENGLF_APIENTRYP) (GLuint, GLint, GLfloat, GLfloat)) resolve("glProgramUniform2f"); | |
| ProgramUniform2fv = (void (QOPENGLF_APIENTRYP) (GLuint, GLint, GLsizei, const GLfloat *)) resolve("glProgramUniform2fv"); | |
| ProgramUniform2i = (void (QOPENGLF_APIENTRYP) (GLuint, GLint, GLint, GLint)) resolve("glProgramUniform2i"); | |
| ProgramUniform2iv = (void (QOPENGLF_APIENTRYP) (GLuint, GLint, GLsizei, const GLint *)) resolve("glProgramUniform2iv"); | |
| ProgramUniform2ui = (void (QOPENGLF_APIENTRYP) (GLuint, GLint, GLuint, GLuint)) resolve("glProgramUniform2ui"); | |
| ProgramUniform2uiv = (void (QOPENGLF_APIENTRYP) (GLuint, GLint, GLsizei, const GLuint *)) resolve("glProgramUniform2uiv"); | |
| ProgramUniform3f = (void (QOPENGLF_APIENTRYP) (GLuint, GLint, GLfloat, GLfloat, GLfloat)) resolve("glProgramUniform3f"); | |
| ProgramUniform3fv = (void (QOPENGLF_APIENTRYP) (GLuint, GLint, GLsizei, const GLfloat *)) resolve("glProgramUniform3fv"); | |
| ProgramUniform3i = (void (QOPENGLF_APIENTRYP) (GLuint, GLint, GLint, GLint, GLint)) resolve("glProgramUniform3i"); | |
| ProgramUniform3iv = (void (QOPENGLF_APIENTRYP) (GLuint, GLint, GLsizei, const GLint *)) resolve("glProgramUniform3iv"); | |
| ProgramUniform3ui = (void (QOPENGLF_APIENTRYP) (GLuint, GLint, GLuint, GLuint, GLuint)) resolve("glProgramUniform3ui"); | |
| ProgramUniform3uiv = (void (QOPENGLF_APIENTRYP) (GLuint, GLint, GLsizei, const GLuint *)) resolve("glProgramUniform3uiv"); | |
| ProgramUniform4f = (void (QOPENGLF_APIENTRYP) (GLuint, GLint, GLfloat, GLfloat, GLfloat, GLfloat)) resolve("glProgramUniform4f"); | |
| ProgramUniform4fv = (void (QOPENGLF_APIENTRYP) (GLuint, GLint, GLsizei, const GLfloat *)) resolve("glProgramUniform4fv"); | |
| ProgramUniform4i = (void (QOPENGLF_APIENTRYP) (GLuint, GLint, GLint, GLint, GLint, GLint)) resolve("glProgramUniform4i"); | |
| ProgramUniform4iv = (void (QOPENGLF_APIENTRYP) (GLuint, GLint, GLsizei, const GLint *)) resolve("glProgramUniform4iv"); | |
| ProgramUniform4ui = (void (QOPENGLF_APIENTRYP) (GLuint, GLint, GLuint, GLuint, GLuint, GLuint)) resolve("glProgramUniform4ui"); | |
| ProgramUniform4uiv = (void (QOPENGLF_APIENTRYP) (GLuint, GLint, GLsizei, const GLuint *)) resolve("glProgramUniform4uiv"); | |
| ProgramUniformMatrix2fv = (void (QOPENGLF_APIENTRYP) (GLuint, GLint, GLsizei, GLboolean, const GLfloat *)) resolve("glProgramUniformMatrix2fv"); | |
| ProgramUniformMatrix2x3fv = (void (QOPENGLF_APIENTRYP) (GLuint, GLint, GLsizei, GLboolean, const GLfloat *)) resolve("glProgramUniformMatrix2x3fv"); | |
| ProgramUniformMatrix2x4fv = (void (QOPENGLF_APIENTRYP) (GLuint, GLint, GLsizei, GLboolean, const GLfloat *)) resolve("glProgramUniformMatrix2x4fv"); | |
| ProgramUniformMatrix3fv = (void (QOPENGLF_APIENTRYP) (GLuint, GLint, GLsizei, GLboolean, const GLfloat *)) resolve("glProgramUniformMatrix3fv"); | |
| ProgramUniformMatrix3x2fv = (void (QOPENGLF_APIENTRYP) (GLuint, GLint, GLsizei, GLboolean, const GLfloat *)) resolve("glProgramUniformMatrix3x2fv"); | |
| ProgramUniformMatrix3x4fv = (void (QOPENGLF_APIENTRYP) (GLuint, GLint, GLsizei, GLboolean, const GLfloat *)) resolve("glProgramUniformMatrix3x4fv"); | |
| ProgramUniformMatrix4fv = (void (QOPENGLF_APIENTRYP) (GLuint, GLint, GLsizei, GLboolean, const GLfloat *)) resolve("glProgramUniformMatrix4fv"); | |
| ProgramUniformMatrix4x2fv = (void (QOPENGLF_APIENTRYP) (GLuint, GLint, GLsizei, GLboolean, const GLfloat *)) resolve("glProgramUniformMatrix4x2fv"); | |
| ProgramUniformMatrix4x3fv = (void (QOPENGLF_APIENTRYP) (GLuint, GLint, GLsizei, GLboolean, const GLfloat *)) resolve("glProgramUniformMatrix4x3fv"); | |
| SampleMaski = (void (QOPENGLF_APIENTRYP) (GLuint, GLbitfield)) resolve("glSampleMaski"); | |
| TexStorage2DMultisample = (void (QOPENGLF_APIENTRYP) (GLenum, GLsizei, GLenum, GLsizei, GLsizei, GLboolean)) resolve("glTexStorage2DMultisample"); | |
| UseProgramStages = (void (QOPENGLF_APIENTRYP) (GLuint, GLbitfield, GLuint)) resolve("glUseProgramStages"); | |
| ValidateProgramPipeline = (void (QOPENGLF_APIENTRYP) (GLuint)) resolve("glValidateProgramPipeline"); | |
| VertexAttribBinding = (void (QOPENGLF_APIENTRYP) (GLuint, GLuint)) resolve("glVertexAttribBinding"); | |
| VertexAttribFormat = (void (QOPENGLF_APIENTRYP) (GLuint, GLint, GLenum, GLboolean, GLuint)) resolve("glVertexAttribFormat"); | |
| VertexAttribIFormat = (void (QOPENGLF_APIENTRYP) (GLuint, GLint, GLenum, GLuint)) resolve("glVertexAttribIFormat"); | |
| VertexBindingDivisor = (void (QOPENGLF_APIENTRYP) (GLuint, GLuint)) resolve("glVertexBindingDivisor"); | |
| | |
| if (!ActiveShaderProgram || !BindImageTexture || !DispatchCompute || !DrawArraysIndirect | |
| || !GenProgramPipelines || !MemoryBarrierFunc) { | |
| qWarning("OpenGL ES 3.1 entry points not found. This is odd because the driver returned a context of version %d.%d", | |
| contextVersion.first, contextVersion.second); | |
| return; | |
| } | |
| m_supportedVersion = qMakePair(3, 1); | |
| } | |
| } else { | |
| qFatal("Failed to load libGLESv2"); | |
| } | |
| } | |
| | |
| static inline bool isES3(int minor) | |
| { | |
| QOpenGLContext *ctx = QOpenGLContext::currentContext(); | |
| | |
| const bool libMatches = QOpenGLContext::openGLModuleType() == QOpenGLContext::LibGLES; | |
| const bool contextMatches = ctx->isOpenGLES() && ctx->format().version() >= qMakePair(3, minor); | |
| | |
| if (libMatches && contextMatches) | |
| return qgles3Helper()->supportedVersion() >= qMakePair(3, minor); | |
| | |
| return false; | |
| } | |
| | |
| static void QOPENGLF_APIENTRY qopenglfResolveBeginQuery(GLenum target, GLuint id) | |
| { | |
| if (isES3(0)) | |
| qgles3Helper()->BeginQuery(target, id); | |
| else | |
| RESOLVE_FUNC_VOID(0, BeginQuery)(target, id); | |
| } | |
| | |
| static void QOPENGLF_APIENTRY qopenglfResolveBeginTransformFeedback(GLenum primitiveMode) | |
| { | |
| if (isES3(0)) | |
| qgles3Helper()->BeginTransformFeedback(primitiveMode); | |
| else | |
| RESOLVE_FUNC_VOID(0, BeginTransformFeedback)(primitiveMode); | |
| } | |
| | |
| static void QOPENGLF_APIENTRY qopenglfResolveBindBufferBase(GLenum target, GLuint index, GLuint buffer) | |
| { | |
| if (isES3(0)) | |
| qgles3Helper()->BindBufferBase(target, index, buffer); | |
| else | |
| RESOLVE_FUNC_VOID(0, BindBufferBase)(target, index, buffer); | |
| } | |
| | |
| static void QOPENGLF_APIENTRY qopenglfResolveBindBufferRange(GLenum target, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size) | |
| { | |
| if (isES3(0)) | |
| qgles3Helper()->BindBufferRange(target, index, buffer, offset, size); | |
| else | |
| RESOLVE_FUNC_VOID(0, BindBufferRange)(target, index, buffer, offset, size); | |
| } | |
| | |
| static void QOPENGLF_APIENTRY qopenglfResolveBindSampler(GLuint unit, GLuint sampler) | |
| { | |
| if (isES3(0)) | |
| qgles3Helper()->BindSampler(unit, sampler); | |
| else | |
| RESOLVE_FUNC_VOID(0, BindSampler)(unit, sampler); | |
| } | |
| | |
| static void QOPENGLF_APIENTRY qopenglfResolveBindTransformFeedback(GLenum target, GLuint id) | |
| { | |
| if (isES3(0)) | |
| qgles3Helper()->BindTransformFeedback(target, id); | |
| else | |
| RESOLVE_FUNC_VOID(0, BindTransformFeedback)(target, id); | |
| } | |
| | |
| static void QOPENGLF_APIENTRY qopenglfResolveBindVertexArray(GLuint array) | |
| { | |
| if (isES3(0)) | |
| qgles3Helper()->BindVertexArray(array); | |
| else | |
| RESOLVE_FUNC_VOID(0, BindVertexArray)(array); | |
| } | |
| | |
| static void QOPENGLF_APIENTRY qopenglfResolveBlitFramebuffer(GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter) | |
| { | |
| if (isES3(0)) | |
| qgles3Helper()->BlitFramebuffer(srcX0, srcY0, srcX1, srcY1, dstX0, dstY0, dstX1, dstY1, mask, filter); | |
| else | |
| RESOLVE_FUNC_VOID(ResolveEXT | ResolveANGLE | ResolveNV, BlitFramebuffer) | |
| (srcX0, srcY0, srcX1, srcY1, dstX0, dstY0, dstX1, dstY1, mask, filter); | |
| } | |
| | |
| static void QOPENGLF_APIENTRY qopenglfResolveClearBufferfi(GLenum buffer, GLint drawbuffer, GLfloat depth, GLint stencil) | |
| { | |
| if (isES3(0)) | |
| qgles3Helper()->ClearBufferfi(buffer, drawbuffer, depth, stencil); | |
| else | |
| RESOLVE_FUNC_VOID(0, ClearBufferfi)(buffer, drawbuffer, depth, stencil); | |
| } | |
| | |
| static void QOPENGLF_APIENTRY qopenglfResolveClearBufferfv(GLenum buffer, GLint drawbuffer, const GLfloat * value) | |
| { | |
| if (isES3(0)) | |
| qgles3Helper()->ClearBufferfv(buffer, drawbuffer, value); | |
| else | |
| RESOLVE_FUNC_VOID(0, ClearBufferfv)(buffer, drawbuffer, value); | |
| } | |
| | |
| static void QOPENGLF_APIENTRY qopenglfResolveClearBufferiv(GLenum buffer, GLint drawbuffer, const GLint * value) | |
| { | |
| if (isES3(0)) | |
| qgles3Helper()->ClearBufferiv(buffer, drawbuffer, value); | |
| else | |
| RESOLVE_FUNC_VOID(0, ClearBufferiv)(buffer, drawbuffer, value); | |
| } | |
| | |
| static void QOPENGLF_APIENTRY qopenglfResolveClearBufferuiv(GLenum buffer, GLint drawbuffer, const GLuint * value) | |
| { | |
| if (isES3(0)) | |
| qgles3Helper()->ClearBufferuiv(buffer, drawbuffer, value); | |
| else | |
| RESOLVE_FUNC_VOID(0, ClearBufferuiv)(buffer, drawbuffer, value); | |
| } | |
| | |
| static GLenum QOPENGLF_APIENTRY qopenglfResolveClientWaitSync(GLsync sync, GLbitfield flags, GLuint64 timeout) | |
| { | |
| if (isES3(0)) | |
| return qgles3Helper()->ClientWaitSync(sync, flags, timeout); | |
| else | |
| RESOLVE_FUNC(GLenum, 0, ClientWaitSync)(sync, flags, timeout); | |
| } | |
| | |
| static void QOPENGLF_APIENTRY qopenglfResolveCompressedTexImage3D(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const void * data) | |
| { | |
| if (isES3(0)) | |
| qgles3Helper()->CompressedTexImage3D(target, level, internalformat, width, height, depth, border, imageSize, data); | |
| else | |
| RESOLVE_FUNC_VOID(0, CompressedTexImage3D)(target, level, internalformat, width, height, depth, border, imageSize, data); | |
| } | |
| | |
| static void QOPENGLF_APIENTRY qopenglfResolveCompressedTexSubImage3D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const void * data) | |
| { | |
| if (isES3(0)) | |
| qgles3Helper()->CompressedTexSubImage3D(target, level, xoffset, yoffset, zoffset, width, height, depth, format, imageSize, data); | |
| else | |
| RESOLVE_FUNC_VOID(0, CompressedTexSubImage3D)(target, level, xoffset, yoffset, zoffset, width, height, depth, format, imageSize, data); | |
| } | |
| | |
| static void QOPENGLF_APIENTRY qopenglfResolveCopyBufferSubData(GLenum readTarget, GLenum writeTarget, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size) | |
| { | |
| if (isES3(0)) | |
| qgles3Helper()->CopyBufferSubData(readTarget, writeTarget, readOffset, writeOffset, size); | |
| else | |
| RESOLVE_FUNC_VOID(0, CopyBufferSubData)(readTarget, writeTarget, readOffset, writeOffset, size); | |
| } | |
| | |
| static void QOPENGLF_APIENTRY qopenglfResolveCopyTexSubImage3D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height) | |
| { | |
| if (isES3(0)) | |
| qgles3Helper()->CopyTexSubImage3D(target, level, xoffset, yoffset, zoffset, x, y, width, height); | |
| else | |
| RESOLVE_FUNC_VOID(0, CopyTexSubImage3D)(target, level, xoffset, yoffset, zoffset, x, y, width, height); | |
| } | |
| | |
| static void QOPENGLF_APIENTRY qopenglfResolveDeleteQueries(GLsizei n, const GLuint * ids) | |
| { | |
| if (isES3(0)) | |
| qgles3Helper()->DeleteQueries(n, ids); | |
| else | |
| RESOLVE_FUNC_VOID(0, DeleteQueries)(n, ids); | |
| } | |
| | |
| static void QOPENGLF_APIENTRY qopenglfResolveDeleteSamplers(GLsizei count, const GLuint * samplers) | |
| { | |
| if (isES3(0)) | |
| qgles3Helper()->DeleteSamplers(count, samplers); | |
| else | |
| RESOLVE_FUNC_VOID(0, DeleteSamplers)(count, samplers); | |
| } | |
| | |
| static void QOPENGLF_APIENTRY qopenglfResolveDeleteSync(GLsync sync) | |
| { | |
| if (isES3(0)) | |
| qgles3Helper()->DeleteSync(sync); | |
| else | |
| RESOLVE_FUNC_VOID(0, DeleteSync)(sync); | |
| } | |
| | |
| static void QOPENGLF_APIENTRY qopenglfResolveDeleteTransformFeedbacks(GLsizei n, const GLuint * ids) | |
| { | |
| if (isES3(0)) | |
| qgles3Helper()->DeleteTransformFeedbacks(n, ids); | |
| else | |
| RESOLVE_FUNC_VOID(0, DeleteTransformFeedbacks)(n, ids); | |
| } | |
| | |
| static void QOPENGLF_APIENTRY qopenglfResolveDeleteVertexArrays(GLsizei n, const GLuint * arrays) | |
| { | |
| if (isES3(0)) | |
| qgles3Helper()->DeleteVertexArrays(n, arrays); | |
| else | |
| RESOLVE_FUNC_VOID(0, DeleteVertexArrays)(n, arrays); | |
| } | |
| | |
| static void QOPENGLF_APIENTRY qopenglfResolveDrawArraysInstanced(GLenum mode, GLint first, GLsizei count, GLsizei instancecount) | |
| { | |
| if (isES3(0)) | |
| qgles3Helper()->DrawArraysInstanced(mode, first, count, instancecount); | |
| else | |
| RESOLVE_FUNC_VOID(0, DrawArraysInstanced)(mode, first, count, instancecount); | |
| } | |
| | |
| static void QOPENGLF_APIENTRY qopenglfResolveDrawBuffers(GLsizei n, const GLenum * bufs) | |
| { | |
| if (isES3(0)) | |
| qgles3Helper()->DrawBuffers(n, bufs); | |
| else | |
| RESOLVE_FUNC_VOID(0, DrawBuffers)(n, bufs); | |
| } | |
| | |
| static void QOPENGLF_APIENTRY qopenglfResolveDrawElementsInstanced(GLenum mode, GLsizei count, GLenum type, const void * indices, GLsizei instancecount) | |
| { | |
| if (isES3(0)) | |
| qgles3Helper()->DrawElementsInstanced(mode, count, type, indices, instancecount); | |
| else | |
| RESOLVE_FUNC_VOID(0, DrawElementsInstanced)(mode, count, type, indices, instancecount); | |
| } | |
| | |
| static void QOPENGLF_APIENTRY qopenglfResolveDrawRangeElements(GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const void * indices) | |
| { | |
| if (isES3(0)) | |
| qgles3Helper()->DrawRangeElements(mode, start, end, count, type, indices); | |
| else | |
| RESOLVE_FUNC_VOID(0, DrawRangeElements)(mode, start, end, count, type, indices); | |
| } | |
| | |
| static void QOPENGLF_APIENTRY qopenglfResolveEndQuery(GLenum target) | |
| { | |
| if (isES3(0)) | |
| qgles3Helper()->EndQuery(target); | |
| else | |
| RESOLVE_FUNC_VOID(0, EndQuery)(target); | |
| } | |
| | |
| static void QOPENGLF_APIENTRY qopenglfResolveEndTransformFeedback() | |
| { | |
| if (isES3(0)) | |
| qgles3Helper()->EndTransformFeedback(); | |
| else | |
| RESOLVE_FUNC_VOID(0, EndTransformFeedback)(); | |
| } | |
| | |
| static GLsync QOPENGLF_APIENTRY qopenglfResolveFenceSync(GLenum condition, GLbitfield flags) | |
| { | |
| if (isES3(0)) | |
| return qgles3Helper()->FenceSync(condition, flags); | |
| else | |
| RESOLVE_FUNC(GLsync, 0, FenceSync)(condition, flags); | |
| } | |
| | |
| static void QOPENGLF_APIENTRY qopenglfResolveFlushMappedBufferRange(GLenum target, GLintptr offset, GLsizeiptr length) | |
| { | |
| if (isES3(0)) | |
| qgles3Helper()->FlushMappedBufferRange(target, offset, length); | |
| else | |
| RESOLVE_FUNC_VOID(0, FlushMappedBufferRange)(target, offset, length); | |
| } | |
| | |
| static void QOPENGLF_APIENTRY qopenglfResolveFramebufferTextureLayer(GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer) | |
| { | |
| if (isES3(0)) | |
| qgles3Helper()->FramebufferTextureLayer(target, attachment, texture, level, layer); | |
| else | |
| RESOLVE_FUNC_VOID(0, FramebufferTextureLayer)(target, attachment, texture, level, layer); | |
| } | |
| | |
| static void QOPENGLF_APIENTRY qopenglfResolveGenQueries(GLsizei n, GLuint* ids) | |
| { | |
| if (isES3(0)) | |
| qgles3Helper()->GenQueries(n, ids); | |
| else | |
| RESOLVE_FUNC_VOID(0, GenQueries)(n, ids); | |
| } | |
| | |
| static void QOPENGLF_APIENTRY qopenglfResolveGenSamplers(GLsizei count, GLuint* samplers) | |
| { | |
| if (isES3(0)) | |
| qgles3Helper()->GenSamplers(count, samplers); | |
| else | |
| RESOLVE_FUNC_VOID(0, GenSamplers)(count, samplers); | |
| } | |
| | |
| static void QOPENGLF_APIENTRY qopenglfResolveGenTransformFeedbacks(GLsizei n, GLuint* ids) | |
| { | |
| if (isES3(0)) | |
| qgles3Helper()->GenTransformFeedbacks(n, ids); | |
| else | |
| RESOLVE_FUNC_VOID(0, GenTransformFeedbacks)(n, ids); | |
| } | |
| | |
| static void QOPENGLF_APIENTRY qopenglfResolveGenVertexArrays(GLsizei n, GLuint* arrays) | |
| { | |
| if (isES3(0)) | |
| qgles3Helper()->GenVertexArrays(n, arrays); | |
| else | |
| RESOLVE_FUNC_VOID(0, GenVertexArrays)(n, arrays); | |
| } | |
| | |
| static void QOPENGLF_APIENTRY qopenglfResolveGetActiveUniformBlockName(GLuint program, GLuint uniformBlockIndex, GLsizei bufSize, GLsizei* length, GLchar* uniformBlockName) | |
| { | |
| if (isES3(0)) | |
| qgles3Helper()->GetActiveUniformBlockName(program, uniformBlockIndex, bufSize, length, uniformBlockName); | |
| else | |
| RESOLVE_FUNC_VOID(0, GetActiveUniformBlockName)(program, uniformBlockIndex, bufSize, length, uniformBlockName); | |
| } | |
| | |
| static void QOPENGLF_APIENTRY qopenglfResolveGetActiveUniformBlockiv(GLuint program, GLuint uniformBlockIndex, GLenum pname, GLint* params) | |
| { | |
| if (isES3(0)) | |
| qgles3Helper()->GetActiveUniformBlockiv(program, uniformBlockIndex, pname, params); | |
| else | |
| RESOLVE_FUNC_VOID(0, GetActiveUniformBlockiv)(program, uniformBlockIndex, pname, params); | |
| } | |
| | |
| static void QOPENGLF_APIENTRY qopenglfResolveGetActiveUniformsiv(GLuint program, GLsizei uniformCount, const GLuint * uniformIndices, GLenum pname, GLint* params) | |
| { | |
| if (isES3(0)) | |
| qgles3Helper()->GetActiveUniformsiv(program, uniformCount, uniformIndices, pname, params); | |
| else | |
| RESOLVE_FUNC_VOID(0, GetActiveUniformsiv)(program, uniformCount, uniformIndices, pname, params); | |
| } | |
| | |
| static void QOPENGLF_APIENTRY qopenglfResolveGetBufferParameteri64v(GLenum target, GLenum pname, GLint64* params) | |
| { | |
| if (isES3(0)) | |
| qgles3Helper()->GetBufferParameteri64v(target, pname, params); | |
| else | |
| RESOLVE_FUNC_VOID(0, GetBufferParameteri64v)(target, pname, params); | |
| } | |
| | |
| static void QOPENGLF_APIENTRY qopenglfResolveGetBufferPointerv(GLenum target, GLenum pname, void ** params) | |
| { | |
| if (isES3(0)) | |
| qgles3Helper()->GetBufferPointerv(target, pname, params); | |
| else | |
| RESOLVE_FUNC_VOID(0, GetBufferPointerv)(target, pname, params); | |
| } | |
| | |
| static GLint QOPENGLF_APIENTRY qopenglfResolveGetFragDataLocation(GLuint program, const GLchar * name) | |
| { | |
| if (isES3(0)) | |
| return qgles3Helper()->GetFragDataLocation(program, name); | |
| else | |
| RESOLVE_FUNC(GLint, 0, GetFragDataLocation)(program, name); | |
| } | |
| | |
| static void QOPENGLF_APIENTRY qopenglfResolveGetInteger64i_v(GLenum target, GLuint index, GLint64* data) | |
| { | |
| if (isES3(0)) | |
| qgles3Helper()->GetInteger64i_v(target, index, data); | |
| else | |
| RESOLVE_FUNC_VOID(0, GetInteger64i_v)(target, index, data); | |
| } | |
| | |
| static void QOPENGLF_APIENTRY qopenglfResolveGetInteger64v(GLenum pname, GLint64* data) | |
| { | |
| if (isES3(0)) | |
| qgles3Helper()->GetInteger64v(pname, data); | |
| else | |
| RESOLVE_FUNC_VOID(0, GetInteger64v)(pname, data); | |
| } | |
| | |
| static void QOPENGLF_APIENTRY qopenglfResolveGetIntegeri_v(GLenum target, GLuint index, GLint* data) | |
| { | |
| if (isES3(0)) | |
| qgles3Helper()->GetIntegeri_v(target, index, data); | |
| else | |
| RESOLVE_FUNC_VOID(0, GetIntegeri_v)(target, index, data); | |
| } | |
| | |
| static void QOPENGLF_APIENTRY qopenglfResolveGetInternalformativ(GLenum target, GLenum internalformat, GLenum pname, GLsizei bufSize, GLint* params) | |
| { | |
| if (isES3(0)) | |
| qgles3Helper()->GetInternalformativ(target, internalformat, pname, bufSize, params); | |
| else | |
| RESOLVE_FUNC_VOID(0, GetInternalformativ)(target, internalformat, pname, bufSize, params); | |
| } | |
| | |
| static void QOPENGLF_APIENTRY qopenglfResolveGetProgramBinary(GLuint program, GLsizei bufSize, GLsizei* length, GLenum* binaryFormat, void * binary) | |
| { | |
| if (isES3(0)) | |
| qgles3Helper()->GetProgramBinary(program, bufSize, length, binaryFormat, binary); | |
| else | |
| RESOLVE_FUNC_VOID(0, GetProgramBinary)(program, bufSize, length, binaryFormat, binary); | |
| } | |
| | |
| static void QOPENGLF_APIENTRY qopenglfResolveGetQueryObjectuiv(GLuint id, GLenum pname, GLuint* params) | |
| { | |
| if (isES3(0)) | |
| qgles3Helper()->GetQueryObjectuiv(id, pname, params); | |
| else | |
| RESOLVE_FUNC_VOID(0, GetQueryObjectuiv)(id, pname, params); | |
| } | |
| | |
| static void QOPENGLF_APIENTRY qopenglfResolveGetQueryiv(GLenum target, GLenum pname, GLint* params) | |
| { | |
| if (isES3(0)) | |
| qgles3Helper()->GetQueryiv(target, pname, params); | |
| else | |
| RESOLVE_FUNC_VOID(0, GetQueryiv)(target, pname, params); | |
| } | |
| | |
| static void QOPENGLF_APIENTRY qopenglfResolveGetSamplerParameterfv(GLuint sampler, GLenum pname, GLfloat* params) | |
| { | |
| if (isES3(0)) | |
| qgles3Helper()->GetSamplerParameterfv(sampler, pname, params); | |
| else | |
| RESOLVE_FUNC_VOID(0, GetSamplerParameterfv)(sampler, pname, params); | |
| } | |
| | |
| static void QOPENGLF_APIENTRY qopenglfResolveGetSamplerParameteriv(GLuint sampler, GLenum pname, GLint* params) | |
| { | |
| if (isES3(0)) | |
| qgles3Helper()->GetSamplerParameteriv(sampler, pname, params); | |
| else | |
| RESOLVE_FUNC_VOID(0, GetSamplerParameteriv)(sampler, pname, params); | |
| } | |
| | |
| static const GLubyte * QOPENGLF_APIENTRY qopenglfResolveGetStringi(GLenum name, GLuint index) | |
| { | |
| if (isES3(0)) | |
| return qgles3Helper()->GetStringi(name, index); | |
| else | |
| RESOLVE_FUNC(const GLubyte *, 0, GetStringi)(name, index); | |
| } | |
| | |
| static void QOPENGLF_APIENTRY qopenglfResolveGetSynciv(GLsync sync, GLenum pname, GLsizei bufSize, GLsizei* length, GLint* values) | |
| { | |
| if (isES3(0)) | |
| qgles3Helper()->GetSynciv(sync, pname, bufSize, length, values); | |
| else | |
| RESOLVE_FUNC_VOID(0, GetSynciv)(sync, pname, bufSize, length, values); | |
| } | |
| | |
| static void QOPENGLF_APIENTRY qopenglfResolveGetTransformFeedbackVarying(GLuint program, GLuint index, GLsizei bufSize, GLsizei* length, GLsizei* size, GLenum* type, GLchar* name) | |
| { | |
| if (isES3(0)) | |
| qgles3Helper()->GetTransformFeedbackVarying(program, index, bufSize, length, size, type, name); | |
| else | |
| RESOLVE_FUNC_VOID(0, GetTransformFeedbackVarying)(program, index, bufSize, length, size, type, name); | |
| } | |
| | |
| static GLuint QOPENGLF_APIENTRY qopenglfResolveGetUniformBlockIndex(GLuint program, const GLchar * uniformBlockName) | |
| { | |
| if (isES3(0)) | |
| return qgles3Helper()->GetUniformBlockIndex(program, uniformBlockName); | |
| else | |
| RESOLVE_FUNC(GLuint, 0, GetUniformBlockIndex)(program, uniformBlockName); | |
| } | |
| | |
| static void QOPENGLF_APIENTRY qopenglfResolveGetUniformIndices(GLuint program, GLsizei uniformCount, const GLchar *const* uniformNames, GLuint* uniformIndices) | |
| { | |
| if (isES3(0)) | |
| qgles3Helper()->GetUniformIndices(program, uniformCount, uniformNames, uniformIndices); | |
| else | |
| RESOLVE_FUNC_VOID(0, GetUniformIndices)(program, uniformCount, uniformNames, uniformIndices); | |
| } | |
| | |
| static void QOPENGLF_APIENTRY qopenglfResolveGetUniformuiv(GLuint program, GLint location, GLuint* params) | |
| { | |
| if (isES3(0)) | |
| qgles3Helper()->GetUniformuiv(program, location, params); | |
| else | |
| RESOLVE_FUNC_VOID(0, GetUniformuiv)(program, location, params); | |
| } | |
| | |
| static void QOPENGLF_APIENTRY qopenglfResolveGetVertexAttribIiv(GLuint index, GLenum pname, GLint* params) | |
| { | |
| if (isES3(0)) | |
| qgles3Helper()->GetVertexAttribIiv(index, pname, params); | |
| else | |
| RESOLVE_FUNC_VOID(0, GetVertexAttribIiv)(index, pname, params); | |
| } | |
| | |
| static void QOPENGLF_APIENTRY qopenglfResolveGetVertexAttribIuiv(GLuint index, GLenum pname, GLuint* params) | |
| { | |
| if (isES3(0)) | |
| qgles3Helper()->GetVertexAttribIuiv(index, pname, params); | |
| else | |
| RESOLVE_FUNC_VOID(0, GetVertexAttribIuiv)(index, pname, params); | |
| } | |
| | |
| static void QOPENGLF_APIENTRY qopenglfResolveInvalidateFramebuffer(GLenum target, GLsizei numAttachments, const GLenum * attachments) | |
| { | |
| if (isES3(0)) | |
| qgles3Helper()->InvalidateFramebuffer(target, numAttachments, attachments); | |
| else | |
| RESOLVE_FUNC_VOID(0, InvalidateFramebuffer)(target, numAttachments, attachments); | |
| } | |
| | |
| static void QOPENGLF_APIENTRY qopenglfResolveInvalidateSubFramebuffer(GLenum target, GLsizei numAttachments, const GLenum * attachments, GLint x, GLint y, GLsizei width, GLsizei height) | |
| { | |
| if (isES3(0)) | |
| qgles3Helper()->InvalidateSubFramebuffer(target, numAttachments, attachments, x, y, width, height); | |
| else | |
| RESOLVE_FUNC_VOID(0, InvalidateSubFramebuffer)(target, numAttachments, attachments, x, y, width, height); | |
| } | |
| | |
| static GLboolean QOPENGLF_APIENTRY qopenglfResolveIsQuery(GLuint id) | |
| { | |
| if (isES3(0)) | |
| return qgles3Helper()->IsQuery(id); | |
| else | |
| RESOLVE_FUNC(GLboolean, 0, IsQuery)(id); | |
| } | |
| | |
| static GLboolean QOPENGLF_APIENTRY qopenglfResolveIsSampler(GLuint sampler) | |
| { | |
| if (isES3(0)) | |
| return qgles3Helper()->IsSampler(sampler); | |
| else | |
| RESOLVE_FUNC(GLboolean, 0, IsSampler)(sampler); | |
| } | |
| | |
| static GLboolean QOPENGLF_APIENTRY qopenglfResolveIsSync(GLsync sync) | |
| { | |
| if (isES3(0)) | |
| return qgles3Helper()->IsSync(sync); | |
| else | |
| RESOLVE_FUNC(GLboolean, 0, IsSync)(sync); | |
| } | |
| | |
| static GLboolean QOPENGLF_APIENTRY qopenglfResolveIsTransformFeedback(GLuint id) | |
| { | |
| if (isES3(0)) | |
| return qgles3Helper()->IsTransformFeedback(id); | |
| else | |
| RESOLVE_FUNC(GLboolean, 0, IsTransformFeedback)(id); | |
| } | |
| | |
| static GLboolean QOPENGLF_APIENTRY qopenglfResolveIsVertexArray(GLuint array) | |
| { | |
| if (isES3(0)) | |
| return qgles3Helper()->IsVertexArray(array); | |
| else | |
| RESOLVE_FUNC(GLboolean, 0, IsVertexArray)(array); | |
| } | |
| | |
| static void * QOPENGLF_APIENTRY qopenglfResolveMapBufferRange(GLenum target, GLintptr offset, GLsizeiptr length, GLbitfield access) | |
| { | |
| if (isES3(0)) | |
| return qgles3Helper()->MapBufferRange(target, offset, length, access); | |
| else | |
| RESOLVE_FUNC(void *, 0, MapBufferRange)(target, offset, length, access); | |
| } | |
| | |
| static void QOPENGLF_APIENTRY qopenglfResolvePauseTransformFeedback() | |
| { | |
| if (isES3(0)) | |
| qgles3Helper()->PauseTransformFeedback(); | |
| else | |
| RESOLVE_FUNC_VOID(0, PauseTransformFeedback)(); | |
| } | |
| | |
| static void QOPENGLF_APIENTRY qopenglfResolveProgramBinary(GLuint program, GLenum binaryFormat, const void * binary, GLsizei length) | |
| { | |
| if (isES3(0)) | |
| qgles3Helper()->ProgramBinary(program, binaryFormat, binary, length); | |
| else | |
| RESOLVE_FUNC_VOID(0, ProgramBinary)(program, binaryFormat, binary, length); | |
| } | |
| | |
| static void QOPENGLF_APIENTRY qopenglfResolveProgramParameteri(GLuint program, GLenum pname, GLint value) | |
| { | |
| if (isES3(0)) | |
| qgles3Helper()->ProgramParameteri(program, pname, value); | |
| else | |
| RESOLVE_FUNC_VOID(0, ProgramParameteri)(program, pname, value); | |
| } | |
| | |
| static void QOPENGLF_APIENTRY qopenglfResolveReadBuffer(GLenum src) | |
| { | |
| if (isES3(0)) | |
| qgles3Helper()->ReadBuffer(src); | |
| else | |
| RESOLVE_FUNC_VOID(0, ReadBuffer)(src); | |
| } | |
| | |
| static void QOPENGLF_APIENTRY qopenglfResolveRenderbufferStorageMultisample(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height) | |
| { | |
| if (isES3(0)) | |
| qgles3Helper()->RenderbufferStorageMultisample(target, samples, internalformat, width, height); | |
| else | |
| RESOLVE_FUNC_VOID(ResolveEXT | ResolveANGLE | ResolveNV, RenderbufferStorageMultisample) | |
| (target, samples, internalformat, width, height); | |
| } | |
| | |
| static void QOPENGLF_APIENTRY qopenglfResolveResumeTransformFeedback() | |
| { | |
| if (isES3(0)) | |
| qgles3Helper()->ResumeTransformFeedback(); | |
| else | |
| RESOLVE_FUNC_VOID(0, ResumeTransformFeedback)(); | |
| } | |
| | |
| static void QOPENGLF_APIENTRY qopenglfResolveSamplerParameterf(GLuint sampler, GLenum pname, GLfloat param) | |
| { | |
| if (isES3(0)) | |
| qgles3Helper()->SamplerParameterf(sampler, pname, param); | |
| else | |
| RESOLVE_FUNC_VOID(0, SamplerParameterf)(sampler, pname, param); | |
| } | |
| | |
| static void QOPENGLF_APIENTRY qopenglfResolveSamplerParameterfv(GLuint sampler, GLenum pname, const GLfloat * param) | |
| { | |
| if (isES3(0)) | |
| qgles3Helper()->SamplerParameterfv(sampler, pname, param); | |
| else | |
| RESOLVE_FUNC_VOID(0, SamplerParameterfv)(sampler, pname, param); | |
| } | |
| | |
| static void QOPENGLF_APIENTRY qopenglfResolveSamplerParameteri(GLuint sampler, GLenum pname, GLint param) | |
| { | |
| if (isES3(0)) | |
| qgles3Helper()->SamplerParameteri(sampler, pname, param); | |
| else | |
| RESOLVE_FUNC_VOID(0, SamplerParameteri)(sampler, pname, param); | |
| } | |
| | |
| static void QOPENGLF_APIENTRY qopenglfResolveSamplerParameteriv(GLuint sampler, GLenum pname, const GLint * param) | |
| { | |
| if (isES3(0)) | |
| qgles3Helper()->SamplerParameteriv(sampler, pname, param); | |
| else | |
| RESOLVE_FUNC_VOID(0, SamplerParameteriv)(sampler, pname, param); | |
| } | |
| | |
| static void QOPENGLF_APIENTRY qopenglfResolveTexImage3D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const void * pixels) | |
| { | |
| if (isES3(0)) | |
| qgles3Helper()->TexImage3D(target, level, internalformat, width, height, depth, border, format, type, pixels); | |
| else | |
| RESOLVE_FUNC_VOID(0, TexImage3D)(target, level, internalformat, width, height, depth, border, format, type, pixels); | |
| } | |
| | |
| static void QOPENGLF_APIENTRY qopenglfResolveTexStorage2D(GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height) | |
| { | |
| if (isES3(0)) | |
| qgles3Helper()->TexStorage2D(target, levels, internalformat, width, height); | |
| else | |
| RESOLVE_FUNC_VOID(0, TexStorage2D)(target, levels, internalformat, width, height); | |
| } | |
| | |
| static void QOPENGLF_APIENTRY qopenglfResolveTexStorage3D(GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth) | |
| { | |
| if (isES3(0)) | |
| qgles3Helper()->TexStorage3D(target, levels, internalformat, width, height, depth); | |
| else | |
| RESOLVE_FUNC_VOID(0, TexStorage3D)(target, levels, internalformat, width, height, depth); | |
| } | |
| | |
| static void QOPENGLF_APIENTRY qopenglfResolveTexSubImage3D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void * pixels) | |
| { | |
| if (isES3(0)) | |
| qgles3Helper()->TexSubImage3D(target, level, xoffset, yoffset, zoffset, width, height, depth, format, type, pixels); | |
| else | |
| RESOLVE_FUNC_VOID(0, TexSubImage3D)(target, level, xoffset, yoffset, zoffset, width, height, depth, format, type, pixels); | |
| } | |
| | |
| static void QOPENGLF_APIENTRY qopenglfResolveTransformFeedbackVaryings(GLuint program, GLsizei count, const GLchar *const* varyings, GLenum bufferMode) | |
| { | |
| if (isES3(0)) | |
| qgles3Helper()->TransformFeedbackVaryings(program, count, varyings, bufferMode); | |
| else | |
| RESOLVE_FUNC_VOID(0, TransformFeedbackVaryings)(program, count, varyings, bufferMode); | |
| } | |
| | |
| static void QOPENGLF_APIENTRY qopenglfResolveUniform1ui(GLint location, GLuint v0) | |
| { | |
| if (isES3(0)) | |
| qgles3Helper()->Uniform1ui(location, v0); | |
| else | |
| RESOLVE_FUNC_VOID(0, Uniform1ui)(location, v0); | |
| } | |
| | |
| static void QOPENGLF_APIENTRY qopenglfResolveUniform1uiv(GLint location, GLsizei count, const GLuint * value) | |
| { | |
| if (isES3(0)) | |
| qgles3Helper()->Uniform1uiv(location, count, value); | |
| else | |
| RESOLVE_FUNC_VOID(0, Uniform1uiv)(location, count, value); | |
| } | |
| | |
| static void QOPENGLF_APIENTRY qopenglfResolveUniform2ui(GLint location, GLuint v0, GLuint v1) | |
| { | |
| if (isES3(0)) | |
| qgles3Helper()->Uniform2ui(location, v0, v1); | |
| else | |
| RESOLVE_FUNC_VOID(0, Uniform2ui)(location, v0, v1); | |
| } | |
| | |
| static void QOPENGLF_APIENTRY qopenglfResolveUniform2uiv(GLint location, GLsizei count, const GLuint * value) | |
| { | |
| if (isES3(0)) | |
| qgles3Helper()->Uniform2uiv(location, count, value); | |
| else | |
| RESOLVE_FUNC_VOID(0, Uniform2uiv)(location, count, value); | |
| } | |
| | |
| static void QOPENGLF_APIENTRY qopenglfResolveUniform3ui(GLint location, GLuint v0, GLuint v1, GLuint v2) | |
| { | |
| if (isES3(0)) | |
| qgles3Helper()->Uniform3ui(location, v0, v1, v2); | |
| else | |
| RESOLVE_FUNC_VOID(0, Uniform3ui)(location, v0, v1, v2); | |
| } | |
| | |
| static void QOPENGLF_APIENTRY qopenglfResolveUniform3uiv(GLint location, GLsizei count, const GLuint * value) | |
| { | |
| if (isES3(0)) | |
| qgles3Helper()->Uniform3uiv(location, count, value); | |
| else | |
| RESOLVE_FUNC_VOID(0, Uniform3uiv)(location, count, value); | |
| } | |
| | |
| static void QOPENGLF_APIENTRY qopenglfResolveUniform4ui(GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3) | |
| { | |
| if (isES3(0)) | |
| qgles3Helper()->Uniform4ui(location, v0, v1, v2, v3); | |
| else | |
| RESOLVE_FUNC_VOID(0, Uniform4ui)(location, v0, v1, v2, v3); | |
| } | |
| | |
| static void QOPENGLF_APIENTRY qopenglfResolveUniform4uiv(GLint location, GLsizei count, const GLuint * value) | |
| { | |
| if (isES3(0)) | |
| qgles3Helper()->Uniform4uiv(location, count, value); | |
| else | |
| RESOLVE_FUNC_VOID(0, Uniform4uiv)(location, count, value); | |
| } | |
| | |
| static void QOPENGLF_APIENTRY qopenglfResolveUniformBlockBinding(GLuint program, GLuint uniformBlockIndex, GLuint uniformBlockBinding) | |
| { | |
| if (isES3(0)) | |
| qgles3Helper()->UniformBlockBinding(program, uniformBlockIndex, uniformBlockBinding); | |
| else | |
| RESOLVE_FUNC_VOID(0, UniformBlockBinding)(program, uniformBlockIndex, uniformBlockBinding); | |
| } | |
| | |
| static void QOPENGLF_APIENTRY qopenglfResolveUniformMatrix2x3fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat * value) | |
| { | |
| if (isES3(0)) | |
| qgles3Helper()->UniformMatrix2x3fv(location, count, transpose, value); | |
| else | |
| RESOLVE_FUNC_VOID(0, UniformMatrix2x3fv)(location, count, transpose, value); | |
| } | |
| | |
| static void QOPENGLF_APIENTRY qopenglfResolveUniformMatrix2x4fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat * value) | |
| { | |
| if (isES3(0)) | |
| qgles3Helper()->UniformMatrix2x4fv(location, count, transpose, value); | |
| else | |
| RESOLVE_FUNC_VOID(0, UniformMatrix2x4fv)(location, count, transpose, value); | |
| } | |
| | |
| static void QOPENGLF_APIENTRY qopenglfResolveUniformMatrix3x2fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat * value) | |
| { | |
| if (isES3(0)) | |
| qgles3Helper()->UniformMatrix3x2fv(location, count, transpose, value); | |
| else | |
| RESOLVE_FUNC_VOID(0, UniformMatrix3x2fv)(location, count, transpose, value); | |
| } | |
| | |
| static void QOPENGLF_APIENTRY qopenglfResolveUniformMatrix3x4fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat * value) | |
| { | |
| if (isES3(0)) | |
| qgles3Helper()->UniformMatrix3x4fv(location, count, transpose, value); | |
| else | |
| RESOLVE_FUNC_VOID(0, UniformMatrix3x4fv)(location, count, transpose, value); | |
| } | |
| | |
| static void QOPENGLF_APIENTRY qopenglfResolveUniformMatrix4x2fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat * value) | |
| { | |
| if (isES3(0)) | |
| qgles3Helper()->UniformMatrix4x2fv(location, count, transpose, value); | |
| else | |
| RESOLVE_FUNC_VOID(0, UniformMatrix4x2fv)(location, count, transpose, value); | |
| } | |
| | |
| static void QOPENGLF_APIENTRY qopenglfResolveUniformMatrix4x3fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat * value) | |
| { | |
| if (isES3(0)) | |
| qgles3Helper()->UniformMatrix4x3fv(location, count, transpose, value); | |
| else | |
| RESOLVE_FUNC_VOID(0, UniformMatrix4x3fv)(location, count, transpose, value); | |
| } | |
| | |
| static GLboolean QOPENGLF_APIENTRY qopenglfResolveUnmapBuffer(GLenum target) | |
| { | |
| if (isES3(0)) | |
| return qgles3Helper()->UnmapBuffer(target); | |
| else | |
| RESOLVE_FUNC(GLboolean, ResolveOES, UnmapBuffer)(target); | |
| } | |
| | |
| static void QOPENGLF_APIENTRY qopenglfResolveVertexAttribDivisor(GLuint index, GLuint divisor) | |
| { | |
| if (isES3(0)) | |
| qgles3Helper()->VertexAttribDivisor(index, divisor); | |
| else | |
| RESOLVE_FUNC_VOID(0, VertexAttribDivisor)(index, divisor); | |
| } | |
| | |
| static void QOPENGLF_APIENTRY qopenglfResolveVertexAttribI4i(GLuint index, GLint x, GLint y, GLint z, GLint w) | |
| { | |
| if (isES3(0)) | |
| qgles3Helper()->VertexAttribI4i(index, x, y, z, w); | |
| else | |
| RESOLVE_FUNC_VOID(0, VertexAttribI4i)(index, x, y, z, w); | |
| } | |
| | |
| static void QOPENGLF_APIENTRY qopenglfResolveVertexAttribI4iv(GLuint index, const GLint * v) | |
| { | |
| if (isES3(0)) | |
| qgles3Helper()->VertexAttribI4iv(index, v); | |
| else | |
| RESOLVE_FUNC_VOID(0, VertexAttribI4iv)(index, v); | |
| } | |
| | |
| static void QOPENGLF_APIENTRY qopenglfResolveVertexAttribI4ui(GLuint index, GLuint x, GLuint y, GLuint z, GLuint w) | |
| { | |
| if (isES3(0)) | |
| qgles3Helper()->VertexAttribI4ui(index, x, y, z, w); | |
| else | |
| RESOLVE_FUNC_VOID(0, VertexAttribI4ui)(index, x, y, z, w); | |
| } | |
| | |
| static void QOPENGLF_APIENTRY qopenglfResolveVertexAttribI4uiv(GLuint index, const GLuint * v) | |
| { | |
| if (isES3(0)) | |
| qgles3Helper()->VertexAttribI4uiv(index, v); | |
| else | |
| RESOLVE_FUNC_VOID(0, VertexAttribI4uiv)(index, v); | |
| } | |
| | |
| static void QOPENGLF_APIENTRY qopenglfResolveVertexAttribIPointer(GLuint index, GLint size, GLenum type, GLsizei stride, const void * pointer) | |
| { | |
| if (isES3(0)) | |
| qgles3Helper()->VertexAttribIPointer(index, size, type, stride, pointer); | |
| else | |
| RESOLVE_FUNC_VOID(0, VertexAttribIPointer)(index, size, type, stride, pointer); | |
| } | |
| | |
| static void QOPENGLF_APIENTRY qopenglfResolveWaitSync(GLsync sync, GLbitfield flags, GLuint64 timeout) | |
| { | |
| if (isES3(0)) | |
| qgles3Helper()->WaitSync(sync, flags, timeout); | |
| else | |
| RESOLVE_FUNC_VOID(0, WaitSync)(sync, flags, timeout); | |
| } | |
| | |
| static void QOPENGLF_APIENTRY qopenglfResolveActiveShaderProgram(GLuint pipeline, GLuint program) | |
| { | |
| if (isES3(1)) | |
| qgles3Helper()->ActiveShaderProgram(pipeline, program); | |
| else | |
| RESOLVE_FUNC_VOID(0, ActiveShaderProgram)(pipeline, program); | |
| } | |
| | |
| static void QOPENGLF_APIENTRY qopenglfResolveBindImageTexture(GLuint unit, GLuint texture, GLint level, GLboolean layered, GLint layer, GLenum access, GLenum format) | |
| { | |
| if (isES3(1)) | |
| qgles3Helper()->BindImageTexture(unit, texture, level, layered, layer, access, format); | |
| else | |
| RESOLVE_FUNC_VOID(0, BindImageTexture)(unit, texture, level, layered, layer, access, format); | |
| } | |
| | |
| static void QOPENGLF_APIENTRY qopenglfResolveBindProgramPipeline(GLuint pipeline) | |
| { | |
| if (isES3(1)) | |
| qgles3Helper()->BindProgramPipeline(pipeline); | |
| else | |
| RESOLVE_FUNC_VOID(0, BindProgramPipeline)(pipeline); | |
| } | |
| | |
| static void QOPENGLF_APIENTRY qopenglfResolveBindVertexBuffer(GLuint bindingindex, GLuint buffer, GLintptr offset, GLsizei stride) | |
| { | |
| if (isES3(1)) | |
| qgles3Helper()->BindVertexBuffer(bindingindex, buffer, offset, stride); | |
| else | |
| RESOLVE_FUNC_VOID(0, BindVertexBuffer)(bindingindex, buffer, offset, stride); | |
| } | |
| | |
| static GLuint QOPENGLF_APIENTRY qopenglfResolveCreateShaderProgramv(GLenum type, GLsizei count, const GLchar *const* strings) | |
| { | |
| if (isES3(1)) | |
| return qgles3Helper()->CreateShaderProgramv(type, count, strings); | |
| else | |
| RESOLVE_FUNC(GLuint, 0, CreateShaderProgramv)(type, count, strings); | |
| } | |
| | |
| static void QOPENGLF_APIENTRY qopenglfResolveDeleteProgramPipelines(GLsizei n, const GLuint * pipelines) | |
| { | |
| if (isES3(1)) | |
| qgles3Helper()->DeleteProgramPipelines(n, pipelines); | |
| else | |
| RESOLVE_FUNC_VOID(0, DeleteProgramPipelines)(n, pipelines); | |
| } | |
| | |
| static void QOPENGLF_APIENTRY qopenglfResolveDispatchCompute(GLuint num_groups_x, GLuint num_groups_y, GLuint num_groups_z) | |
| { | |
| if (isES3(1)) | |
| qgles3Helper()->DispatchCompute(num_groups_x, num_groups_y, num_groups_z); | |
| else | |
| RESOLVE_FUNC_VOID(0, DispatchCompute)(num_groups_x, num_groups_y, num_groups_z); | |
| } | |
| | |
| static void QOPENGLF_APIENTRY qopenglfResolveDispatchComputeIndirect(GLintptr indirect) | |
| { | |
| if (isES3(1)) | |
| qgles3Helper()->DispatchComputeIndirect(indirect); | |
| else | |
| RESOLVE_FUNC_VOID(0, DispatchComputeIndirect)(indirect); | |
| } | |
| | |
| static void QOPENGLF_APIENTRY qopenglfResolveDrawArraysIndirect(GLenum mode, const void * indirect) | |
| { | |
| if (isES3(1)) | |
| qgles3Helper()->DrawArraysIndirect(mode, indirect); | |
| else | |
| RESOLVE_FUNC_VOID(0, DrawArraysIndirect)(mode, indirect); | |
| } | |
| | |
| static void QOPENGLF_APIENTRY qopenglfResolveDrawElementsIndirect(GLenum mode, GLenum type, const void * indirect) | |
| { | |
| if (isES3(1)) | |
| qgles3Helper()->DrawElementsIndirect(mode, type, indirect); | |
| else | |
| RESOLVE_FUNC_VOID(0, DrawElementsIndirect)(mode, type, indirect); | |
| } | |
| | |
| static void QOPENGLF_APIENTRY qopenglfResolveFramebufferParameteri(GLenum target, GLenum pname, GLint param) | |
| { | |
| if (isES3(1)) | |
| qgles3Helper()->FramebufferParameteri(target, pname, param); | |
| else | |
| RESOLVE_FUNC_VOID(0, FramebufferParameteri)(target, pname, param); | |
| } | |
| | |
| static void QOPENGLF_APIENTRY qopenglfResolveGenProgramPipelines(GLsizei n, GLuint* pipelines) | |
| { | |
| if (isES3(1)) | |
| qgles3Helper()->GenProgramPipelines(n, pipelines); | |
| else | |
| RESOLVE_FUNC_VOID(0, GenProgramPipelines)(n, pipelines); | |
| } | |
| | |
| static void QOPENGLF_APIENTRY qopenglfResolveGetBooleani_v(GLenum target, GLuint index, GLboolean* data) | |
| { | |
| if (isES3(1)) | |
| qgles3Helper()->GetBooleani_v(target, index, data); | |
| else | |
| RESOLVE_FUNC_VOID(0, GetBooleani_v)(target, index, data); | |
| } | |
| | |
| static void QOPENGLF_APIENTRY qopenglfResolveGetFramebufferParameteriv(GLenum target, GLenum pname, GLint* params) | |
| { | |
| if (isES3(1)) | |
| qgles3Helper()->GetFramebufferParameteriv(target, pname, params); | |
| else | |
| RESOLVE_FUNC_VOID(0, GetFramebufferParameteriv)(target, pname, params); | |
| } | |
| | |
| static void QOPENGLF_APIENTRY qopenglfResolveGetMultisamplefv(GLenum pname, GLuint index, GLfloat* val) | |
| { | |
| if (isES3(1)) | |
| qgles3Helper()->GetMultisamplefv(pname, index, val); | |
| else | |
| RESOLVE_FUNC_VOID(0, GetMultisamplefv)(pname, index, val); | |
| } | |
| | |
| static void QOPENGLF_APIENTRY qopenglfResolveGetProgramInterfaceiv(GLuint program, GLenum programInterface, GLenum pname, GLint* params) | |
| { | |
| if (isES3(1)) | |
| qgles3Helper()->GetProgramInterfaceiv(program, programInterface, pname, params); | |
| else | |
| RESOLVE_FUNC_VOID(0, GetProgramInterfaceiv)(program, programInterface, pname, params); | |
| } | |
| | |
| static void QOPENGLF_APIENTRY qopenglfResolveGetProgramPipelineInfoLog(GLuint pipeline, GLsizei bufSize, GLsizei* length, GLchar* infoLog) | |
| { | |
| if (isES3(1)) | |
| qgles3Helper()->GetProgramPipelineInfoLog(pipeline, bufSize, length, infoLog); | |
| else | |
| RESOLVE_FUNC_VOID(0, GetProgramPipelineInfoLog)(pipeline, bufSize, length, infoLog); | |
| } | |
| | |
| static void QOPENGLF_APIENTRY qopenglfResolveGetProgramPipelineiv(GLuint pipeline, GLenum pname, GLint* params) | |
| { | |
| if (isES3(1)) | |
| qgles3Helper()->GetProgramPipelineiv(pipeline, pname, params); | |
| else | |
| RESOLVE_FUNC_VOID(0, GetProgramPipelineiv)(pipeline, pname, params); | |
| } | |
| | |
| static GLuint QOPENGLF_APIENTRY qopenglfResolveGetProgramResourceIndex(GLuint program, GLenum programInterface, const GLchar * name) | |
| { | |
| if (isES3(1)) | |
| return qgles3Helper()->GetProgramResourceIndex(program, programInterface, name); | |
| else | |
| RESOLVE_FUNC(GLuint, 0, GetProgramResourceIndex)(program, programInterface, name); | |
| } | |
| | |
| static GLint QOPENGLF_APIENTRY qopenglfResolveGetProgramResourceLocation(GLuint program, GLenum programInterface, const GLchar * name) | |
| { | |
| if (isES3(1)) | |
| return qgles3Helper()->GetProgramResourceLocation(program, programInterface, name); | |
| else | |
| RESOLVE_FUNC(GLint, 0, GetProgramResourceLocation)(program, programInterface, name); | |
| } | |
| | |
| static void QOPENGLF_APIENTRY qopenglfResolveGetProgramResourceName(GLuint program, GLenum programInterface, GLuint index, GLsizei bufSize, GLsizei* length, GLchar* name) | |
| { | |
| if (isES3(1)) | |
| qgles3Helper()->GetProgramResourceName(program, programInterface, index, bufSize, length, name); | |
| else | |
| RESOLVE_FUNC_VOID(0, GetProgramResourceName)(program, programInterface, index, bufSize, length, name); | |
| } | |
| | |
| static void QOPENGLF_APIENTRY qopenglfResolveGetProgramResourceiv(GLuint program, GLenum programInterface, GLuint index, GLsizei propCount, const GLenum * props, GLsizei bufSize, GLsizei* length, GLint* params) | |
| { | |
| if (isES3(1)) | |
| qgles3Helper()->GetProgramResourceiv(program, programInterface, index, propCount, props, bufSize, length, params); | |
| else | |
| RESOLVE_FUNC_VOID(0, GetProgramResourceiv)(program, programInterface, index, propCount, props, bufSize, length, params); | |
| } | |
| | |
| static void QOPENGLF_APIENTRY qopenglfResolveGetTexLevelParameterfv(GLenum target, GLint level, GLenum pname, GLfloat* params) | |
| { | |
| if (isES3(1)) | |
| qgles3Helper()->GetTexLevelParameterfv(target, level, pname, params); | |
| else | |
| RESOLVE_FUNC_VOID(0, GetTexLevelParameterfv)(target, level, pname, params); | |
| } | |
| | |
| static void QOPENGLF_APIENTRY qopenglfResolveGetTexLevelParameteriv(GLenum target, GLint level, GLenum pname, GLint* params) | |
| { | |
| if (isES3(1)) | |
| qgles3Helper()->GetTexLevelParameteriv(target, level, pname, params); | |
| else | |
| RESOLVE_FUNC_VOID(0, GetTexLevelParameteriv)(target, level, pname, params); | |
| } | |
| | |
| static GLboolean QOPENGLF_APIENTRY qopenglfResolveIsProgramPipeline(GLuint pipeline) | |
| { | |
| if (isES3(1)) | |
| return qgles3Helper()->IsProgramPipeline(pipeline); | |
| else | |
| RESOLVE_FUNC(GLboolean, 0, IsProgramPipeline)(pipeline); | |
| } | |
| | |
| static void QOPENGLF_APIENTRY qopenglfResolveMemoryBarrier(GLbitfield barriers) | |
| { | |
| if (isES3(1)) | |
| qgles3Helper()->MemoryBarrierFunc(barriers); | |
| else | |
| RESOLVE_FUNC_VOID(0, MemoryBarrierFunc)(barriers); | |
| } | |
| | |
| static void QOPENGLF_APIENTRY qopenglfResolveMemoryBarrierByRegion(GLbitfield barriers) | |
| { | |
| if (isES3(1)) | |
| qgles3Helper()->MemoryBarrierByRegion(barriers); | |
| else | |
| RESOLVE_FUNC_VOID(0, MemoryBarrierByRegion)(barriers); | |
| } | |
| | |
| static void QOPENGLF_APIENTRY qopenglfResolveProgramUniform1f(GLuint program, GLint location, GLfloat v0) | |
| { | |
| if (isES3(1)) | |
| qgles3Helper()->ProgramUniform1f(program, location, v0); | |
| else | |
| RESOLVE_FUNC_VOID(0, ProgramUniform1f)(program, location, v0); | |
| } | |
| | |
| static void QOPENGLF_APIENTRY qopenglfResolveProgramUniform1fv(GLuint program, GLint location, GLsizei count, const GLfloat * value) | |
| { | |
| if (isES3(1)) | |
| qgles3Helper()->ProgramUniform1fv(program, location, count, value); | |
| else | |
| RESOLVE_FUNC_VOID(0, ProgramUniform1fv)(program, location, count, value); | |
| } | |
| | |
| static void QOPENGLF_APIENTRY qopenglfResolveProgramUniform1i(GLuint program, GLint location, GLint v0) | |
| { | |
| if (isES3(1)) | |
| qgles3Helper()->ProgramUniform1i(program, location, v0); | |
| else | |
| RESOLVE_FUNC_VOID(0, ProgramUniform1i)(program, location, v0); | |
| } | |
| | |
| static void QOPENGLF_APIENTRY qopenglfResolveProgramUniform1iv(GLuint program, GLint location, GLsizei count, const GLint * value) | |
| { | |
| if (isES3(1)) | |
| qgles3Helper()->ProgramUniform1iv(program, location, count, value); | |
| else | |
| RESOLVE_FUNC_VOID(0, ProgramUniform1iv)(program, location, count, value); | |
| } | |
| | |
| static void QOPENGLF_APIENTRY qopenglfResolveProgramUniform1ui(GLuint program, GLint location, GLuint v0) | |
| { | |
| if (isES3(1)) | |
| qgles3Helper()->ProgramUniform1ui(program, location, v0); | |
| else | |
| RESOLVE_FUNC_VOID(0, ProgramUniform1ui)(program, location, v0); | |
| } | |
| | |
| static void QOPENGLF_APIENTRY qopenglfResolveProgramUniform1uiv(GLuint program, GLint location, GLsizei count, const GLuint * value) | |
| { | |
| if (isES3(1)) | |
| qgles3Helper()->ProgramUniform1uiv(program, location, count, value); | |
| else | |
| RESOLVE_FUNC_VOID(0, ProgramUniform1uiv)(program, location, count, value); | |
| } | |
| | |
| static void QOPENGLF_APIENTRY qopenglfResolveProgramUniform2f(GLuint program, GLint location, GLfloat v0, GLfloat v1) | |
| { | |
| if (isES3(1)) | |
| qgles3Helper()->ProgramUniform2f(program, location, v0, v1); | |
| else | |
| RESOLVE_FUNC_VOID(0, ProgramUniform2f)(program, location, v0, v1); | |
| } | |
| | |
| static void QOPENGLF_APIENTRY qopenglfResolveProgramUniform2fv(GLuint program, GLint location, GLsizei count, const GLfloat * value) | |
| { | |
| if (isES3(1)) | |
| qgles3Helper()->ProgramUniform2fv(program, location, count, value); | |
| else | |
| RESOLVE_FUNC_VOID(0, ProgramUniform2fv)(program, location, count, value); | |
| } | |
| | |
| static void QOPENGLF_APIENTRY qopenglfResolveProgramUniform2i(GLuint program, GLint location, GLint v0, GLint v1) | |
| { | |
| if (isES3(1)) | |
| qgles3Helper()->ProgramUniform2i(program, location, v0, v1); | |
| else | |
| RESOLVE_FUNC_VOID(0, ProgramUniform2i)(program, location, v0, v1); | |
| } | |
| | |
| static void QOPENGLF_APIENTRY qopenglfResolveProgramUniform2iv(GLuint program, GLint location, GLsizei count, const GLint * value) | |
| { | |
| if (isES3(1)) | |
| qgles3Helper()->ProgramUniform2iv(program, location, count, value); | |
| else | |
| RESOLVE_FUNC_VOID(0, ProgramUniform2iv)(program, location, count, value); | |
| } | |
| | |
| static void QOPENGLF_APIENTRY qopenglfResolveProgramUniform2ui(GLuint program, GLint location, GLuint v0, GLuint v1) | |
| { | |
| if (isES3(1)) | |
| qgles3Helper()->ProgramUniform2ui(program, location, v0, v1); | |
| else | |
| RESOLVE_FUNC_VOID(0, ProgramUniform2ui)(program, location, v0, v1); | |
| } | |
| | |
| static void QOPENGLF_APIENTRY qopenglfResolveProgramUniform2uiv(GLuint program, GLint location, GLsizei count, const GLuint * value) | |
| { | |
| if (isES3(1)) | |
| qgles3Helper()->ProgramUniform2uiv(program, location, count, value); | |
| else | |
| RESOLVE_FUNC_VOID(0, ProgramUniform2uiv)(program, location, count, value); | |
| } | |
| | |
| static void QOPENGLF_APIENTRY qopenglfResolveProgramUniform3f(GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2) | |
| { | |
| if (isES3(1)) | |
| qgles3Helper()->ProgramUniform3f(program, location, v0, v1, v2); | |
| else | |
| RESOLVE_FUNC_VOID(0, ProgramUniform3f)(program, location, v0, v1, v2); | |
| } | |
| | |
| static void QOPENGLF_APIENTRY qopenglfResolveProgramUniform3fv(GLuint program, GLint location, GLsizei count, const GLfloat * value) | |
| { | |
| if (isES3(1)) | |
| qgles3Helper()->ProgramUniform3fv(program, location, count, value); | |
| else | |
| RESOLVE_FUNC_VOID(0, ProgramUniform3fv)(program, location, count, value); | |
| } | |
| | |
| static void QOPENGLF_APIENTRY qopenglfResolveProgramUniform3i(GLuint program, GLint location, GLint v0, GLint v1, GLint v2) | |
| { | |
| if (isES3(1)) | |
| qgles3Helper()->ProgramUniform3i(program, location, v0, v1, v2); | |
| else | |
| RESOLVE_FUNC_VOID(0, ProgramUniform3i)(program, location, v0, v1, v2); | |
| } | |
| | |
| static void QOPENGLF_APIENTRY qopenglfResolveProgramUniform3iv(GLuint program, GLint location, GLsizei count, const GLint * value) | |
| { | |
| if (isES3(1)) | |
| qgles3Helper()->ProgramUniform3iv(program, location, count, value); | |
| else | |
| RESOLVE_FUNC_VOID(0, ProgramUniform3iv)(program, location, count, value); | |
| } | |
| | |
| static void QOPENGLF_APIENTRY qopenglfResolveProgramUniform3ui(GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2) | |
| { | |
| if (isES3(1)) | |
| qgles3Helper()->ProgramUniform3ui(program, location, v0, v1, v2); | |
| else | |
| RESOLVE_FUNC_VOID(0, ProgramUniform3ui)(program, location, v0, v1, v2); | |
| } | |
| | |
| static void QOPENGLF_APIENTRY qopenglfResolveProgramUniform3uiv(GLuint program, GLint location, GLsizei count, const GLuint * value) | |
| { | |
| if (isES3(1)) | |
| qgles3Helper()->ProgramUniform3uiv(program, location, count, value); | |
| else | |
| RESOLVE_FUNC_VOID(0, ProgramUniform3uiv)(program, location, count, value); | |
| } | |
| | |
| static void QOPENGLF_APIENTRY qopenglfResolveProgramUniform4f(GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3) | |
| { | |
| if (isES3(1)) | |
| qgles3Helper()->ProgramUniform4f(program, location, v0, v1, v2, v3); | |
| else | |
| RESOLVE_FUNC_VOID(0, ProgramUniform4f)(program, location, v0, v1, v2, v3); | |
| } | |
| | |
| static void QOPENGLF_APIENTRY qopenglfResolveProgramUniform4fv(GLuint program, GLint location, GLsizei count, const GLfloat * value) | |
| { | |
| if (isES3(1)) | |
| qgles3Helper()->ProgramUniform4fv(program, location, count, value); | |
| else | |
| RESOLVE_FUNC_VOID(0, ProgramUniform4fv)(program, location, count, value); | |
| } | |
| | |
| static void QOPENGLF_APIENTRY qopenglfResolveProgramUniform4i(GLuint program, GLint location, GLint v0, GLint v1, GLint v2, GLint v3) | |
| { | |
| if (isES3(1)) | |
| qgles3Helper()->ProgramUniform4i(program, location, v0, v1, v2, v3); | |
| else | |
| RESOLVE_FUNC_VOID(0, ProgramUniform4i)(program, location, v0, v1, v2, v3); | |
| } | |
| | |
| static void QOPENGLF_APIENTRY qopenglfResolveProgramUniform4iv(GLuint program, GLint location, GLsizei count, const GLint * value) | |
| { | |
| if (isES3(1)) | |
| qgles3Helper()->ProgramUniform4iv(program, location, count, value); | |
| else | |
| RESOLVE_FUNC_VOID(0, ProgramUniform4iv)(program, location, count, value); | |
| } | |
| | |
| static void QOPENGLF_APIENTRY qopenglfResolveProgramUniform4ui(GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3) | |
| { | |
| if (isES3(1)) | |
| qgles3Helper()->ProgramUniform4ui(program, location, v0, v1, v2, v3); | |
| else | |
| RESOLVE_FUNC_VOID(0, ProgramUniform4ui)(program, location, v0, v1, v2, v3); | |
| } | |
| | |
| static void QOPENGLF_APIENTRY qopenglfResolveProgramUniform4uiv(GLuint program, GLint location, GLsizei count, const GLuint * value) | |
| { | |
| if (isES3(1)) | |
| qgles3Helper()->ProgramUniform4uiv(program, location, count, value); | |
| else | |
| RESOLVE_FUNC_VOID(0, ProgramUniform4uiv)(program, location, count, value); | |
| } | |
| | |
| static void QOPENGLF_APIENTRY qopenglfResolveProgramUniformMatrix2fv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat * value) | |
| { | |
| if (isES3(1)) | |
| qgles3Helper()->ProgramUniformMatrix2fv(program, location, count, transpose, value); | |
| else | |
| RESOLVE_FUNC_VOID(0, ProgramUniformMatrix2fv)(program, location, count, transpose, value); | |
| } | |
| | |
| static void QOPENGLF_APIENTRY qopenglfResolveProgramUniformMatrix2x3fv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat * value) | |
| { | |
| if (isES3(1)) | |
| qgles3Helper()->ProgramUniformMatrix2x3fv(program, location, count, transpose, value); | |
| else | |
| RESOLVE_FUNC_VOID(0, ProgramUniformMatrix2x3fv)(program, location, count, transpose, value); | |
| } | |
| | |
| static void QOPENGLF_APIENTRY qopenglfResolveProgramUniformMatrix2x4fv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat * value) | |
| { | |
| if (isES3(1)) | |
| qgles3Helper()->ProgramUniformMatrix2x4fv(program, location, count, transpose, value); | |
| else | |
| RESOLVE_FUNC_VOID(0, ProgramUniformMatrix2x4fv)(program, location, count, transpose, value); | |
| } | |
| | |
| static void QOPENGLF_APIENTRY qopenglfResolveProgramUniformMatrix3fv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat * value) | |
| { | |
| if (isES3(1)) | |
| qgles3Helper()->ProgramUniformMatrix3fv(program, location, count, transpose, value); | |
| else | |
| RESOLVE_FUNC_VOID(0, ProgramUniformMatrix3fv)(program, location, count, transpose, value); | |
| } | |
| | |
| static void QOPENGLF_APIENTRY qopenglfResolveProgramUniformMatrix3x2fv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat * value) | |
| { | |
| if (isES3(1)) | |
| qgles3Helper()->ProgramUniformMatrix3x2fv(program, location, count, transpose, value); | |
| else | |
| RESOLVE_FUNC_VOID(0, ProgramUniformMatrix3x2fv)(program, location, count, transpose, value); | |
| } | |
| | |
| static void QOPENGLF_APIENTRY qopenglfResolveProgramUniformMatrix3x4fv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat * value) | |
| { | |
| if (isES3(1)) | |
| qgles3Helper()->ProgramUniformMatrix3x4fv(program, location, count, transpose, value); | |
| else | |
| RESOLVE_FUNC_VOID(0, ProgramUniformMatrix3x4fv)(program, location, count, transpose, value); | |
| } | |
| | |
| static void QOPENGLF_APIENTRY qopenglfResolveProgramUniformMatrix4fv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat * value) | |
| { | |
| if (isES3(1)) | |
| qgles3Helper()->ProgramUniformMatrix4fv(program, location, count, transpose, value); | |
| else | |
| RESOLVE_FUNC_VOID(0, ProgramUniformMatrix4fv)(program, location, count, transpose, value); | |
| } | |
| | |
| static void QOPENGLF_APIENTRY qopenglfResolveProgramUniformMatrix4x2fv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat * value) | |
| { | |
| if (isES3(1)) | |
| qgles3Helper()->ProgramUniformMatrix4x2fv(program, location, count, transpose, value); | |
| else | |
| RESOLVE_FUNC_VOID(0, ProgramUniformMatrix4x2fv)(program, location, count, transpose, value); | |
| } | |
| | |
| static void QOPENGLF_APIENTRY qopenglfResolveProgramUniformMatrix4x3fv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat * value) | |
| { | |
| if (isES3(1)) | |
| qgles3Helper()->ProgramUniformMatrix4x3fv(program, location, count, transpose, value); | |
| else | |
| RESOLVE_FUNC_VOID(0, ProgramUniformMatrix4x3fv)(program, location, count, transpose, value); | |
| } | |
| | |
| static void QOPENGLF_APIENTRY qopenglfResolveSampleMaski(GLuint maskNumber, GLbitfield mask) | |
| { | |
| if (isES3(1)) | |
| qgles3Helper()->SampleMaski(maskNumber, mask); | |
| else | |
| RESOLVE_FUNC_VOID(0, SampleMaski)(maskNumber, mask); | |
| } | |
| | |
| static void QOPENGLF_APIENTRY qopenglfResolveTexStorage2DMultisample(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLboolean fixedsamplelocations) | |
| { | |
| if (isES3(1)) | |
| qgles3Helper()->TexStorage2DMultisample(target, samples, internalformat, width, height, fixedsamplelocations); | |
| else | |
| RESOLVE_FUNC_VOID(0, TexStorage2DMultisample)(target, samples, internalformat, width, height, fixedsamplelocations); | |
| } | |
| | |
| static void QOPENGLF_APIENTRY qopenglfResolveUseProgramStages(GLuint pipeline, GLbitfield stages, GLuint program) | |
| { | |
| if (isES3(1)) | |
| qgles3Helper()->UseProgramStages(pipeline, stages, program); | |
| else | |
| RESOLVE_FUNC_VOID(0, UseProgramStages)(pipeline, stages, program); | |
| } | |
| | |
| static void QOPENGLF_APIENTRY qopenglfResolveValidateProgramPipeline(GLuint pipeline) | |
| { | |
| if (isES3(1)) | |
| qgles3Helper()->ValidateProgramPipeline(pipeline); | |
| else | |
| RESOLVE_FUNC_VOID(0, ValidateProgramPipeline)(pipeline); | |
| } | |
| | |
| static void QOPENGLF_APIENTRY qopenglfResolveVertexAttribBinding(GLuint attribindex, GLuint bindingindex) | |
| { | |
| if (isES3(1)) | |
| qgles3Helper()->VertexAttribBinding(attribindex, bindingindex); | |
| else | |
| RESOLVE_FUNC_VOID(0, VertexAttribBinding)(attribindex, bindingindex); | |
| } | |
| | |
| static void QOPENGLF_APIENTRY qopenglfResolveVertexAttribFormat(GLuint attribindex, GLint size, GLenum type, GLboolean normalized, GLuint relativeoffset) | |
| { | |
| if (isES3(1)) | |
| qgles3Helper()->VertexAttribFormat(attribindex, size, type, normalized, relativeoffset); | |
| else | |
| RESOLVE_FUNC_VOID(0, VertexAttribFormat)(attribindex, size, type, normalized, relativeoffset); | |
| } | |
| | |
| static void QOPENGLF_APIENTRY qopenglfResolveVertexAttribIFormat(GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset) | |
| { | |
| if (isES3(1)) | |
| qgles3Helper()->VertexAttribIFormat(attribindex, size, type, relativeoffset); | |
| else | |
| RESOLVE_FUNC_VOID(0, VertexAttribIFormat)(attribindex, size, type, relativeoffset); | |
| } | |
| | |
| static void QOPENGLF_APIENTRY qopenglfResolveVertexBindingDivisor(GLuint bindingindex, GLuint divisor) | |
| { | |
| if (isES3(1)) | |
| qgles3Helper()->VertexBindingDivisor(bindingindex, divisor); | |
| else | |
| RESOLVE_FUNC_VOID(0, VertexBindingDivisor)(bindingindex, divisor); | |
| } | |
4481 | | - |
4482 | | - |
4483 | | - |
4484 | | - |
4485 | QOpenGLExtraFunctions::QOpenGLExtraFunctions() | - |
4486 | { | - |
4487 | } | - |
4488 | | - |
4489 | | - |
4490 | | - |
4491 | | - |
4492 | | - |
4493 | | - |
4494 | | - |
4495 | | - |
4496 | | - |
4497 | | - |
4498 | | - |
4499 | QOpenGLExtraFunctions::QOpenGLExtraFunctions(QOpenGLContext *context) | - |
4500 | : QOpenGLFunctions(context) | - |
4501 | { | - |
4502 | } | - |
4503 | | - |
4504 | QOpenGLExtraFunctionsPrivate::QOpenGLExtraFunctionsPrivate(QOpenGLContext *ctx) | - |
4505 | : QOpenGLFunctionsPrivate(ctx) | - |
4506 | { | - |
4507 | ReadBuffer = qopenglfResolveReadBuffer; | - |
| DrawRangeElements = qopenglfResolveDrawRangeElements; | |
| TexImage3D = qopenglfResolveTexImage3D; | |
| TexSubImage3D = qopenglfResolveTexSubImage3D; | |
| CopyTexSubImage3D = qopenglfResolveCopyTexSubImage3D; | |
| CompressedTexImage3D = qopenglfResolveCompressedTexImage3D; | |
| CompressedTexSubImage3D = qopenglfResolveCompressedTexSubImage3D; | |
| GenQueries = qopenglfResolveGenQueries; | |
| DeleteQueries = qopenglfResolveDeleteQueries; | |
| IsQuery = qopenglfResolveIsQuery; | |
| BeginQuery = qopenglfResolveBeginQuery; | |
| EndQuery = qopenglfResolveEndQuery; | |
| GetQueryiv = qopenglfResolveGetQueryiv; | |
| GetQueryObjectuiv = qopenglfResolveGetQueryObjectuiv; | |
| UnmapBuffer = qopenglfResolveUnmapBuffer; | |
| GetBufferPointerv = qopenglfResolveGetBufferPointerv; | |
| DrawBuffers = qopenglfResolveDrawBuffers; | |
| UniformMatrix2x3fv = qopenglfResolveUniformMatrix2x3fv; | |
| UniformMatrix3x2fv = qopenglfResolveUniformMatrix3x2fv; | |
| UniformMatrix2x4fv = qopenglfResolveUniformMatrix2x4fv; | |
| UniformMatrix4x2fv = qopenglfResolveUniformMatrix4x2fv; | |
| UniformMatrix3x4fv = qopenglfResolveUniformMatrix3x4fv; | |
| UniformMatrix4x3fv = qopenglfResolveUniformMatrix4x3fv; | |
| BlitFramebuffer = qopenglfResolveBlitFramebuffer; | |
| RenderbufferStorageMultisample = qopenglfResolveRenderbufferStorageMultisample; | |
| FramebufferTextureLayer = qopenglfResolveFramebufferTextureLayer; | |
| MapBufferRange = qopenglfResolveMapBufferRange; | |
| FlushMappedBufferRange = qopenglfResolveFlushMappedBufferRange; | |
| BindVertexArray = qopenglfResolveBindVertexArray; | |
| DeleteVertexArrays = qopenglfResolveDeleteVertexArrays; | |
| GenVertexArrays = qopenglfResolveGenVertexArrays; | |
| IsVertexArray = qopenglfResolveIsVertexArray; | |
| GetIntegeri_v = qopenglfResolveGetIntegeri_v; | |
| BeginTransformFeedback = qopenglfResolveBeginTransformFeedback; | |
| EndTransformFeedback = qopenglfResolveEndTransformFeedback; | |
| BindBufferRange = qopenglfResolveBindBufferRange; | |
| BindBufferBase = qopenglfResolveBindBufferBase; | |
| TransformFeedbackVaryings = qopenglfResolveTransformFeedbackVaryings; | |
| GetTransformFeedbackVarying = qopenglfResolveGetTransformFeedbackVarying; | |
| VertexAttribIPointer = qopenglfResolveVertexAttribIPointer; | |
| GetVertexAttribIiv = qopenglfResolveGetVertexAttribIiv; | |
| GetVertexAttribIuiv = qopenglfResolveGetVertexAttribIuiv; | |
| VertexAttribI4i = qopenglfResolveVertexAttribI4i; | |
| VertexAttribI4ui = qopenglfResolveVertexAttribI4ui; | |
| VertexAttribI4iv = qopenglfResolveVertexAttribI4iv; | |
| VertexAttribI4uiv = qopenglfResolveVertexAttribI4uiv; | |
| GetUniformuiv = qopenglfResolveGetUniformuiv; | |
| GetFragDataLocation = qopenglfResolveGetFragDataLocation; | |
| Uniform1ui = qopenglfResolveUniform1ui; | |
| Uniform2ui = qopenglfResolveUniform2ui; | |
| Uniform3ui = qopenglfResolveUniform3ui; | |
| Uniform4ui = qopenglfResolveUniform4ui; | |
| Uniform1uiv = qopenglfResolveUniform1uiv; | |
| Uniform2uiv = qopenglfResolveUniform2uiv; | |
| Uniform3uiv = qopenglfResolveUniform3uiv; | |
| Uniform4uiv = qopenglfResolveUniform4uiv; | |
| ClearBufferiv = qopenglfResolveClearBufferiv; | |
| ClearBufferuiv = qopenglfResolveClearBufferuiv; | |
| ClearBufferfv = qopenglfResolveClearBufferfv; | |
| ClearBufferfi = qopenglfResolveClearBufferfi; | |
| GetStringi = qopenglfResolveGetStringi; | |
| CopyBufferSubData = qopenglfResolveCopyBufferSubData; | |
| GetUniformIndices = qopenglfResolveGetUniformIndices; | |
| GetActiveUniformsiv = qopenglfResolveGetActiveUniformsiv; | |
| GetUniformBlockIndex = qopenglfResolveGetUniformBlockIndex; | |
| GetActiveUniformBlockiv = qopenglfResolveGetActiveUniformBlockiv; | |
| GetActiveUniformBlockName = qopenglfResolveGetActiveUniformBlockName; | |
| UniformBlockBinding = qopenglfResolveUniformBlockBinding; | |
| DrawArraysInstanced = qopenglfResolveDrawArraysInstanced; | |
| DrawElementsInstanced = qopenglfResolveDrawElementsInstanced; | |
| FenceSync = qopenglfResolveFenceSync; | |
| IsSync = qopenglfResolveIsSync; | |
| DeleteSync = qopenglfResolveDeleteSync; | |
| ClientWaitSync = qopenglfResolveClientWaitSync; | |
| WaitSync = qopenglfResolveWaitSync; | |
| GetInteger64v = qopenglfResolveGetInteger64v; | |
| GetSynciv = qopenglfResolveGetSynciv; | |
| GetInteger64i_v = qopenglfResolveGetInteger64i_v; | |
| GetBufferParameteri64v = qopenglfResolveGetBufferParameteri64v; | |
| GenSamplers = qopenglfResolveGenSamplers; | |
| DeleteSamplers = qopenglfResolveDeleteSamplers; | |
| IsSampler = qopenglfResolveIsSampler; | |
| BindSampler = qopenglfResolveBindSampler; | |
| SamplerParameteri = qopenglfResolveSamplerParameteri; | |
| SamplerParameteriv = qopenglfResolveSamplerParameteriv; | |
| SamplerParameterf = qopenglfResolveSamplerParameterf; | |
| SamplerParameterfv = qopenglfResolveSamplerParameterfv; | |
| GetSamplerParameteriv = qopenglfResolveGetSamplerParameteriv; | |
| GetSamplerParameterfv = qopenglfResolveGetSamplerParameterfv; | |
| VertexAttribDivisor = qopenglfResolveVertexAttribDivisor; | |
| BindTransformFeedback = qopenglfResolveBindTransformFeedback; | |
| DeleteTransformFeedbacks = qopenglfResolveDeleteTransformFeedbacks; | |
| GenTransformFeedbacks = qopenglfResolveGenTransformFeedbacks; | |
| IsTransformFeedback = qopenglfResolveIsTransformFeedback; | |
| PauseTransformFeedback = qopenglfResolvePauseTransformFeedback; | |
| ResumeTransformFeedback = qopenglfResolveResumeTransformFeedback; | |
| GetProgramBinary = qopenglfResolveGetProgramBinary; | |
| ProgramBinary = qopenglfResolveProgramBinary; | |
| ProgramParameteri = qopenglfResolveProgramParameteri; | |
| InvalidateFramebuffer = qopenglfResolveInvalidateFramebuffer; | |
| InvalidateSubFramebuffer = qopenglfResolveInvalidateSubFramebuffer; | |
| TexStorage2D = qopenglfResolveTexStorage2D; | |
| TexStorage3D = qopenglfResolveTexStorage3D; | |
| GetInternalformativ = qopenglfResolveGetInternalformativ; | |
| | |
| DispatchCompute = qopenglfResolveDispatchCompute; | |
| DispatchComputeIndirect = qopenglfResolveDispatchComputeIndirect; | |
| DrawArraysIndirect = qopenglfResolveDrawArraysIndirect; | |
| DrawElementsIndirect = qopenglfResolveDrawElementsIndirect; | |
| FramebufferParameteri = qopenglfResolveFramebufferParameteri; | |
| GetFramebufferParameteriv = qopenglfResolveGetFramebufferParameteriv; | |
| GetProgramInterfaceiv = qopenglfResolveGetProgramInterfaceiv; | |
| GetProgramResourceIndex = qopenglfResolveGetProgramResourceIndex; | |
| GetProgramResourceName = qopenglfResolveGetProgramResourceName; | |
| GetProgramResourceiv = qopenglfResolveGetProgramResourceiv; | |
| GetProgramResourceLocation = qopenglfResolveGetProgramResourceLocation; | |
| UseProgramStages = qopenglfResolveUseProgramStages; | |
| ActiveShaderProgram = qopenglfResolveActiveShaderProgram; | |
| CreateShaderProgramv = qopenglfResolveCreateShaderProgramv; | |
| BindProgramPipeline = qopenglfResolveBindProgramPipeline; | |
| DeleteProgramPipelines = qopenglfResolveDeleteProgramPipelines; | |
| GenProgramPipelines = qopenglfResolveGenProgramPipelines; | |
| IsProgramPipeline = qopenglfResolveIsProgramPipeline; | |
| GetProgramPipelineiv = qopenglfResolveGetProgramPipelineiv; | |
| ProgramUniform1i = qopenglfResolveProgramUniform1i; | |
| ProgramUniform2i = qopenglfResolveProgramUniform2i; | |
| ProgramUniform3i = qopenglfResolveProgramUniform3i; | |
| ProgramUniform4i = qopenglfResolveProgramUniform4i; | |
| ProgramUniform1ui = qopenglfResolveProgramUniform1ui; | |
| ProgramUniform2ui = qopenglfResolveProgramUniform2ui; | |
| ProgramUniform3ui = qopenglfResolveProgramUniform3ui; | |
| ProgramUniform4ui = qopenglfResolveProgramUniform4ui; | |
| ProgramUniform1f = qopenglfResolveProgramUniform1f; | |
| ProgramUniform2f = qopenglfResolveProgramUniform2f; | |
| ProgramUniform3f = qopenglfResolveProgramUniform3f; | |
| ProgramUniform4f = qopenglfResolveProgramUniform4f; | |
| ProgramUniform1iv = qopenglfResolveProgramUniform1iv; | |
| ProgramUniform2iv = qopenglfResolveProgramUniform2iv; | |
| ProgramUniform3iv = qopenglfResolveProgramUniform3iv; | |
| ProgramUniform4iv = qopenglfResolveProgramUniform4iv; | |
| ProgramUniform1uiv = qopenglfResolveProgramUniform1uiv; | |
| ProgramUniform2uiv = qopenglfResolveProgramUniform2uiv; | |
| ProgramUniform3uiv = qopenglfResolveProgramUniform3uiv; | |
| ProgramUniform4uiv = qopenglfResolveProgramUniform4uiv; | |
| ProgramUniform1fv = qopenglfResolveProgramUniform1fv; | |
| ProgramUniform2fv = qopenglfResolveProgramUniform2fv; | |
| ProgramUniform3fv = qopenglfResolveProgramUniform3fv; | |
| ProgramUniform4fv = qopenglfResolveProgramUniform4fv; | |
| ProgramUniformMatrix2fv = qopenglfResolveProgramUniformMatrix2fv; | |
| ProgramUniformMatrix3fv = qopenglfResolveProgramUniformMatrix3fv; | |
| ProgramUniformMatrix4fv = qopenglfResolveProgramUniformMatrix4fv; | |
| ProgramUniformMatrix2x3fv = qopenglfResolveProgramUniformMatrix2x3fv; | |
| ProgramUniformMatrix3x2fv = qopenglfResolveProgramUniformMatrix3x2fv; | |
| ProgramUniformMatrix2x4fv = qopenglfResolveProgramUniformMatrix2x4fv; | |
| ProgramUniformMatrix4x2fv = qopenglfResolveProgramUniformMatrix4x2fv; | |
| ProgramUniformMatrix3x4fv = qopenglfResolveProgramUniformMatrix3x4fv; | |
| ProgramUniformMatrix4x3fv = qopenglfResolveProgramUniformMatrix4x3fv; | |
| ValidateProgramPipeline = qopenglfResolveValidateProgramPipeline; | |
| GetProgramPipelineInfoLog = qopenglfResolveGetProgramPipelineInfoLog; | |
| BindImageTexture = qopenglfResolveBindImageTexture; | |
| GetBooleani_v = qopenglfResolveGetBooleani_v; | |
| MemoryBarrierFunc = qopenglfResolveMemoryBarrier; | |
| MemoryBarrierByRegion = qopenglfResolveMemoryBarrierByRegion; | |
| TexStorage2DMultisample = qopenglfResolveTexStorage2DMultisample; | |
| GetMultisamplefv = qopenglfResolveGetMultisamplefv; | |
| SampleMaski = qopenglfResolveSampleMaski; | |
| GetTexLevelParameteriv = qopenglfResolveGetTexLevelParameteriv; | |
| GetTexLevelParameterfv = qopenglfResolveGetTexLevelParameterfv; | |
| BindVertexBuffer = qopenglfResolveBindVertexBuffer; | |
| VertexAttribFormat = qopenglfResolveVertexAttribFormat; | |
| VertexAttribIFormat = qopenglfResolveVertexAttribIFormat; | |
| VertexAttribBinding = qopenglfResolveVertexAttribBinding; | |
| VertexBindingDivisor = qopenglfResolveVertexBindingDivisor;init(ctx); | |
4508 | } never executed: end of block | 0 |
4509 | | - |
4510 | QT_OPENGL_IMPLEMENT(QOpenGLExtraFunctionsPrivate, QT_OPENGL_EXTRA_FUNCTIONS) never executed: end of block never executed: end of block TRUE | never evaluated | FALSE | never evaluated |
| 0 |
4511 | | - |
4512 | QOpenGLExtensionsPrivate::QOpenGLExtensionsPrivate(QOpenGLContext *ctx) | - |
4513 | : QOpenGLExtraFunctionsPrivate(ctx), | - |
4514 | flushVendorChecked(false) | - |
4515 | { | - |
4516 | QOpenGLContext *context = QOpenGLContext::currentContext(); | - |
4517 | | - |
4518 | MapBuffer = qopenglfResolveMapBuffer;RESOLVE(MapBuffer); | - |
4519 | GetBufferSubData = qopenglfResolveGetBufferSubData;RESOLVE(GetBufferSubData); | - |
4520 | DiscardFramebuffer = qopenglfResolveDiscardFramebuffer; | - |
| } | |
| | |
| QOpenGLES3Helper *QOpenGLExtensions::gles3Helper() | |
| { | |
| return qgles3Helper();RESOLVE(DiscardFramebuffer); | |
4521 | } never executed: end of block | 0 |
4522 | | - |
4523 | void QOpenGLExtensions::flushShared() | - |
4524 | { | - |
4525 | Q_D(QOpenGLExtensions); | - |
4526 | | - |
4527 | if (!d->flushVendorChecked) { | - |
4528 | d->flushVendorChecked = true; | - |
4529 | | - |
4530 | | - |
4531 | | - |
4532 | | - |
4533 | d->flushIsSufficientToSyncContexts = false; | - |
4534 | const char *vendor = (const char *) glGetString(GL_VENDOR); | - |
4535 | if (vendor) { | - |
4536 | static const char *const flushEnough[] = { "Apple", "ATI", "Intel", "NVIDIA" }; | - |
4537 | for (size_t i = 0; i < sizeof(flushEnough) / sizeof(const char *); ++i) { | - |
4538 | if (strstr(vendor, flushEnough[i])) { | - |
4539 | d->flushIsSufficientToSyncContexts = true; | - |
4540 | break; | - |
4541 | } | - |
4542 | } | - |
4543 | } | - |
4544 | } | - |
4545 | | - |
4546 | if (d->flushIsSufficientToSyncContexts) | - |
4547 | glFlush(); | - |
4548 | else | - |
4549 | glFinish(); | - |
4550 | } | - |
4551 | | - |
4552 | QT_END_NAMESPACE | - |
| | |