PageRenderTime 53ms CodeModel.GetById 17ms RepoModel.GetById 0ms app.codeStats 0ms

/external/mac/Qt/lib/QtGui.framework/Versions/5/Headers/qopenglextrafunctions.h

https://gitlab.com/alvinahmadov2/icq-desktop
C Header | 849 lines | 763 code | 49 blank | 37 comment | 1 complexity | c220ad514f684e6e7179579c069c851e MD5 | raw file
  1. /****************************************************************************
  2. **
  3. ** Copyright (C) 2015 The Qt Company Ltd.
  4. ** Contact: http://www.qt.io/licensing/
  5. **
  6. ** This file is part of the QtGui module of the Qt Toolkit.
  7. **
  8. ** $QT_BEGIN_LICENSE:LGPL21$
  9. ** Commercial License Usage
  10. ** Licensees holding valid commercial Qt licenses may use this file in
  11. ** accordance with the commercial license agreement provided with the
  12. ** Software or, alternatively, in accordance with the terms contained in
  13. ** a written agreement between you and The Qt Company. For licensing terms
  14. ** and conditions see http://www.qt.io/terms-conditions. For further
  15. ** information use the contact form at http://www.qt.io/contact-us.
  16. **
  17. ** GNU Lesser General Public License Usage
  18. ** Alternatively, this file may be used under the terms of the GNU Lesser
  19. ** General Public License version 2.1 or version 3 as published by the Free
  20. ** Software Foundation and appearing in the file LICENSE.LGPLv21 and
  21. ** LICENSE.LGPLv3 included in the packaging of this file. Please review the
  22. ** following information to ensure the GNU Lesser General Public License
  23. ** requirements will be met: https://www.gnu.org/licenses/lgpl.html and
  24. ** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
  25. **
  26. ** As a special exception, The Qt Company gives you certain additional
  27. ** rights. These rights are described in The Qt Company LGPL Exception
  28. ** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
  29. **
  30. ** $QT_END_LICENSE$
  31. **
  32. ****************************************************************************/
  33. #ifndef QOPENGLEXTRAFUNCTIONS_H
  34. #define QOPENGLEXTRAFUNCTIONS_H
  35. #include <QtCore/qglobal.h>
  36. #ifndef QT_NO_OPENGL
  37. #include <QtGui/qopenglfunctions.h>
  38. QT_BEGIN_NAMESPACE
  39. class QOpenGLExtraFunctionsPrivate;
  40. #undef glReadBuffer
  41. #undef glDrawRangeElements
  42. #undef glTexImage3D
  43. #undef glTexSubImage3D
  44. #undef glCopyTexSubImage3D
  45. #undef glCompressedTexImage3D
  46. #undef glCompressedTexSubImage3D
  47. #undef glGenQueries
  48. #undef glDeleteQueries
  49. #undef glIsQuery
  50. #undef glBeginQuery
  51. #undef glEndQuery
  52. #undef glGetQueryiv
  53. #undef glGetQueryObjectuiv
  54. #undef glUnmapBuffer
  55. #undef glGetBufferPointerv
  56. #undef glDrawBuffers
  57. #undef glUniformMatrix2x3fv
  58. #undef glUniformMatrix3x2fv
  59. #undef glUniformMatrix2x4fv
  60. #undef glUniformMatrix4x2fv
  61. #undef glUniformMatrix3x4fv
  62. #undef glUniformMatrix4x3fv
  63. #undef glBlitFramebuffer
  64. #undef glRenderbufferStorageMultisample
  65. #undef glFramebufferTextureLayer
  66. #undef glMapBufferRange
  67. #undef glFlushMappedBufferRange
  68. #undef glBindVertexArray
  69. #undef glDeleteVertexArrays
  70. #undef glGenVertexArrays
  71. #undef glIsVertexArray
  72. #undef glGetIntegeri_v
  73. #undef glBeginTransformFeedback
  74. #undef glEndTransformFeedback
  75. #undef glBindBufferRange
  76. #undef glBindBufferBase
  77. #undef glTransformFeedbackVaryings
  78. #undef glGetTransformFeedbackVarying
  79. #undef glVertexAttribIPointer
  80. #undef glGetVertexAttribIiv
  81. #undef glGetVertexAttribIuiv
  82. #undef glVertexAttribI4i
  83. #undef glVertexAttribI4ui
  84. #undef glVertexAttribI4iv
  85. #undef glVertexAttribI4uiv
  86. #undef glGetUniformuiv
  87. #undef glGetFragDataLocation
  88. #undef glUniform1ui
  89. #undef glUniform2ui
  90. #undef glUniform3ui
  91. #undef glUniform4ui
  92. #undef glUniform1uiv
  93. #undef glUniform2uiv
  94. #undef glUniform3uiv
  95. #undef glUniform4uiv
  96. #undef glClearBufferiv
  97. #undef glClearBufferuiv
  98. #undef glClearBufferfv
  99. #undef glClearBufferfi
  100. #undef glGetStringi
  101. #undef glCopyBufferSubData
  102. #undef glGetUniformIndices
  103. #undef glGetActiveUniformsiv
  104. #undef glGetUniformBlockIndex
  105. #undef glGetActiveUniformBlockiv
  106. #undef glGetActiveUniformBlockName
  107. #undef glUniformBlockBinding
  108. #undef glDrawArraysInstanced
  109. #undef glDrawElementsInstanced
  110. #undef glFenceSync
  111. #undef glIsSync
  112. #undef glDeleteSync
  113. #undef glClientWaitSync
  114. #undef glWaitSync
  115. #undef glGetInteger64v
  116. #undef glGetSynciv
  117. #undef glGetInteger64i_v
  118. #undef glGetBufferParameteri64v
  119. #undef glGenSamplers
  120. #undef glDeleteSamplers
  121. #undef glIsSampler
  122. #undef glBindSampler
  123. #undef glSamplerParameteri
  124. #undef glSamplerParameteriv
  125. #undef glSamplerParameterf
  126. #undef glSamplerParameterfv
  127. #undef glGetSamplerParameteriv
  128. #undef glGetSamplerParameterfv
  129. #undef glVertexAttribDivisor
  130. #undef glBindTransformFeedback
  131. #undef glDeleteTransformFeedbacks
  132. #undef glGenTransformFeedbacks
  133. #undef glIsTransformFeedback
  134. #undef glPauseTransformFeedback
  135. #undef glResumeTransformFeedback
  136. #undef glGetProgramBinary
  137. #undef glProgramBinary
  138. #undef glProgramParameteri
  139. #undef glInvalidateFramebuffer
  140. #undef glInvalidateSubFramebuffer
  141. #undef glTexStorage2D
  142. #undef glTexStorage3D
  143. #undef glGetInternalformativ
  144. #undef glDispatchCompute
  145. #undef glDispatchComputeIndirect
  146. #undef glDrawArraysIndirect
  147. #undef glDrawElementsIndirect
  148. #undef glFramebufferParameteri
  149. #undef glGetFramebufferParameteriv
  150. #undef glGetProgramInterfaceiv
  151. #undef glGetProgramResourceIndex
  152. #undef glGetProgramResourceName
  153. #undef glGetProgramResourceiv
  154. #undef glGetProgramResourceLocation
  155. #undef glUseProgramStages
  156. #undef glActiveShaderProgram
  157. #undef glCreateShaderProgramv
  158. #undef glBindProgramPipeline
  159. #undef glDeleteProgramPipelines
  160. #undef glGenProgramPipelines
  161. #undef glIsProgramPipeline
  162. #undef glGetProgramPipelineiv
  163. #undef glProgramUniform1i
  164. #undef glProgramUniform2i
  165. #undef glProgramUniform3i
  166. #undef glProgramUniform4i
  167. #undef glProgramUniform1ui
  168. #undef glProgramUniform2ui
  169. #undef glProgramUniform3ui
  170. #undef glProgramUniform4ui
  171. #undef glProgramUniform1f
  172. #undef glProgramUniform2f
  173. #undef glProgramUniform3f
  174. #undef glProgramUniform4f
  175. #undef glProgramUniform1iv
  176. #undef glProgramUniform2iv
  177. #undef glProgramUniform3iv
  178. #undef glProgramUniform4iv
  179. #undef glProgramUniform1uiv
  180. #undef glProgramUniform2uiv
  181. #undef glProgramUniform3uiv
  182. #undef glProgramUniform4uiv
  183. #undef glProgramUniform1fv
  184. #undef glProgramUniform2fv
  185. #undef glProgramUniform3fv
  186. #undef glProgramUniform4fv
  187. #undef glProgramUniformMatrix2fv
  188. #undef glProgramUniformMatrix3fv
  189. #undef glProgramUniformMatrix4fv
  190. #undef glProgramUniformMatrix2x3fv
  191. #undef glProgramUniformMatrix3x2fv
  192. #undef glProgramUniformMatrix2x4fv
  193. #undef glProgramUniformMatrix4x2fv
  194. #undef glProgramUniformMatrix3x4fv
  195. #undef glProgramUniformMatrix4x3fv
  196. #undef glValidateProgramPipeline
  197. #undef glGetProgramPipelineInfoLog
  198. #undef glBindImageTexture
  199. #undef glGetBooleani_v
  200. #undef glMemoryBarrier
  201. #undef glMemoryBarrierByRegion
  202. #undef glTexStorage2DMultisample
  203. #undef glGetMultisamplefv
  204. #undef glSampleMaski
  205. #undef glGetTexLevelParameteriv
  206. #undef glGetTexLevelParameterfv
  207. #undef glBindVertexBuffer
  208. #undef glVertexAttribFormat
  209. #undef glVertexAttribIFormat
  210. #undef glVertexAttribBinding
  211. #undef glVertexBindingDivisor
  212. class Q_GUI_EXPORT QOpenGLExtraFunctions : public QOpenGLFunctions
  213. {
  214. Q_DECLARE_PRIVATE(QOpenGLExtraFunctions)
  215. public:
  216. QOpenGLExtraFunctions();
  217. QOpenGLExtraFunctions(QOpenGLContext *context);
  218. ~QOpenGLExtraFunctions() {}
  219. // GLES3
  220. void glReadBuffer(GLenum mode);
  221. void glDrawRangeElements(GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const void *indices);
  222. void glTexImage3D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const void *pixels);
  223. void glTexSubImage3D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *pixels);
  224. void glCopyTexSubImage3D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height);
  225. void glCompressedTexImage3D(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const void *data);
  226. void glCompressedTexSubImage3D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const void *data);
  227. void glGenQueries(GLsizei n, GLuint *ids);
  228. void glDeleteQueries(GLsizei n, const GLuint *ids);
  229. GLboolean glIsQuery(GLuint id);
  230. void glBeginQuery(GLenum target, GLuint id);
  231. void glEndQuery(GLenum target);
  232. void glGetQueryiv(GLenum target, GLenum pname, GLint *params);
  233. void glGetQueryObjectuiv(GLuint id, GLenum pname, GLuint *params);
  234. GLboolean glUnmapBuffer(GLenum target);
  235. void glGetBufferPointerv(GLenum target, GLenum pname, void **params);
  236. void glDrawBuffers(GLsizei n, const GLenum *bufs);
  237. void glUniformMatrix2x3fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
  238. void glUniformMatrix3x2fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
  239. void glUniformMatrix2x4fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
  240. void glUniformMatrix4x2fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
  241. void glUniformMatrix3x4fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
  242. void glUniformMatrix4x3fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
  243. void glBlitFramebuffer(GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter);
  244. void glRenderbufferStorageMultisample(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height);
  245. void glFramebufferTextureLayer(GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer);
  246. void *glMapBufferRange(GLenum target, GLintptr offset, GLsizeiptr length, GLbitfield access);
  247. void glFlushMappedBufferRange(GLenum target, GLintptr offset, GLsizeiptr length);
  248. void glBindVertexArray(GLuint array);
  249. void glDeleteVertexArrays(GLsizei n, const GLuint *arrays);
  250. void glGenVertexArrays(GLsizei n, GLuint *arrays);
  251. GLboolean glIsVertexArray(GLuint array);
  252. void glGetIntegeri_v(GLenum target, GLuint index, GLint *data);
  253. void glBeginTransformFeedback(GLenum primitiveMode);
  254. void glEndTransformFeedback(void);
  255. void glBindBufferRange(GLenum target, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size);
  256. void glBindBufferBase(GLenum target, GLuint index, GLuint buffer);
  257. void glTransformFeedbackVaryings(GLuint program, GLsizei count, const GLchar *const*varyings, GLenum bufferMode);
  258. void glGetTransformFeedbackVarying(GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLsizei *size, GLenum *type, GLchar *name);
  259. void glVertexAttribIPointer(GLuint index, GLint size, GLenum type, GLsizei stride, const void *pointer);
  260. void glGetVertexAttribIiv(GLuint index, GLenum pname, GLint *params);
  261. void glGetVertexAttribIuiv(GLuint index, GLenum pname, GLuint *params);
  262. void glVertexAttribI4i(GLuint index, GLint x, GLint y, GLint z, GLint w);
  263. void glVertexAttribI4ui(GLuint index, GLuint x, GLuint y, GLuint z, GLuint w);
  264. void glVertexAttribI4iv(GLuint index, const GLint *v);
  265. void glVertexAttribI4uiv(GLuint index, const GLuint *v);
  266. void glGetUniformuiv(GLuint program, GLint location, GLuint *params);
  267. GLint glGetFragDataLocation(GLuint program, const GLchar *name);
  268. void glUniform1ui(GLint location, GLuint v0);
  269. void glUniform2ui(GLint location, GLuint v0, GLuint v1);
  270. void glUniform3ui(GLint location, GLuint v0, GLuint v1, GLuint v2);
  271. void glUniform4ui(GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3);
  272. void glUniform1uiv(GLint location, GLsizei count, const GLuint *value);
  273. void glUniform2uiv(GLint location, GLsizei count, const GLuint *value);
  274. void glUniform3uiv(GLint location, GLsizei count, const GLuint *value);
  275. void glUniform4uiv(GLint location, GLsizei count, const GLuint *value);
  276. void glClearBufferiv(GLenum buffer, GLint drawbuffer, const GLint *value);
  277. void glClearBufferuiv(GLenum buffer, GLint drawbuffer, const GLuint *value);
  278. void glClearBufferfv(GLenum buffer, GLint drawbuffer, const GLfloat *value);
  279. void glClearBufferfi(GLenum buffer, GLint drawbuffer, GLfloat depth, GLint stencil);
  280. const GLubyte *glGetStringi(GLenum name, GLuint index);
  281. void glCopyBufferSubData(GLenum readTarget, GLenum writeTarget, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size);
  282. void glGetUniformIndices(GLuint program, GLsizei uniformCount, const GLchar *const*uniformNames, GLuint *uniformIndices);
  283. void glGetActiveUniformsiv(GLuint program, GLsizei uniformCount, const GLuint *uniformIndices, GLenum pname, GLint *params);
  284. GLuint glGetUniformBlockIndex(GLuint program, const GLchar *uniformBlockName);
  285. void glGetActiveUniformBlockiv(GLuint program, GLuint uniformBlockIndex, GLenum pname, GLint *params);
  286. void glGetActiveUniformBlockName(GLuint program, GLuint uniformBlockIndex, GLsizei bufSize, GLsizei *length, GLchar *uniformBlockName);
  287. void glUniformBlockBinding(GLuint program, GLuint uniformBlockIndex, GLuint uniformBlockBinding);
  288. void glDrawArraysInstanced(GLenum mode, GLint first, GLsizei count, GLsizei instancecount);
  289. void glDrawElementsInstanced(GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount);
  290. GLsync glFenceSync(GLenum condition, GLbitfield flags);
  291. GLboolean glIsSync(GLsync sync);
  292. void glDeleteSync(GLsync sync);
  293. GLenum glClientWaitSync(GLsync sync, GLbitfield flags, GLuint64 timeout);
  294. void glWaitSync(GLsync sync, GLbitfield flags, GLuint64 timeout);
  295. void glGetInteger64v(GLenum pname, GLint64 *data);
  296. void glGetSynciv(GLsync sync, GLenum pname, GLsizei bufSize, GLsizei *length, GLint *values);
  297. void glGetInteger64i_v(GLenum target, GLuint index, GLint64 *data);
  298. void glGetBufferParameteri64v(GLenum target, GLenum pname, GLint64 *params);
  299. void glGenSamplers(GLsizei count, GLuint *samplers);
  300. void glDeleteSamplers(GLsizei count, const GLuint *samplers);
  301. GLboolean glIsSampler(GLuint sampler);
  302. void glBindSampler(GLuint unit, GLuint sampler);
  303. void glSamplerParameteri(GLuint sampler, GLenum pname, GLint param);
  304. void glSamplerParameteriv(GLuint sampler, GLenum pname, const GLint *param);
  305. void glSamplerParameterf(GLuint sampler, GLenum pname, GLfloat param);
  306. void glSamplerParameterfv(GLuint sampler, GLenum pname, const GLfloat *param);
  307. void glGetSamplerParameteriv(GLuint sampler, GLenum pname, GLint *params);
  308. void glGetSamplerParameterfv(GLuint sampler, GLenum pname, GLfloat *params);
  309. void glVertexAttribDivisor(GLuint index, GLuint divisor);
  310. void glBindTransformFeedback(GLenum target, GLuint id);
  311. void glDeleteTransformFeedbacks(GLsizei n, const GLuint *ids);
  312. void glGenTransformFeedbacks(GLsizei n, GLuint *ids);
  313. GLboolean glIsTransformFeedback(GLuint id);
  314. void glPauseTransformFeedback(void);
  315. void glResumeTransformFeedback(void);
  316. void glGetProgramBinary(GLuint program, GLsizei bufSize, GLsizei *length, GLenum *binaryFormat, void *binary);
  317. void glProgramBinary(GLuint program, GLenum binaryFormat, const void *binary, GLsizei length);
  318. void glProgramParameteri(GLuint program, GLenum pname, GLint value);
  319. void glInvalidateFramebuffer(GLenum target, GLsizei numAttachments, const GLenum *attachments);
  320. void glInvalidateSubFramebuffer(GLenum target, GLsizei numAttachments, const GLenum *attachments, GLint x, GLint y, GLsizei width, GLsizei height);
  321. void glTexStorage2D(GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height);
  322. void glTexStorage3D(GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth);
  323. void glGetInternalformativ(GLenum target, GLenum internalformat, GLenum pname, GLsizei bufSize, GLint *params);
  324. // GLES 3.1
  325. void glDispatchCompute(GLuint num_groups_x, GLuint num_groups_y, GLuint num_groups_z);
  326. void glDispatchComputeIndirect(GLintptr indirect);
  327. void glDrawArraysIndirect(GLenum mode, const void *indirect);
  328. void glDrawElementsIndirect(GLenum mode, GLenum type, const void *indirect);
  329. void glFramebufferParameteri(GLenum target, GLenum pname, GLint param);
  330. void glGetFramebufferParameteriv(GLenum target, GLenum pname, GLint *params);
  331. void glGetProgramInterfaceiv(GLuint program, GLenum programInterface, GLenum pname, GLint *params);
  332. GLuint glGetProgramResourceIndex(GLuint program, GLenum programInterface, const GLchar *name);
  333. void glGetProgramResourceName(GLuint program, GLenum programInterface, GLuint index, GLsizei bufSize, GLsizei *length, GLchar *name);
  334. void glGetProgramResourceiv(GLuint program, GLenum programInterface, GLuint index, GLsizei propCount, const GLenum *props, GLsizei bufSize, GLsizei *length, GLint *params);
  335. GLint glGetProgramResourceLocation(GLuint program, GLenum programInterface, const GLchar *name);
  336. void glUseProgramStages(GLuint pipeline, GLbitfield stages, GLuint program);
  337. void glActiveShaderProgram(GLuint pipeline, GLuint program);
  338. GLuint glCreateShaderProgramv(GLenum type, GLsizei count, const GLchar *const*strings);
  339. void glBindProgramPipeline(GLuint pipeline);
  340. void glDeleteProgramPipelines(GLsizei n, const GLuint *pipelines);
  341. void glGenProgramPipelines(GLsizei n, GLuint *pipelines);
  342. GLboolean glIsProgramPipeline(GLuint pipeline);
  343. void glGetProgramPipelineiv(GLuint pipeline, GLenum pname, GLint *params);
  344. void glProgramUniform1i(GLuint program, GLint location, GLint v0);
  345. void glProgramUniform2i(GLuint program, GLint location, GLint v0, GLint v1);
  346. void glProgramUniform3i(GLuint program, GLint location, GLint v0, GLint v1, GLint v2);
  347. void glProgramUniform4i(GLuint program, GLint location, GLint v0, GLint v1, GLint v2, GLint v3);
  348. void glProgramUniform1ui(GLuint program, GLint location, GLuint v0);
  349. void glProgramUniform2ui(GLuint program, GLint location, GLuint v0, GLuint v1);
  350. void glProgramUniform3ui(GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2);
  351. void glProgramUniform4ui(GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3);
  352. void glProgramUniform1f(GLuint program, GLint location, GLfloat v0);
  353. void glProgramUniform2f(GLuint program, GLint location, GLfloat v0, GLfloat v1);
  354. void glProgramUniform3f(GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2);
  355. void glProgramUniform4f(GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3);
  356. void glProgramUniform1iv(GLuint program, GLint location, GLsizei count, const GLint *value);
  357. void glProgramUniform2iv(GLuint program, GLint location, GLsizei count, const GLint *value);
  358. void glProgramUniform3iv(GLuint program, GLint location, GLsizei count, const GLint *value);
  359. void glProgramUniform4iv(GLuint program, GLint location, GLsizei count, const GLint *value);
  360. void glProgramUniform1uiv(GLuint program, GLint location, GLsizei count, const GLuint *value);
  361. void glProgramUniform2uiv(GLuint program, GLint location, GLsizei count, const GLuint *value);
  362. void glProgramUniform3uiv(GLuint program, GLint location, GLsizei count, const GLuint *value);
  363. void glProgramUniform4uiv(GLuint program, GLint location, GLsizei count, const GLuint *value);
  364. void glProgramUniform1fv(GLuint program, GLint location, GLsizei count, const GLfloat *value);
  365. void glProgramUniform2fv(GLuint program, GLint location, GLsizei count, const GLfloat *value);
  366. void glProgramUniform3fv(GLuint program, GLint location, GLsizei count, const GLfloat *value);
  367. void glProgramUniform4fv(GLuint program, GLint location, GLsizei count, const GLfloat *value);
  368. void glProgramUniformMatrix2fv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
  369. void glProgramUniformMatrix3fv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
  370. void glProgramUniformMatrix4fv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
  371. void glProgramUniformMatrix2x3fv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
  372. void glProgramUniformMatrix3x2fv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
  373. void glProgramUniformMatrix2x4fv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
  374. void glProgramUniformMatrix4x2fv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
  375. void glProgramUniformMatrix3x4fv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
  376. void glProgramUniformMatrix4x3fv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
  377. void glValidateProgramPipeline(GLuint pipeline);
  378. void glGetProgramPipelineInfoLog(GLuint pipeline, GLsizei bufSize, GLsizei *length, GLchar *infoLog);
  379. void glBindImageTexture(GLuint unit, GLuint texture, GLint level, GLboolean layered, GLint layer, GLenum access, GLenum format);
  380. void glGetBooleani_v(GLenum target, GLuint index, GLboolean *data);
  381. void glMemoryBarrier(GLbitfield barriers);
  382. void glMemoryBarrierByRegion(GLbitfield barriers);
  383. void glTexStorage2DMultisample(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLboolean fixedsamplelocations);
  384. void glGetMultisamplefv(GLenum pname, GLuint index, GLfloat *val);
  385. void glSampleMaski(GLuint maskNumber, GLbitfield mask);
  386. void glGetTexLevelParameteriv(GLenum target, GLint level, GLenum pname, GLint *params);
  387. void glGetTexLevelParameterfv(GLenum target, GLint level, GLenum pname, GLfloat *params);
  388. void glBindVertexBuffer(GLuint bindingindex, GLuint buffer, GLintptr offset, GLsizei stride);
  389. void glVertexAttribFormat(GLuint attribindex, GLint size, GLenum type, GLboolean normalized, GLuint relativeoffset);
  390. void glVertexAttribIFormat(GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset);
  391. void glVertexAttribBinding(GLuint attribindex, GLuint bindingindex);
  392. void glVertexBindingDivisor(GLuint bindingindex, GLuint divisor);
  393. private:
  394. static bool isInitialized(const QOpenGLExtraFunctionsPrivate *d) { return d != 0; }
  395. };
  396. class QOpenGLExtraFunctionsPrivate : public QOpenGLFunctionsPrivate
  397. {
  398. public:
  399. QOpenGLExtraFunctionsPrivate(QOpenGLContext *ctx);
  400. // GLES3
  401. void (QOPENGLF_APIENTRYP ReadBuffer)(GLenum mode);
  402. void (QOPENGLF_APIENTRYP DrawRangeElements)(GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const void *indices);
  403. void (QOPENGLF_APIENTRYP TexImage3D)(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const void *pixels);
  404. void (QOPENGLF_APIENTRYP TexSubImage3D)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *pixels);
  405. void (QOPENGLF_APIENTRYP CopyTexSubImage3D)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height);
  406. void (QOPENGLF_APIENTRYP CompressedTexImage3D)(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const void *data);
  407. void (QOPENGLF_APIENTRYP CompressedTexSubImage3D)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const void *data);
  408. void (QOPENGLF_APIENTRYP GenQueries)(GLsizei n, GLuint *ids);
  409. void (QOPENGLF_APIENTRYP DeleteQueries)(GLsizei n, const GLuint *ids);
  410. GLboolean (QOPENGLF_APIENTRYP IsQuery)(GLuint id);
  411. void (QOPENGLF_APIENTRYP BeginQuery)(GLenum target, GLuint id);
  412. void (QOPENGLF_APIENTRYP EndQuery)(GLenum target);
  413. void (QOPENGLF_APIENTRYP GetQueryiv)(GLenum target, GLenum pname, GLint *params);
  414. void (QOPENGLF_APIENTRYP GetQueryObjectuiv)(GLuint id, GLenum pname, GLuint *params);
  415. GLboolean (QOPENGLF_APIENTRYP UnmapBuffer)(GLenum target);
  416. void (QOPENGLF_APIENTRYP GetBufferPointerv)(GLenum target, GLenum pname, void **params);
  417. void (QOPENGLF_APIENTRYP DrawBuffers)(GLsizei n, const GLenum *bufs);
  418. void (QOPENGLF_APIENTRYP UniformMatrix2x3fv)(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
  419. void (QOPENGLF_APIENTRYP UniformMatrix3x2fv)(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
  420. void (QOPENGLF_APIENTRYP UniformMatrix2x4fv)(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
  421. void (QOPENGLF_APIENTRYP UniformMatrix4x2fv)(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
  422. void (QOPENGLF_APIENTRYP UniformMatrix3x4fv)(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
  423. void (QOPENGLF_APIENTRYP UniformMatrix4x3fv)(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
  424. void (QOPENGLF_APIENTRYP BlitFramebuffer)(GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter);
  425. void (QOPENGLF_APIENTRYP RenderbufferStorageMultisample)(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height);
  426. void (QOPENGLF_APIENTRYP FramebufferTextureLayer)(GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer);
  427. void *(QOPENGLF_APIENTRYP MapBufferRange)(GLenum target, GLintptr offset, GLsizeiptr length, GLbitfield access);
  428. void (QOPENGLF_APIENTRYP FlushMappedBufferRange)(GLenum target, GLintptr offset, GLsizeiptr length);
  429. void (QOPENGLF_APIENTRYP BindVertexArray)(GLuint array);
  430. void (QOPENGLF_APIENTRYP DeleteVertexArrays)(GLsizei n, const GLuint *arrays);
  431. void (QOPENGLF_APIENTRYP GenVertexArrays)(GLsizei n, GLuint *arrays);
  432. GLboolean (QOPENGLF_APIENTRYP IsVertexArray)(GLuint array);
  433. void (QOPENGLF_APIENTRYP GetIntegeri_v)(GLenum target, GLuint index, GLint *data);
  434. void (QOPENGLF_APIENTRYP BeginTransformFeedback)(GLenum primitiveMode);
  435. void (QOPENGLF_APIENTRYP EndTransformFeedback)(void);
  436. void (QOPENGLF_APIENTRYP BindBufferRange)(GLenum target, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size);
  437. void (QOPENGLF_APIENTRYP BindBufferBase)(GLenum target, GLuint index, GLuint buffer);
  438. void (QOPENGLF_APIENTRYP TransformFeedbackVaryings)(GLuint program, GLsizei count, const GLchar *const*varyings, GLenum bufferMode);
  439. void (QOPENGLF_APIENTRYP GetTransformFeedbackVarying)(GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLsizei *size, GLenum *type, GLchar *name);
  440. void (QOPENGLF_APIENTRYP VertexAttribIPointer)(GLuint index, GLint size, GLenum type, GLsizei stride, const void *pointer);
  441. void (QOPENGLF_APIENTRYP GetVertexAttribIiv)(GLuint index, GLenum pname, GLint *params);
  442. void (QOPENGLF_APIENTRYP GetVertexAttribIuiv)(GLuint index, GLenum pname, GLuint *params);
  443. void (QOPENGLF_APIENTRYP VertexAttribI4i)(GLuint index, GLint x, GLint y, GLint z, GLint w);
  444. void (QOPENGLF_APIENTRYP VertexAttribI4ui)(GLuint index, GLuint x, GLuint y, GLuint z, GLuint w);
  445. void (QOPENGLF_APIENTRYP VertexAttribI4iv)(GLuint index, const GLint *v);
  446. void (QOPENGLF_APIENTRYP VertexAttribI4uiv)(GLuint index, const GLuint *v);
  447. void (QOPENGLF_APIENTRYP GetUniformuiv)(GLuint program, GLint location, GLuint *params);
  448. GLint (QOPENGLF_APIENTRYP GetFragDataLocation)(GLuint program, const GLchar *name);
  449. void (QOPENGLF_APIENTRYP Uniform1ui)(GLint location, GLuint v0);
  450. void (QOPENGLF_APIENTRYP Uniform2ui)(GLint location, GLuint v0, GLuint v1);
  451. void (QOPENGLF_APIENTRYP Uniform3ui)(GLint location, GLuint v0, GLuint v1, GLuint v2);
  452. void (QOPENGLF_APIENTRYP Uniform4ui)(GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3);
  453. void (QOPENGLF_APIENTRYP Uniform1uiv)(GLint location, GLsizei count, const GLuint *value);
  454. void (QOPENGLF_APIENTRYP Uniform2uiv)(GLint location, GLsizei count, const GLuint *value);
  455. void (QOPENGLF_APIENTRYP Uniform3uiv)(GLint location, GLsizei count, const GLuint *value);
  456. void (QOPENGLF_APIENTRYP Uniform4uiv)(GLint location, GLsizei count, const GLuint *value);
  457. void (QOPENGLF_APIENTRYP ClearBufferiv)(GLenum buffer, GLint drawbuffer, const GLint *value);
  458. void (QOPENGLF_APIENTRYP ClearBufferuiv)(GLenum buffer, GLint drawbuffer, const GLuint *value);
  459. void (QOPENGLF_APIENTRYP ClearBufferfv)(GLenum buffer, GLint drawbuffer, const GLfloat *value);
  460. void (QOPENGLF_APIENTRYP ClearBufferfi)(GLenum buffer, GLint drawbuffer, GLfloat depth, GLint stencil);
  461. const GLubyte *(QOPENGLF_APIENTRYP GetStringi)(GLenum name, GLuint index);
  462. void (QOPENGLF_APIENTRYP CopyBufferSubData)(GLenum readTarget, GLenum writeTarget, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size);
  463. void (QOPENGLF_APIENTRYP GetUniformIndices)(GLuint program, GLsizei uniformCount, const GLchar *const*uniformNames, GLuint *uniformIndices);
  464. void (QOPENGLF_APIENTRYP GetActiveUniformsiv)(GLuint program, GLsizei uniformCount, const GLuint *uniformIndices, GLenum pname, GLint *params);
  465. GLuint (QOPENGLF_APIENTRYP GetUniformBlockIndex)(GLuint program, const GLchar *uniformBlockName);
  466. void (QOPENGLF_APIENTRYP GetActiveUniformBlockiv)(GLuint program, GLuint uniformBlockIndex, GLenum pname, GLint *params);
  467. void (QOPENGLF_APIENTRYP GetActiveUniformBlockName)(GLuint program, GLuint uniformBlockIndex, GLsizei bufSize, GLsizei *length, GLchar *uniformBlockName);
  468. void (QOPENGLF_APIENTRYP UniformBlockBinding)(GLuint program, GLuint uniformBlockIndex, GLuint uniformBlockBinding);
  469. void (QOPENGLF_APIENTRYP DrawArraysInstanced)(GLenum mode, GLint first, GLsizei count, GLsizei instancecount);
  470. void (QOPENGLF_APIENTRYP DrawElementsInstanced)(GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount);
  471. GLsync (QOPENGLF_APIENTRYP FenceSync)(GLenum condition, GLbitfield flags);
  472. GLboolean (QOPENGLF_APIENTRYP IsSync)(GLsync sync);
  473. void (QOPENGLF_APIENTRYP DeleteSync)(GLsync sync);
  474. GLenum (QOPENGLF_APIENTRYP ClientWaitSync)(GLsync sync, GLbitfield flags, GLuint64 timeout);
  475. void (QOPENGLF_APIENTRYP WaitSync)(GLsync sync, GLbitfield flags, GLuint64 timeout);
  476. void (QOPENGLF_APIENTRYP GetInteger64v)(GLenum pname, GLint64 *data);
  477. void (QOPENGLF_APIENTRYP GetSynciv)(GLsync sync, GLenum pname, GLsizei bufSize, GLsizei *length, GLint *values);
  478. void (QOPENGLF_APIENTRYP GetInteger64i_v)(GLenum target, GLuint index, GLint64 *data);
  479. void (QOPENGLF_APIENTRYP GetBufferParameteri64v)(GLenum target, GLenum pname, GLint64 *params);
  480. void (QOPENGLF_APIENTRYP GenSamplers)(GLsizei count, GLuint *samplers);
  481. void (QOPENGLF_APIENTRYP DeleteSamplers)(GLsizei count, const GLuint *samplers);
  482. GLboolean (QOPENGLF_APIENTRYP IsSampler)(GLuint sampler);
  483. void (QOPENGLF_APIENTRYP BindSampler)(GLuint unit, GLuint sampler);
  484. void (QOPENGLF_APIENTRYP SamplerParameteri)(GLuint sampler, GLenum pname, GLint param);
  485. void (QOPENGLF_APIENTRYP SamplerParameteriv)(GLuint sampler, GLenum pname, const GLint *param);
  486. void (QOPENGLF_APIENTRYP SamplerParameterf)(GLuint sampler, GLenum pname, GLfloat param);
  487. void (QOPENGLF_APIENTRYP SamplerParameterfv)(GLuint sampler, GLenum pname, const GLfloat *param);
  488. void (QOPENGLF_APIENTRYP GetSamplerParameteriv)(GLuint sampler, GLenum pname, GLint *params);
  489. void (QOPENGLF_APIENTRYP GetSamplerParameterfv)(GLuint sampler, GLenum pname, GLfloat *params);
  490. void (QOPENGLF_APIENTRYP VertexAttribDivisor)(GLuint index, GLuint divisor);
  491. void (QOPENGLF_APIENTRYP BindTransformFeedback)(GLenum target, GLuint id);
  492. void (QOPENGLF_APIENTRYP DeleteTransformFeedbacks)(GLsizei n, const GLuint *ids);
  493. void (QOPENGLF_APIENTRYP GenTransformFeedbacks)(GLsizei n, GLuint *ids);
  494. GLboolean (QOPENGLF_APIENTRYP IsTransformFeedback)(GLuint id);
  495. void (QOPENGLF_APIENTRYP PauseTransformFeedback)(void);
  496. void (QOPENGLF_APIENTRYP ResumeTransformFeedback)(void);
  497. void (QOPENGLF_APIENTRYP GetProgramBinary)(GLuint program, GLsizei bufSize, GLsizei *length, GLenum *binaryFormat, void *binary);
  498. void (QOPENGLF_APIENTRYP ProgramBinary)(GLuint program, GLenum binaryFormat, const void *binary, GLsizei length);
  499. void (QOPENGLF_APIENTRYP ProgramParameteri)(GLuint program, GLenum pname, GLint value);
  500. void (QOPENGLF_APIENTRYP InvalidateFramebuffer)(GLenum target, GLsizei numAttachments, const GLenum *attachments);
  501. void (QOPENGLF_APIENTRYP InvalidateSubFramebuffer)(GLenum target, GLsizei numAttachments, const GLenum *attachments, GLint x, GLint y, GLsizei width, GLsizei height);
  502. void (QOPENGLF_APIENTRYP TexStorage2D)(GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height);
  503. void (QOPENGLF_APIENTRYP TexStorage3D)(GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth);
  504. void (QOPENGLF_APIENTRYP GetInternalformativ)(GLenum target, GLenum internalformat, GLenum pname, GLsizei bufSize, GLint *params);
  505. // GLES 3.1
  506. void (QOPENGLF_APIENTRYP DispatchCompute)(GLuint num_groups_x, GLuint num_groups_y, GLuint num_groups_z);
  507. void (QOPENGLF_APIENTRYP DispatchComputeIndirect)(GLintptr indirect);
  508. void (QOPENGLF_APIENTRYP DrawArraysIndirect)(GLenum mode, const void *indirect);
  509. void (QOPENGLF_APIENTRYP DrawElementsIndirect)(GLenum mode, GLenum type, const void *indirect);
  510. void (QOPENGLF_APIENTRYP FramebufferParameteri)(GLenum target, GLenum pname, GLint param);
  511. void (QOPENGLF_APIENTRYP GetFramebufferParameteriv)(GLenum target, GLenum pname, GLint *params);
  512. void (QOPENGLF_APIENTRYP GetProgramInterfaceiv)(GLuint program, GLenum programInterface, GLenum pname, GLint *params);
  513. GLuint (QOPENGLF_APIENTRYP GetProgramResourceIndex)(GLuint program, GLenum programInterface, const GLchar *name);
  514. void (QOPENGLF_APIENTRYP GetProgramResourceName)(GLuint program, GLenum programInterface, GLuint index, GLsizei bufSize, GLsizei *length, GLchar *name);
  515. void (QOPENGLF_APIENTRYP GetProgramResourceiv)(GLuint program, GLenum programInterface, GLuint index, GLsizei propCount, const GLenum *props, GLsizei bufSize, GLsizei *length, GLint *params);
  516. GLint (QOPENGLF_APIENTRYP GetProgramResourceLocation)(GLuint program, GLenum programInterface, const GLchar *name);
  517. void (QOPENGLF_APIENTRYP UseProgramStages)(GLuint pipeline, GLbitfield stages, GLuint program);
  518. void (QOPENGLF_APIENTRYP ActiveShaderProgram)(GLuint pipeline, GLuint program);
  519. GLuint (QOPENGLF_APIENTRYP CreateShaderProgramv)(GLenum type, GLsizei count, const GLchar *const*strings);
  520. void (QOPENGLF_APIENTRYP BindProgramPipeline)(GLuint pipeline);
  521. void (QOPENGLF_APIENTRYP DeleteProgramPipelines)(GLsizei n, const GLuint *pipelines);
  522. void (QOPENGLF_APIENTRYP GenProgramPipelines)(GLsizei n, GLuint *pipelines);
  523. GLboolean (QOPENGLF_APIENTRYP IsProgramPipeline)(GLuint pipeline);
  524. void (QOPENGLF_APIENTRYP GetProgramPipelineiv)(GLuint pipeline, GLenum pname, GLint *params);
  525. void (QOPENGLF_APIENTRYP ProgramUniform1i)(GLuint program, GLint location, GLint v0);
  526. void (QOPENGLF_APIENTRYP ProgramUniform2i)(GLuint program, GLint location, GLint v0, GLint v1);
  527. void (QOPENGLF_APIENTRYP ProgramUniform3i)(GLuint program, GLint location, GLint v0, GLint v1, GLint v2);
  528. void (QOPENGLF_APIENTRYP ProgramUniform4i)(GLuint program, GLint location, GLint v0, GLint v1, GLint v2, GLint v3);
  529. void (QOPENGLF_APIENTRYP ProgramUniform1ui)(GLuint program, GLint location, GLuint v0);
  530. void (QOPENGLF_APIENTRYP ProgramUniform2ui)(GLuint program, GLint location, GLuint v0, GLuint v1);
  531. void (QOPENGLF_APIENTRYP ProgramUniform3ui)(GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2);
  532. void (QOPENGLF_APIENTRYP ProgramUniform4ui)(GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3);
  533. void (QOPENGLF_APIENTRYP ProgramUniform1f)(GLuint program, GLint location, GLfloat v0);
  534. void (QOPENGLF_APIENTRYP ProgramUniform2f)(GLuint program, GLint location, GLfloat v0, GLfloat v1);
  535. void (QOPENGLF_APIENTRYP ProgramUniform3f)(GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2);
  536. void (QOPENGLF_APIENTRYP ProgramUniform4f)(GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3);
  537. void (QOPENGLF_APIENTRYP ProgramUniform1iv)(GLuint program, GLint location, GLsizei count, const GLint *value);
  538. void (QOPENGLF_APIENTRYP ProgramUniform2iv)(GLuint program, GLint location, GLsizei count, const GLint *value);
  539. void (QOPENGLF_APIENTRYP ProgramUniform3iv)(GLuint program, GLint location, GLsizei count, const GLint *value);
  540. void (QOPENGLF_APIENTRYP ProgramUniform4iv)(GLuint program, GLint location, GLsizei count, const GLint *value);
  541. void (QOPENGLF_APIENTRYP ProgramUniform1uiv)(GLuint program, GLint location, GLsizei count, const GLuint *value);
  542. void (QOPENGLF_APIENTRYP ProgramUniform2uiv)(GLuint program, GLint location, GLsizei count, const GLuint *value);
  543. void (QOPENGLF_APIENTRYP ProgramUniform3uiv)(GLuint program, GLint location, GLsizei count, const GLuint *value);
  544. void (QOPENGLF_APIENTRYP ProgramUniform4uiv)(GLuint program, GLint location, GLsizei count, const GLuint *value);
  545. void (QOPENGLF_APIENTRYP ProgramUniform1fv)(GLuint program, GLint location, GLsizei count, const GLfloat *value);
  546. void (QOPENGLF_APIENTRYP ProgramUniform2fv)(GLuint program, GLint location, GLsizei count, const GLfloat *value);
  547. void (QOPENGLF_APIENTRYP ProgramUniform3fv)(GLuint program, GLint location, GLsizei count, const GLfloat *value);
  548. void (QOPENGLF_APIENTRYP ProgramUniform4fv)(GLuint program, GLint location, GLsizei count, const GLfloat *value);
  549. void (QOPENGLF_APIENTRYP ProgramUniformMatrix2fv)(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
  550. void (QOPENGLF_APIENTRYP ProgramUniformMatrix3fv)(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
  551. void (QOPENGLF_APIENTRYP ProgramUniformMatrix4fv)(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
  552. void (QOPENGLF_APIENTRYP ProgramUniformMatrix2x3fv)(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
  553. void (QOPENGLF_APIENTRYP ProgramUniformMatrix3x2fv)(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
  554. void (QOPENGLF_APIENTRYP ProgramUniformMatrix2x4fv)(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
  555. void (QOPENGLF_APIENTRYP ProgramUniformMatrix4x2fv)(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
  556. void (QOPENGLF_APIENTRYP ProgramUniformMatrix3x4fv)(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
  557. void (QOPENGLF_APIENTRYP ProgramUniformMatrix4x3fv)(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
  558. void (QOPENGLF_APIENTRYP ValidateProgramPipeline)(GLuint pipeline);
  559. void (QOPENGLF_APIENTRYP GetProgramPipelineInfoLog)(GLuint pipeline, GLsizei bufSize, GLsizei *length, GLchar *infoLog);
  560. void (QOPENGLF_APIENTRYP BindImageTexture)(GLuint unit, GLuint texture, GLint level, GLboolean layered, GLint layer, GLenum access, GLenum format);
  561. void (QOPENGLF_APIENTRYP GetBooleani_v)(GLenum target, GLuint index, GLboolean *data);
  562. void (QOPENGLF_APIENTRYP MemoryBarrierFunc)(GLbitfield barriers);
  563. void (QOPENGLF_APIENTRYP MemoryBarrierByRegion)(GLbitfield barriers);
  564. void (QOPENGLF_APIENTRYP TexStorage2DMultisample)(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLboolean fixedsamplelocations);
  565. void (QOPENGLF_APIENTRYP GetMultisamplefv)(GLenum pname, GLuint index, GLfloat *val);
  566. void (QOPENGLF_APIENTRYP SampleMaski)(GLuint maskNumber, GLbitfield mask);
  567. void (QOPENGLF_APIENTRYP GetTexLevelParameteriv)(GLenum target, GLint level, GLenum pname, GLint *params);
  568. void (QOPENGLF_APIENTRYP GetTexLevelParameterfv)(GLenum target, GLint level, GLenum pname, GLfloat *params);
  569. void (QOPENGLF_APIENTRYP BindVertexBuffer)(GLuint bindingindex, GLuint buffer, GLintptr offset, GLsizei stride);
  570. void (QOPENGLF_APIENTRYP VertexAttribFormat)(GLuint attribindex, GLint size, GLenum type, GLboolean normalized, GLuint relativeoffset);
  571. void (QOPENGLF_APIENTRYP VertexAttribIFormat)(GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset);
  572. void (QOPENGLF_APIENTRYP VertexAttribBinding)(GLuint attribindex, GLuint bindingindex);
  573. void (QOPENGLF_APIENTRYP VertexBindingDivisor)(GLuint bindingindex, GLuint divisor);
  574. };
  575. // GLES 3.0 and 3.1
  576. inline void QOpenGLExtraFunctions::glBeginQuery(GLenum target, GLuint id)
  577. {
  578. Q_D(QOpenGLExtraFunctions);
  579. Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
  580. d->BeginQuery(target, id);
  581. Q_OPENGL_FUNCTIONS_DEBUG
  582. }
  583. inline void QOpenGLExtraFunctions::glBeginTransformFeedback(GLenum primitiveMode)
  584. {
  585. Q_D(QOpenGLExtraFunctions);
  586. Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
  587. d->BeginTransformFeedback(primitiveMode);
  588. Q_OPENGL_FUNCTIONS_DEBUG
  589. }
  590. inline void QOpenGLExtraFunctions::glBindBufferBase(GLenum target, GLuint index, GLuint buffer)
  591. {
  592. Q_D(QOpenGLExtraFunctions);
  593. Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
  594. d->BindBufferBase(target, index, buffer);
  595. Q_OPENGL_FUNCTIONS_DEBUG
  596. }
  597. inline void QOpenGLExtraFunctions::glBindBufferRange(GLenum target, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size)
  598. {
  599. Q_D(QOpenGLExtraFunctions);
  600. Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
  601. d->BindBufferRange(target, index, buffer, offset, size);
  602. Q_OPENGL_FUNCTIONS_DEBUG
  603. }
  604. inline void QOpenGLExtraFunctions::glBindSampler(GLuint unit, GLuint sampler)
  605. {
  606. Q_D(QOpenGLExtraFunctions);
  607. Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
  608. d->BindSampler(unit, sampler);
  609. Q_OPENGL_FUNCTIONS_DEBUG
  610. }
  611. inline void QOpenGLExtraFunctions::glBindTransformFeedback(GLenum target, GLuint id)
  612. {
  613. Q_D(QOpenGLExtraFunctions);
  614. Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
  615. d->BindTransformFeedback(target, id);
  616. Q_OPENGL_FUNCTIONS_DEBUG
  617. }
  618. inline void QOpenGLExtraFunctions::glBindVertexArray(GLuint array)
  619. {
  620. Q_D(QOpenGLExtraFunctions);
  621. Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
  622. d->BindVertexArray(array);
  623. Q_OPENGL_FUNCTIONS_DEBUG
  624. }
  625. inline void QOpenGLExtraFunctions::glBlitFramebuffer(GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter)
  626. {
  627. Q_D(QOpenGLExtraFunctions);
  628. Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
  629. d->BlitFramebuffer(srcX0, srcY0, srcX1, srcY1, dstX0, dstY0, dstX1, dstY1, mask, filter);
  630. Q_OPENGL_FUNCTIONS_DEBUG
  631. }
  632. inline void QOpenGLExtraFunctions::glClearBufferfi(GLenum buffer, GLint drawbuffer, GLfloat depth, GLint stencil)
  633. {
  634. Q_D(QOpenGLExtraFunctions);
  635. Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
  636. d->ClearBufferfi(buffer, drawbuffer, depth, stencil);
  637. Q_OPENGL_FUNCTIONS_DEBUG
  638. }
  639. inline void QOpenGLExtraFunctions::glClearBufferfv(GLenum buffer, GLint drawbuffer, const GLfloat * value)
  640. {
  641. Q_D(QOpenGLExtraFunctions);
  642. Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
  643. d->ClearBufferfv(buffer, drawbuffer, value);
  644. Q_OPENGL_FUNCTIONS_DEBUG
  645. }
  646. inline void QOpenGLExtraFunctions::glClearBufferiv(GLenum buffer, GLint drawbuffer, const GLint * value)
  647. {
  648. Q_D(QOpenGLExtraFunctions);
  649. Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
  650. d->ClearBufferiv(buffer, drawbuffer, value);
  651. Q_OPENGL_FUNCTIONS_DEBUG
  652. }
  653. inline void QOpenGLExtraFunctions::glClearBufferuiv(GLenum buffer, GLint drawbuffer, const GLuint * value)
  654. {
  655. Q_D(QOpenGLExtraFunctions);
  656. Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
  657. d->ClearBufferuiv(buffer, drawbuffer, value);
  658. Q_OPENGL_FUNCTIONS_DEBUG
  659. }
  660. inline GLenum QOpenGLExtraFunctions::glClientWaitSync(GLsync sync, GLbitfield flags, GLuint64 timeout)
  661. {
  662. Q_D(QOpenGLExtraFunctions);
  663. Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
  664. GLenum result = d->ClientWaitSync(sync, flags, timeout);
  665. Q_OPENGL_FUNCTIONS_DEBUG
  666. return result;
  667. }
  668. inline void QOpenGLExtraFunctions::glCompressedTexImage3D(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const void * data)
  669. {
  670. Q_D(QOpenGLExtraFunctions);
  671. Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
  672. d->CompressedTexImage3D(target, level, internalformat, width, height, depth, border, imageSize, data);
  673. Q_OPENGL_FUNCTIONS_DEBUG
  674. }
  675. inline void QOpenGLExtraFunctions::glCompressedTexSubImage3D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const void * data)
  676. {
  677. Q_D(QOpenGLExtraFunctions);
  678. Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
  679. d->CompressedTexSubImage3D(target, level, xoffset, yoffset, zoffset, width, height, depth, format, imageSize, data);
  680. Q_OPENGL_FUNCTIONS_DEBUG
  681. }
  682. inline void QOpenGLExtraFunctions::glCopyBufferSubData(GLenum readTarget, GLenum writeTarget, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size)
  683. {
  684. Q_D(QOpenGLExtraFunctions);
  685. Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
  686. d->CopyBufferSubData(readTarget, writeTarget, readOffset, writeOffset, size);
  687. Q_OPENGL_FUNCTIONS_DEBUG
  688. }
  689. inline void QOpenGLExtraFunctions::glCopyTexSubImage3D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height)
  690. {
  691. Q_D(QOpenGLExtraFunctions);
  692. Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
  693. d->CopyTexSubImage3D(target, level, xoffset, yoffset, zoffset, x, y, width, height);
  694. Q_OPENGL_FUNCTIONS_DEBUG
  695. }
  696. inline void QOpenGLExtraFunctions::glDeleteQueries(GLsizei n, const GLuint * ids)
  697. {
  698. Q_D(QOpenGLExtraFunctions);
  699. Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
  700. d->DeleteQueries(n, ids);
  701. Q_OPENGL_FUNCTIONS_DEBUG
  702. }
  703. inline void QOpenGLExtraFunctions::glDeleteSamplers(GLsizei count, const GLuint * samplers)
  704. {
  705. Q_D(QOpenGLExtraFunctions);
  706. Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
  707. d->DeleteSamplers(count, samplers);
  708. Q_OPENGL_FUNCTIONS_DEBUG
  709. }
  710. inline void QOpenGLExtraFunctions::glDeleteSync(GLsync sync)
  711. {
  712. Q_D(QOpenGLExtraFunctions);
  713. Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
  714. d->DeleteSync(sync);
  715. Q_OPENGL_FUNCTIONS_DEBUG
  716. }
  717. inline void QOpenGLExtraFunctions::glDeleteTransformFeedbacks(GLsizei n, const GLuint * ids)
  718. {
  719. Q_D(QOpenGLExtraFunctions);
  720. Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
  721. d->DeleteTransformFeedbacks(n, ids);
  722. Q_OPENGL_FUNCTIONS_DEBUG
  723. }
  724. inline void QOpenGLExtraFunctions::glDeleteVertexArrays(GLsizei n, const GLuint * arrays)
  725. {
  726. Q_D(QOpenGLExtraFunctions);
  727. Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
  728. d->DeleteVertexArrays(n, arrays);
  729. Q_OPENGL_FUNCTIONS_DEBUG
  730. }
  731. inline void QOpenGLExtraFunctions::glDrawArraysInstanced(GLenum mode, GLint first, GLsizei count, GLsizei instancecount)
  732. {
  733. Q_D(QOpenGLExtraFunctions);
  734. Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
  735. d->DrawArraysInstanced(mode, first, count, instancecount);
  736. Q_OPENGL_FUNCTIONS_DEBUG
  737. }
  738. inline void QOpenGLExtraFunctions::glDrawBuffers(GLsizei n, const GLenum * bufs)
  739. {
  740. Q_D(QOpenGLExtraFunctions);
  741. Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
  742. d->DrawBuffers(n, bufs);
  743. Q_OPENGL_FUNCTIONS_DEBUG
  744. }
  745. inline void QOpenGLExtraFunctions::glDrawElementsInstanced(GLenum mode, GLsizei count, GLenum type, const void * indices, GLsizei instancecount)
  746. {
  747. Q_D(QOpenGLExtraFunctions);
  748. Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
  749. d->DrawElementsInstanced(mode, count, type, indices, instancecount);
  750. Q_OPENGL_FUNCTIONS_DEBUG
  751. }
  752. inline void QOpenGLExtraFunctions::glDrawRangeElements(GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const void * indices)
  753. {
  754. Q_D(QOpenGLExtraFunctions);
  755. Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
  756. d->DrawRangeElements(mode, start, end, count, type, indices);
  757. Q_OPENGL_FUNCTIONS_DEBUG
  758. }
  759. inline void QOpenGLExtraFunctions::glEndQuery(GLenum target)
  760. {
  761. Q_D(QOpenGLExtraFunctions);
  762. Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
  763. d->EndQuery(target);
  764. Q_OPENGL_FUNCTIONS_DEBUG
  765. }
  766. inline void QOpenGLExtraFunctions::glEndTransformFeedback()
  767. {
  768. Q_D(QOpenGLExtraFunctions);
  769. Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
  770. d->EndTransformFeedback();
  771. Q_OPENGL_FUNCTIONS_DEBUG
  772. }
  773. inline GLsync QOpenGLExtraFunctions::glFenceSync(GLenum condition, GLbitfield flags)
  774. {
  775. Q_D(QOpenGLExtraFunctions);
  776. Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
  777. GLsync result = d->FenceSync(condition, flags);
  778. Q_OPENGL_FUNCTIONS_DEBUG
  779. return result;
  780. }
  781. inline void QOpenGLExtraFunctions::glFlushMappedBufferRange(GLenum target, GLintptr offset, GLsizeiptr length)
  782. {
  783. Q_D(QOpenGLExtraFunctions);
  784. Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
  785. d->FlushMappedBufferRange(target, offset, length);
  786. Q_OPENGL_FUNCTIONS_DEBUG
  787. }
  788. inline void QOpenGLExtraFunctions::glFramebufferTextureLayer(GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer)
  789. {
  790. Q_D(QOpenGLExtraFunctions);
  791. Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
  792. d->FramebufferTextureLayer(target, attachment, texture, level, layer);
  793. Q_OPENGL_FUNCTIONS_DEBUG
  794. }
  795. inline void QOpenGLExtraFunctions::glGenQueries(GLsizei n, GLuint* ids)
  796. {
  797. Q_D(QOpenGLExtraFunctions);
  798. Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
  799. d->GenQueries(n, ids);
  800. Q_OPENGL_FUNC