PageRenderTime 49ms CodeModel.GetById 21ms RepoModel.GetById 0ms app.codeStats 0ms

/choreographer-30fps/app/src/main/jni/ndk_helper/gl3stub.cpp

https://gitlab.com/freedmpure/android-ndk
C++ | 421 lines | 401 code | 5 blank | 15 comment | 67 complexity | 972863582f7c3ef8de20deb7356e776c MD5 | raw file
  1. /*
  2. * Copyright 2013 The Android Open Source Project
  3. *
  4. * Licensed under the Apache License, Version 2.0 (the "License");
  5. * you may not use this file except in compliance with the License.
  6. * You may obtain a copy of the License at
  7. *
  8. * http://www.apache.org/licenses/LICENSE-2.0
  9. *
  10. * Unless required by applicable law or agreed to in writing, software
  11. * distributed under the License is distributed on an "AS IS" BASIS,
  12. * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  13. * See the License for the specific language governing permissions and
  14. * limitations under the License.
  15. */
  16. #include <EGL/egl.h>
  17. #include "gl3stub.h"
  18. GLboolean gl3stubInit() {
  19. #define FIND_PROC(s) s = (decltype(s)) eglGetProcAddress(#s);
  20. FIND_PROC(glReadBuffer);
  21. FIND_PROC(glDrawRangeElements);
  22. FIND_PROC(glTexImage3D);
  23. FIND_PROC(glTexSubImage3D);
  24. FIND_PROC(glCopyTexSubImage3D);
  25. FIND_PROC(glCompressedTexImage3D);
  26. FIND_PROC(glCompressedTexSubImage3D);
  27. FIND_PROC(glGenQueries);
  28. FIND_PROC(glDeleteQueries);
  29. FIND_PROC(glIsQuery);
  30. FIND_PROC(glBeginQuery);
  31. FIND_PROC(glEndQuery);
  32. FIND_PROC(glGetQueryiv);
  33. FIND_PROC(glGetQueryObjectuiv);
  34. FIND_PROC(glUnmapBuffer);
  35. FIND_PROC(glGetBufferPointerv);
  36. FIND_PROC(glDrawBuffers);
  37. FIND_PROC(glUniformMatrix2x3fv);
  38. FIND_PROC(glUniformMatrix3x2fv);
  39. FIND_PROC(glUniformMatrix2x4fv);
  40. FIND_PROC(glUniformMatrix4x2fv);
  41. FIND_PROC(glUniformMatrix3x4fv);
  42. FIND_PROC(glUniformMatrix4x3fv);
  43. FIND_PROC(glBlitFramebuffer);
  44. FIND_PROC(glRenderbufferStorageMultisample);
  45. FIND_PROC(glFramebufferTextureLayer);
  46. FIND_PROC(glMapBufferRange);
  47. FIND_PROC(glFlushMappedBufferRange);
  48. FIND_PROC(glBindVertexArray);
  49. FIND_PROC(glDeleteVertexArrays);
  50. FIND_PROC(glGenVertexArrays);
  51. FIND_PROC(glIsVertexArray);
  52. FIND_PROC(glGetIntegeri_v);
  53. FIND_PROC(glBeginTransformFeedback);
  54. FIND_PROC(glEndTransformFeedback);
  55. FIND_PROC(glBindBufferRange);
  56. FIND_PROC(glBindBufferBase);
  57. FIND_PROC(glTransformFeedbackVaryings);
  58. FIND_PROC(glGetTransformFeedbackVarying);
  59. FIND_PROC(glVertexAttribIPointer);
  60. FIND_PROC(glGetVertexAttribIiv);
  61. FIND_PROC(glGetVertexAttribIuiv);
  62. FIND_PROC(glVertexAttribI4i);
  63. FIND_PROC(glVertexAttribI4ui);
  64. FIND_PROC(glVertexAttribI4iv);
  65. FIND_PROC(glVertexAttribI4uiv);
  66. FIND_PROC(glGetUniformuiv);
  67. FIND_PROC(glGetFragDataLocation);
  68. FIND_PROC(glUniform1ui);
  69. FIND_PROC(glUniform2ui);
  70. FIND_PROC(glUniform3ui);
  71. FIND_PROC(glUniform4ui);
  72. FIND_PROC(glUniform1uiv);
  73. FIND_PROC(glUniform2uiv);
  74. FIND_PROC(glUniform3uiv);
  75. FIND_PROC(glUniform4uiv);
  76. FIND_PROC(glClearBufferiv);
  77. FIND_PROC(glClearBufferuiv);
  78. FIND_PROC(glClearBufferfv);
  79. FIND_PROC(glClearBufferfi);
  80. FIND_PROC(glGetStringi);
  81. FIND_PROC(glCopyBufferSubData);
  82. FIND_PROC(glGetUniformIndices);
  83. FIND_PROC(glGetActiveUniformsiv);
  84. FIND_PROC(glGetUniformBlockIndex);
  85. FIND_PROC(glGetActiveUniformBlockiv);
  86. FIND_PROC(glGetActiveUniformBlockName);
  87. FIND_PROC(glUniformBlockBinding);
  88. FIND_PROC(glDrawArraysInstanced);
  89. FIND_PROC(glDrawElementsInstanced);
  90. FIND_PROC(glFenceSync);
  91. FIND_PROC(glIsSync);
  92. FIND_PROC(glDeleteSync);
  93. FIND_PROC(glClientWaitSync);
  94. FIND_PROC(glWaitSync);
  95. FIND_PROC(glGetInteger64v);
  96. FIND_PROC(glGetSynciv);
  97. FIND_PROC(glGetInteger64i_v);
  98. FIND_PROC(glGetBufferParameteri64v);
  99. FIND_PROC(glGenSamplers);
  100. FIND_PROC(glDeleteSamplers);
  101. FIND_PROC(glIsSampler);
  102. FIND_PROC(glBindSampler);
  103. FIND_PROC(glSamplerParameteri);
  104. FIND_PROC(glSamplerParameteriv);
  105. FIND_PROC(glSamplerParameterf);
  106. FIND_PROC(glSamplerParameterfv);
  107. FIND_PROC(glGetSamplerParameteriv);
  108. FIND_PROC(glGetSamplerParameterfv);
  109. FIND_PROC(glVertexAttribDivisor);
  110. FIND_PROC(glBindTransformFeedback);
  111. FIND_PROC(glDeleteTransformFeedbacks);
  112. FIND_PROC(glGenTransformFeedbacks);
  113. FIND_PROC(glIsTransformFeedback);
  114. FIND_PROC(glPauseTransformFeedback);
  115. FIND_PROC(glResumeTransformFeedback);
  116. FIND_PROC(glGetProgramBinary);
  117. FIND_PROC(glProgramBinary);
  118. FIND_PROC(glProgramParameteri);
  119. FIND_PROC(glInvalidateFramebuffer);
  120. FIND_PROC(glInvalidateSubFramebuffer);
  121. FIND_PROC(glTexStorage2D);
  122. FIND_PROC(glTexStorage3D);
  123. FIND_PROC(glGetInternalformativ);
  124. #undef FIND_PROC
  125. if (!glReadBuffer || !glDrawRangeElements || !glTexImage3D ||
  126. !glTexSubImage3D || !glCopyTexSubImage3D || !glCompressedTexImage3D ||
  127. !glCompressedTexSubImage3D || !glGenQueries || !glDeleteQueries ||
  128. !glIsQuery || !glBeginQuery || !glEndQuery || !glGetQueryiv ||
  129. !glGetQueryObjectuiv || !glUnmapBuffer || !glGetBufferPointerv ||
  130. !glDrawBuffers || !glUniformMatrix2x3fv || !glUniformMatrix3x2fv ||
  131. !glUniformMatrix2x4fv || !glUniformMatrix4x2fv || !glUniformMatrix3x4fv ||
  132. !glUniformMatrix4x3fv || !glBlitFramebuffer ||
  133. !glRenderbufferStorageMultisample || !glFramebufferTextureLayer ||
  134. !glMapBufferRange || !glFlushMappedBufferRange || !glBindVertexArray ||
  135. !glDeleteVertexArrays || !glGenVertexArrays || !glIsVertexArray ||
  136. !glGetIntegeri_v || !glBeginTransformFeedback ||
  137. !glEndTransformFeedback || !glBindBufferRange || !glBindBufferBase ||
  138. !glTransformFeedbackVaryings || !glGetTransformFeedbackVarying ||
  139. !glVertexAttribIPointer || !glGetVertexAttribIiv ||
  140. !glGetVertexAttribIuiv || !glVertexAttribI4i || !glVertexAttribI4ui ||
  141. !glVertexAttribI4iv || !glVertexAttribI4uiv || !glGetUniformuiv ||
  142. !glGetFragDataLocation || !glUniform1ui || !glUniform2ui ||
  143. !glUniform3ui || !glUniform4ui || !glUniform1uiv || !glUniform2uiv ||
  144. !glUniform3uiv || !glUniform4uiv || !glClearBufferiv ||
  145. !glClearBufferuiv || !glClearBufferfv || !glClearBufferfi ||
  146. !glGetStringi || !glCopyBufferSubData || !glGetUniformIndices ||
  147. !glGetActiveUniformsiv || !glGetUniformBlockIndex ||
  148. !glGetActiveUniformBlockiv || !glGetActiveUniformBlockName ||
  149. !glUniformBlockBinding || !glDrawArraysInstanced ||
  150. !glDrawElementsInstanced || !glFenceSync || !glIsSync || !glDeleteSync ||
  151. !glClientWaitSync || !glWaitSync || !glGetInteger64v || !glGetSynciv ||
  152. !glGetInteger64i_v || !glGetBufferParameteri64v || !glGenSamplers ||
  153. !glDeleteSamplers || !glIsSampler || !glBindSampler ||
  154. !glSamplerParameteri || !glSamplerParameteriv || !glSamplerParameterf ||
  155. !glSamplerParameterfv || !glGetSamplerParameteriv ||
  156. !glGetSamplerParameterfv || !glVertexAttribDivisor ||
  157. !glBindTransformFeedback || !glDeleteTransformFeedbacks ||
  158. !glGenTransformFeedbacks || !glIsTransformFeedback ||
  159. !glPauseTransformFeedback || !glResumeTransformFeedback ||
  160. !glGetProgramBinary || !glProgramBinary || !glProgramParameteri ||
  161. !glInvalidateFramebuffer || !glInvalidateSubFramebuffer ||
  162. !glTexStorage2D || !glTexStorage3D || !glGetInternalformativ) {
  163. return GL_FALSE;
  164. }
  165. return GL_TRUE;
  166. }
  167. /* Function pointer definitions */ GL_APICALL void (*GL_APIENTRY glReadBuffer)(
  168. GLenum mode);
  169. GL_APICALL void (*GL_APIENTRY glDrawRangeElements)(GLenum mode, GLuint start,
  170. GLuint end, GLsizei count,
  171. GLenum type,
  172. const GLvoid *indices);
  173. GL_APICALL void (*GL_APIENTRY glTexImage3D)(GLenum target, GLint level,
  174. GLint internalformat, GLsizei width,
  175. GLsizei height, GLsizei depth,
  176. GLint border, GLenum format,
  177. GLenum type, const GLvoid *pixels);
  178. GL_APICALL void (*GL_APIENTRY glTexSubImage3D)(GLenum target, GLint level,
  179. GLint xoffset, GLint yoffset,
  180. GLint zoffset, GLsizei width,
  181. GLsizei height, GLsizei depth,
  182. GLenum format, GLenum type,
  183. const GLvoid *pixels);
  184. GL_APICALL void (*GL_APIENTRY glCopyTexSubImage3D)(GLenum target, GLint level,
  185. GLint xoffset, GLint yoffset,
  186. GLint zoffset, GLint x,
  187. GLint y, GLsizei width,
  188. GLsizei height);
  189. GL_APICALL void (*GL_APIENTRY glCompressedTexImage3D)(
  190. GLenum target, GLint level, GLenum internalformat, GLsizei width,
  191. GLsizei height, GLsizei depth, GLint border, GLsizei imageSize,
  192. const GLvoid *data);
  193. GL_APICALL void (*GL_APIENTRY glCompressedTexSubImage3D)(
  194. GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset,
  195. GLsizei width, GLsizei height, GLsizei depth, GLenum format,
  196. GLsizei imageSize, const GLvoid *data);
  197. GL_APICALL void (*GL_APIENTRY glGenQueries)(GLsizei n, GLuint *ids);
  198. GL_APICALL void (*GL_APIENTRY glDeleteQueries)(GLsizei n, const GLuint *ids);
  199. GL_APICALL GLboolean (*GL_APIENTRY glIsQuery)(GLuint id);
  200. GL_APICALL void (*GL_APIENTRY glBeginQuery)(GLenum target, GLuint id);
  201. GL_APICALL void (*GL_APIENTRY glEndQuery)(GLenum target);
  202. GL_APICALL void (*GL_APIENTRY glGetQueryiv)(GLenum target, GLenum pname,
  203. GLint *params);
  204. GL_APICALL void (*GL_APIENTRY glGetQueryObjectuiv)(GLuint id, GLenum pname,
  205. GLuint *params);
  206. GL_APICALL GLboolean (*GL_APIENTRY glUnmapBuffer)(GLenum target);
  207. GL_APICALL void (*GL_APIENTRY glGetBufferPointerv)(GLenum target, GLenum pname,
  208. GLvoid **params);
  209. GL_APICALL void (*GL_APIENTRY glDrawBuffers)(GLsizei n, const GLenum *bufs);
  210. GL_APICALL void (*GL_APIENTRY glUniformMatrix2x3fv)(GLint location,
  211. GLsizei count,
  212. GLboolean transpose,
  213. const GLfloat *value);
  214. GL_APICALL void (*GL_APIENTRY glUniformMatrix3x2fv)(GLint location,
  215. GLsizei count,
  216. GLboolean transpose,
  217. const GLfloat *value);
  218. GL_APICALL void (*GL_APIENTRY glUniformMatrix2x4fv)(GLint location,
  219. GLsizei count,
  220. GLboolean transpose,
  221. const GLfloat *value);
  222. GL_APICALL void (*GL_APIENTRY glUniformMatrix4x2fv)(GLint location,
  223. GLsizei count,
  224. GLboolean transpose,
  225. const GLfloat *value);
  226. GL_APICALL void (*GL_APIENTRY glUniformMatrix3x4fv)(GLint location,
  227. GLsizei count,
  228. GLboolean transpose,
  229. const GLfloat *value);
  230. GL_APICALL void (*GL_APIENTRY glUniformMatrix4x3fv)(GLint location,
  231. GLsizei count,
  232. GLboolean transpose,
  233. const GLfloat *value);
  234. GL_APICALL void (*GL_APIENTRY glBlitFramebuffer)(
  235. GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0,
  236. GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter);
  237. GL_APICALL void (*GL_APIENTRY glRenderbufferStorageMultisample)(
  238. GLenum target, GLsizei samples, GLenum internalformat, GLsizei width,
  239. GLsizei height);
  240. GL_APICALL void (*GL_APIENTRY glFramebufferTextureLayer)(
  241. GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer);
  242. GL_APICALL GLvoid *(*GL_APIENTRY glMapBufferRange)(GLenum target,
  243. GLintptr offset,
  244. GLsizeiptr length,
  245. GLbitfield access);
  246. GL_APICALL void (*GL_APIENTRY glFlushMappedBufferRange)(GLenum target,
  247. GLintptr offset,
  248. GLsizeiptr length);
  249. GL_APICALL void (*GL_APIENTRY glBindVertexArray)(GLuint array);
  250. GL_APICALL void (*GL_APIENTRY glDeleteVertexArrays)(GLsizei n,
  251. const GLuint *arrays);
  252. GL_APICALL void (*GL_APIENTRY glGenVertexArrays)(GLsizei n, GLuint *arrays);
  253. GL_APICALL GLboolean (*GL_APIENTRY glIsVertexArray)(GLuint array);
  254. GL_APICALL void (*GL_APIENTRY glGetIntegeri_v)(GLenum target, GLuint index,
  255. GLint *data);
  256. GL_APICALL void (*GL_APIENTRY glBeginTransformFeedback)(GLenum primitiveMode);
  257. GL_APICALL void (*GL_APIENTRY glEndTransformFeedback)(void);
  258. GL_APICALL void (*GL_APIENTRY glBindBufferRange)(GLenum target, GLuint index,
  259. GLuint buffer, GLintptr offset,
  260. GLsizeiptr size);
  261. GL_APICALL void (*GL_APIENTRY glBindBufferBase)(GLenum target, GLuint index,
  262. GLuint buffer);
  263. GL_APICALL void (*GL_APIENTRY glTransformFeedbackVaryings)(
  264. GLuint program, GLsizei count, const GLchar *const *varyings,
  265. GLenum bufferMode);
  266. GL_APICALL void (*GL_APIENTRY glGetTransformFeedbackVarying)(
  267. GLuint program, GLuint index, GLsizei bufSize, GLsizei *length,
  268. GLsizei *size, GLenum *type, GLchar *name);
  269. GL_APICALL void (*GL_APIENTRY glVertexAttribIPointer)(GLuint index, GLint size,
  270. GLenum type,
  271. GLsizei stride,
  272. const GLvoid *pointer);
  273. GL_APICALL void (*GL_APIENTRY glGetVertexAttribIiv)(GLuint index, GLenum pname,
  274. GLint *params);
  275. GL_APICALL void (*GL_APIENTRY glGetVertexAttribIuiv)(GLuint index, GLenum pname,
  276. GLuint *params);
  277. GL_APICALL void (*GL_APIENTRY glVertexAttribI4i)(GLuint index, GLint x, GLint y,
  278. GLint z, GLint w);
  279. GL_APICALL void (*GL_APIENTRY glVertexAttribI4ui)(GLuint index, GLuint x,
  280. GLuint y, GLuint z, GLuint w);
  281. GL_APICALL void (*GL_APIENTRY glVertexAttribI4iv)(GLuint index, const GLint *v);
  282. GL_APICALL void (*GL_APIENTRY glVertexAttribI4uiv)(GLuint index,
  283. const GLuint *v);
  284. GL_APICALL void (*GL_APIENTRY glGetUniformuiv)(GLuint program, GLint location,
  285. GLuint *params);
  286. GL_APICALL GLint (*GL_APIENTRY glGetFragDataLocation)(GLuint program,
  287. const GLchar *name);
  288. GL_APICALL void (*GL_APIENTRY glUniform1ui)(GLint location, GLuint v0);
  289. GL_APICALL void (*GL_APIENTRY glUniform2ui)(GLint location, GLuint v0,
  290. GLuint v1);
  291. GL_APICALL void (*GL_APIENTRY glUniform3ui)(GLint location, GLuint v0,
  292. GLuint v1, GLuint v2);
  293. GL_APICALL void (*GL_APIENTRY glUniform4ui)(GLint location, GLuint v0,
  294. GLuint v1, GLuint v2, GLuint v3);
  295. GL_APICALL void (*GL_APIENTRY glUniform1uiv)(GLint location, GLsizei count,
  296. const GLuint *value);
  297. GL_APICALL void (*GL_APIENTRY glUniform2uiv)(GLint location, GLsizei count,
  298. const GLuint *value);
  299. GL_APICALL void (*GL_APIENTRY glUniform3uiv)(GLint location, GLsizei count,
  300. const GLuint *value);
  301. GL_APICALL void (*GL_APIENTRY glUniform4uiv)(GLint location, GLsizei count,
  302. const GLuint *value);
  303. GL_APICALL void (*GL_APIENTRY glClearBufferiv)(GLenum buffer, GLint drawbuffer,
  304. const GLint *value);
  305. GL_APICALL void (*GL_APIENTRY glClearBufferuiv)(GLenum buffer, GLint drawbuffer,
  306. const GLuint *value);
  307. GL_APICALL void (*GL_APIENTRY glClearBufferfv)(GLenum buffer, GLint drawbuffer,
  308. const GLfloat *value);
  309. GL_APICALL void (*GL_APIENTRY glClearBufferfi)(GLenum buffer, GLint drawbuffer,
  310. GLfloat depth, GLint stencil);
  311. GL_APICALL const GLubyte *(*GL_APIENTRY glGetStringi)(GLenum name,
  312. GLuint index);
  313. GL_APICALL void (*GL_APIENTRY glCopyBufferSubData)(GLenum readTarget,
  314. GLenum writeTarget,
  315. GLintptr readOffset,
  316. GLintptr writeOffset,
  317. GLsizeiptr size);
  318. GL_APICALL void (*GL_APIENTRY glGetUniformIndices)(
  319. GLuint program, GLsizei uniformCount, const GLchar *const *uniformNames,
  320. GLuint *uniformIndices);
  321. GL_APICALL void (*GL_APIENTRY glGetActiveUniformsiv)(
  322. GLuint program, GLsizei uniformCount, const GLuint *uniformIndices,
  323. GLenum pname, GLint *params);
  324. GL_APICALL GLuint (*GL_APIENTRY glGetUniformBlockIndex)(
  325. GLuint program, const GLchar *uniformBlockName);
  326. GL_APICALL void (*GL_APIENTRY glGetActiveUniformBlockiv)(
  327. GLuint program, GLuint uniformBlockIndex, GLenum pname, GLint *params);
  328. GL_APICALL void (*GL_APIENTRY glGetActiveUniformBlockName)(
  329. GLuint program, GLuint uniformBlockIndex, GLsizei bufSize, GLsizei *length,
  330. GLchar *uniformBlockName);
  331. GL_APICALL void (*GL_APIENTRY glUniformBlockBinding)(
  332. GLuint program, GLuint uniformBlockIndex, GLuint uniformBlockBinding);
  333. GL_APICALL void (*GL_APIENTRY glDrawArraysInstanced)(GLenum mode, GLint first,
  334. GLsizei count,
  335. GLsizei instanceCount);
  336. GL_APICALL void (*GL_APIENTRY glDrawElementsInstanced)(GLenum mode,
  337. GLsizei count,
  338. GLenum type,
  339. const GLvoid *indices,
  340. GLsizei instanceCount);
  341. GL_APICALL GLsync (*GL_APIENTRY glFenceSync)(GLenum condition,
  342. GLbitfield flags);
  343. GL_APICALL GLboolean (*GL_APIENTRY glIsSync)(GLsync sync);
  344. GL_APICALL void (*GL_APIENTRY glDeleteSync)(GLsync sync);
  345. GL_APICALL GLenum (*GL_APIENTRY glClientWaitSync)(GLsync sync, GLbitfield flags,
  346. GLuint64 timeout);
  347. GL_APICALL void (*GL_APIENTRY glWaitSync)(GLsync sync, GLbitfield flags,
  348. GLuint64 timeout);
  349. GL_APICALL void (*GL_APIENTRY glGetInteger64v)(GLenum pname, GLint64 *params);
  350. GL_APICALL void (*GL_APIENTRY glGetSynciv)(GLsync sync, GLenum pname,
  351. GLsizei bufSize, GLsizei *length,
  352. GLint *values);
  353. GL_APICALL void (*GL_APIENTRY glGetInteger64i_v)(GLenum target, GLuint index,
  354. GLint64 *data);
  355. GL_APICALL void (*GL_APIENTRY glGetBufferParameteri64v)(GLenum target,
  356. GLenum pname,
  357. GLint64 *params);
  358. GL_APICALL void (*GL_APIENTRY glGenSamplers)(GLsizei count, GLuint *samplers);
  359. GL_APICALL void (*GL_APIENTRY glDeleteSamplers)(GLsizei count,
  360. const GLuint *samplers);
  361. GL_APICALL GLboolean (*GL_APIENTRY glIsSampler)(GLuint sampler);
  362. GL_APICALL void (*GL_APIENTRY glBindSampler)(GLuint unit, GLuint sampler);
  363. GL_APICALL void (*GL_APIENTRY glSamplerParameteri)(GLuint sampler, GLenum pname,
  364. GLint param);
  365. GL_APICALL void (*GL_APIENTRY glSamplerParameteriv)(GLuint sampler,
  366. GLenum pname,
  367. const GLint *param);
  368. GL_APICALL void (*GL_APIENTRY glSamplerParameterf)(GLuint sampler, GLenum pname,
  369. GLfloat param);
  370. GL_APICALL void (*GL_APIENTRY glSamplerParameterfv)(GLuint sampler,
  371. GLenum pname,
  372. const GLfloat *param);
  373. GL_APICALL void (*GL_APIENTRY glGetSamplerParameteriv)(GLuint sampler,
  374. GLenum pname,
  375. GLint *params);
  376. GL_APICALL void (*GL_APIENTRY glGetSamplerParameterfv)(GLuint sampler,
  377. GLenum pname,
  378. GLfloat *params);
  379. GL_APICALL void (*GL_APIENTRY glVertexAttribDivisor)(GLuint index,
  380. GLuint divisor);
  381. GL_APICALL void (*GL_APIENTRY glBindTransformFeedback)(GLenum target,
  382. GLuint id);
  383. GL_APICALL void (*GL_APIENTRY glDeleteTransformFeedbacks)(GLsizei n,
  384. const GLuint *ids);
  385. GL_APICALL void (*GL_APIENTRY glGenTransformFeedbacks)(GLsizei n, GLuint *ids);
  386. GL_APICALL GLboolean (*GL_APIENTRY glIsTransformFeedback)(GLuint id);
  387. GL_APICALL void (*GL_APIENTRY glPauseTransformFeedback)(void);
  388. GL_APICALL void (*GL_APIENTRY glResumeTransformFeedback)(void);
  389. GL_APICALL void (*GL_APIENTRY glGetProgramBinary)(GLuint program,
  390. GLsizei bufSize,
  391. GLsizei *length,
  392. GLenum *binaryFormat,
  393. GLvoid *binary);
  394. GL_APICALL void (*GL_APIENTRY glProgramBinary)(GLuint program,
  395. GLenum binaryFormat,
  396. const GLvoid *binary,
  397. GLsizei length);
  398. GL_APICALL void (*GL_APIENTRY glProgramParameteri)(GLuint program, GLenum pname,
  399. GLint value);
  400. GL_APICALL void (*GL_APIENTRY glInvalidateFramebuffer)(
  401. GLenum target, GLsizei numAttachments, const GLenum *attachments);
  402. GL_APICALL void (*GL_APIENTRY glInvalidateSubFramebuffer)(
  403. GLenum target, GLsizei numAttachments, const GLenum *attachments, GLint x,
  404. GLint y, GLsizei width, GLsizei height);
  405. GL_APICALL void (*GL_APIENTRY glTexStorage2D)(GLenum target, GLsizei levels,
  406. GLenum internalformat,
  407. GLsizei width, GLsizei height);
  408. GL_APICALL void (*GL_APIENTRY glTexStorage3D)(GLenum target, GLsizei levels,
  409. GLenum internalformat,
  410. GLsizei width, GLsizei height,
  411. GLsizei depth);
  412. GL_APICALL void (*GL_APIENTRY glGetInternalformativ)(GLenum target,
  413. GLenum internalformat,
  414. GLenum pname,
  415. GLsizei bufSize,
  416. GLint *params);