PageRenderTime 77ms CodeModel.GetById 41ms RepoModel.GetById 1ms app.codeStats 1ms

/src/cinder/linux/gl_es_load.cpp

https://github.com/paulhoux/Cinder
C++ | 1487 lines | 1344 code | 75 blank | 68 comment | 54 complexity | 52d0b583a85f295c89b196286435a071 MD5 | raw file
Possible License(s): GPL-3.0

Large files files are truncated, but you can click here to view the full file

  1. /*
  2. Copyright (c) 2015, The Cinder Project, All rights reserved.
  3. This code is intended for use with the Cinder C++ library: http://libcinder.org
  4. Redistribution and use in source and binary forms, with or without modification, are permitted provided that
  5. the following conditions are met:
  6. * Redistributions of source code must retain the above copyright notice, this list of conditions and
  7. the following disclaimer.
  8. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
  9. the following disclaimer in the documentation and/or other materials provided with the distribution.
  10. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED
  11. WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
  12. PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
  13. ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
  14. TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
  15. HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
  16. NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
  17. POSSIBILITY OF SUCH DAMAGE.
  18. */
  19. #include "cinder/gl/platform.h"
  20. #include "cinder/linux/gl_es_load.h"
  21. #include <algorithm>
  22. #include <cctype>
  23. #include <iostream>
  24. #include <sstream>
  25. #include <string>
  26. #if defined( CINDER_ANDROID )
  27. #include <android/log.h>
  28. #endif
  29. // -----------------------------------------------------------------------------
  30. // iOS
  31. // -----------------------------------------------------------------------------
  32. #if defined( CINDER_COCOA_TOUCH )
  33. // Nothing for now
  34. // -----------------------------------------------------------------------------
  35. // Android and Linux
  36. // -----------------------------------------------------------------------------
  37. #elif defined( CINDER_ANDROID ) || defined( CINDER_LINUX )
  38. static bool hasExtension( const std::string& extName );
  39. static void* loadEglProc( const std::string& procName ) ;
  40. static void clearLoadCount();
  41. static uint32_t getLoadCount();
  42. #define _GL_ES_LOAD_DEBUG_
  43. static void _dbg_out( const std::string& s )
  44. {
  45. #if defined( _GL_ES_LOAD_DEBUG_ )
  46. #if defined( CINDER_ANDROID )
  47. __android_log_print( ANDROID_LOG_INFO, "cinder:gl_es_load", s.c_str() );
  48. #elif defined( CINDER_LINUX )
  49. std::cout << s << std::endl;
  50. #endif
  51. #endif
  52. }
  53. #define DEBUG( STRM ) \
  54. { \
  55. std::stringstream tmpss; \
  56. tmpss << STRM; \
  57. _dbg_out( tmpss.str() ); \
  58. }
  59. #define EXT_QUOTE_STR( STR ) \
  60. #STR
  61. // ----------------------------------------------------------------------------
  62. // OpenGL ES 3.0
  63. // ----------------------------------------------------------------------------
  64. #if defined( CINDER_LINUX ) && ( CINDER_GL_ES_VERSION >= CINDER_GL_ES_VERSION_3 )
  65. PFNGLREADBUFFERPROC fnptr_ci_glReadBuffer = nullptr;
  66. PFNGLDRAWRANGEELEMENTSPROC fnptr_ci_glDrawRangeElements = nullptr;
  67. PFNGLTEXIMAGE3DPROC fnptr_ci_glTexImage3D = nullptr;
  68. PFNGLTEXSUBIMAGE3DPROC fnptr_ci_glTexSubImage3D = nullptr;
  69. PFNGLCOPYTEXSUBIMAGE3DPROC fnptr_ci_glCopyTexSubImage3D = nullptr;
  70. PFNGLCOMPRESSEDTEXIMAGE3DPROC fnptr_ci_glCompressedTexImage3D = nullptr;
  71. PFNGLCOMPRESSEDTEXSUBIMAGE3DPROC fnptr_ci_glCompressedTexSubImage3D = nullptr;
  72. PFNGLGENQUERIESPROC fnptr_ci_glGenQueries = nullptr;
  73. PFNGLDELETEQUERIESPROC fnptr_ci_glDeleteQueries = nullptr;
  74. PFNGLISQUERYPROC fnptr_ci_glIsQuery = nullptr;
  75. PFNGLBEGINQUERYPROC fnptr_ci_glBeginQuery = nullptr;
  76. PFNGLENDQUERYPROC fnptr_ci_glEndQuery = nullptr;
  77. PFNGLGETQUERYIVPROC fnptr_ci_glGetQueryiv = nullptr;
  78. PFNGLGETQUERYOBJECTUIVPROC fnptr_ci_glGetQueryObjectuiv = nullptr;
  79. PFNGLUNMAPBUFFERPROC fnptr_ci_glUnmapBuffer = nullptr;
  80. PFNGLGETBUFFERPOINTERVPROC fnptr_ci_glGetBufferPointerv = nullptr;
  81. PFNGLDRAWBUFFERSPROC fnptr_ci_glDrawBuffers = nullptr;
  82. PFNGLUNIFORMMATRIX2X3FVPROC fnptr_ci_glUniformMatrix2x3fv = nullptr;
  83. PFNGLUNIFORMMATRIX3X2FVPROC fnptr_ci_glUniformMatrix3x2fv = nullptr;
  84. PFNGLUNIFORMMATRIX2X4FVPROC fnptr_ci_glUniformMatrix2x4fv = nullptr;
  85. PFNGLUNIFORMMATRIX4X2FVPROC fnptr_ci_glUniformMatrix4x2fv = nullptr;
  86. PFNGLUNIFORMMATRIX3X4FVPROC fnptr_ci_glUniformMatrix3x4fv = nullptr;
  87. PFNGLUNIFORMMATRIX4X3FVPROC fnptr_ci_glUniformMatrix4x3fv = nullptr;
  88. PFNGLBLITFRAMEBUFFERPROC fnptr_ci_glBlitFramebuffer = nullptr;
  89. PFNGLRENDERBUFFERSTORAGEMULTISAMPLEPROC fnptr_ci_glRenderbufferStorageMultisample = nullptr;
  90. PFNGLFRAMEBUFFERTEXTURELAYERPROC fnptr_ci_glFramebufferTextureLayer = nullptr;
  91. PFNGLMAPBUFFERRANGEPROC fnptr_ci_glMapBufferRange = nullptr;
  92. PFNGLFLUSHMAPPEDBUFFERRANGEPROC fnptr_ci_glFlushMappedBufferRange = nullptr;
  93. PFNGLBINDVERTEXARRAYPROC fnptr_ci_glBindVertexArray = nullptr;
  94. PFNGLDELETEVERTEXARRAYSPROC fnptr_ci_glDeleteVertexArrays = nullptr;
  95. PFNGLGENVERTEXARRAYSPROC fnptr_ci_glGenVertexArrays = nullptr;
  96. PFNGLISVERTEXARRAYPROC fnptr_ci_glIsVertexArray = nullptr;
  97. PFNGLGETINTEGERI_VPROC fnptr_ci_glGetIntegeri_v = nullptr;
  98. PFNGLBEGINTRANSFORMFEEDBACKPROC fnptr_ci_glBeginTransformFeedback = nullptr;
  99. PFNGLENDTRANSFORMFEEDBACKPROC fnptr_ci_glEndTransformFeedback = nullptr;
  100. PFNGLBINDBUFFERRANGEPROC fnptr_ci_glBindBufferRange = nullptr;
  101. PFNGLBINDBUFFERBASEPROC fnptr_ci_glBindBufferBase = nullptr;
  102. PFNGLTRANSFORMFEEDBACKVARYINGSPROC fnptr_ci_glTransformFeedbackVaryings = nullptr;
  103. PFNGLGETTRANSFORMFEEDBACKVARYINGPROC fnptr_ci_glGetTransformFeedbackVarying = nullptr;
  104. PFNGLVERTEXATTRIBIPOINTERPROC fnptr_ci_glVertexAttribIPointer = nullptr;
  105. PFNGLGETVERTEXATTRIBIIVPROC fnptr_ci_glGetVertexAttribIiv = nullptr;
  106. PFNGLGETVERTEXATTRIBIUIVPROC fnptr_ci_glGetVertexAttribIuiv = nullptr;
  107. PFNGLVERTEXATTRIBI4IPROC fnptr_ci_glVertexAttribI4i = nullptr;
  108. PFNGLVERTEXATTRIBI4UIPROC fnptr_ci_glVertexAttribI4ui = nullptr;
  109. PFNGLVERTEXATTRIBI4IVPROC fnptr_ci_glVertexAttribI4iv = nullptr;
  110. PFNGLVERTEXATTRIBI4UIVPROC fnptr_ci_glVertexAttribI4uiv = nullptr;
  111. PFNGLGETUNIFORMUIVPROC fnptr_ci_glGetUniformuiv = nullptr;
  112. PFNGLGETFRAGDATALOCATIONPROC fnptr_ci_glGetFragDataLocation = nullptr;
  113. PFNGLUNIFORM1UIPROC fnptr_ci_glUniform1ui = nullptr;
  114. PFNGLUNIFORM2UIPROC fnptr_ci_glUniform2ui = nullptr;
  115. PFNGLUNIFORM3UIPROC fnptr_ci_glUniform3ui = nullptr;
  116. PFNGLUNIFORM4UIPROC fnptr_ci_glUniform4ui = nullptr;
  117. PFNGLUNIFORM1UIVPROC fnptr_ci_glUniform1uiv = nullptr;
  118. PFNGLUNIFORM2UIVPROC fnptr_ci_glUniform2uiv = nullptr;
  119. PFNGLUNIFORM3UIVPROC fnptr_ci_glUniform3uiv = nullptr;
  120. PFNGLUNIFORM4UIVPROC fnptr_ci_glUniform4uiv = nullptr;
  121. PFNGLCLEARBUFFERIVPROC fnptr_ci_glClearBufferiv = nullptr;
  122. PFNGLCLEARBUFFERUIVPROC fnptr_ci_glClearBufferuiv = nullptr;
  123. PFNGLCLEARBUFFERFVPROC fnptr_ci_glClearBufferfv = nullptr;
  124. PFNGLCLEARBUFFERFIPROC fnptr_ci_glClearBufferfi = nullptr;
  125. PFNGLGETSTRINGIPROC fnptr_ci_glGetStringi = nullptr;
  126. PFNGLCOPYBUFFERSUBDATAPROC fnptr_ci_glCopyBufferSubData = nullptr;
  127. PFNGLGETUNIFORMINDICESPROC fnptr_ci_glGetUniformIndices = nullptr;
  128. PFNGLGETACTIVEUNIFORMSIVPROC fnptr_ci_glGetActiveUniformsiv = nullptr;
  129. PFNGLGETUNIFORMBLOCKINDEXPROC fnptr_ci_glGetUniformBlockIndex = nullptr;
  130. PFNGLGETACTIVEUNIFORMBLOCKIVPROC fnptr_ci_glGetActiveUniformBlockiv = nullptr;
  131. PFNGLGETACTIVEUNIFORMBLOCKNAMEPROC fnptr_ci_glGetActiveUniformBlockName = nullptr;
  132. PFNGLUNIFORMBLOCKBINDINGPROC fnptr_ci_glUniformBlockBinding = nullptr;
  133. PFNGLDRAWARRAYSINSTANCEDPROC fnptr_ci_glDrawArraysInstanced = nullptr;
  134. PFNGLDRAWELEMENTSINSTANCEDPROC fnptr_ci_glDrawElementsInstanced = nullptr;
  135. PFNGLFENCESYNCPROC fnptr_ci_glFenceSync = nullptr;
  136. PFNGLISSYNCPROC fnptr_ci_glIsSync = nullptr;
  137. PFNGLDELETESYNCPROC fnptr_ci_glDeleteSync = nullptr;
  138. PFNGLCLIENTWAITSYNCPROC fnptr_ci_glClientWaitSync = nullptr;
  139. PFNGLWAITSYNCPROC fnptr_ci_glWaitSync = nullptr;
  140. PFNGLGETINTEGER64VPROC fnptr_ci_glGetInteger64v = nullptr;
  141. PFNGLGETSYNCIVPROC fnptr_ci_glGetSynciv = nullptr;
  142. PFNGLGETINTEGER64I_VPROC fnptr_ci_glGetInteger64i_v = nullptr;
  143. PFNGLGETBUFFERPARAMETERI64VPROC fnptr_ci_glGetBufferParameteri64v = nullptr;
  144. PFNGLGENSAMPLERSPROC fnptr_ci_glGenSamplers = nullptr;
  145. PFNGLDELETESAMPLERSPROC fnptr_ci_glDeleteSamplers = nullptr;
  146. PFNGLISSAMPLERPROC fnptr_ci_glIsSampler = nullptr;
  147. PFNGLBINDSAMPLERPROC fnptr_ci_glBindSampler = nullptr;
  148. PFNGLSAMPLERPARAMETERIPROC fnptr_ci_glSamplerParameteri = nullptr;
  149. PFNGLSAMPLERPARAMETERIVPROC fnptr_ci_glSamplerParameteriv = nullptr;
  150. PFNGLSAMPLERPARAMETERFPROC fnptr_ci_glSamplerParameterf = nullptr;
  151. PFNGLSAMPLERPARAMETERFVPROC fnptr_ci_glSamplerParameterfv = nullptr;
  152. PFNGLGETSAMPLERPARAMETERIVPROC fnptr_ci_glGetSamplerParameteriv = nullptr;
  153. PFNGLGETSAMPLERPARAMETERFVPROC fnptr_ci_glGetSamplerParameterfv = nullptr;
  154. PFNGLVERTEXATTRIBDIVISORPROC fnptr_ci_glVertexAttribDivisor = nullptr;
  155. PFNGLBINDTRANSFORMFEEDBACKPROC fnptr_ci_glBindTransformFeedback = nullptr;
  156. PFNGLDELETETRANSFORMFEEDBACKSPROC fnptr_ci_glDeleteTransformFeedbacks = nullptr;
  157. PFNGLGENTRANSFORMFEEDBACKSPROC fnptr_ci_glGenTransformFeedbacks = nullptr;
  158. PFNGLISTRANSFORMFEEDBACKPROC fnptr_ci_glIsTransformFeedback = nullptr;
  159. PFNGLPAUSETRANSFORMFEEDBACKPROC fnptr_ci_glPauseTransformFeedback = nullptr;
  160. PFNGLRESUMETRANSFORMFEEDBACKPROC fnptr_ci_glResumeTransformFeedback = nullptr;
  161. PFNGLGETPROGRAMBINARYPROC fnptr_ci_glGetProgramBinary = nullptr;
  162. PFNGLPROGRAMBINARYPROC fnptr_ci_glProgramBinary = nullptr;
  163. PFNGLPROGRAMPARAMETERIPROC fnptr_ci_glProgramParameteri = nullptr;
  164. PFNGLINVALIDATEFRAMEBUFFERPROC fnptr_ci_glInvalidateFramebuffer = nullptr;
  165. PFNGLINVALIDATESUBFRAMEBUFFERPROC fnptr_ci_glInvalidateSubFramebuffer = nullptr;
  166. PFNGLTEXSTORAGE2DPROC fnptr_ci_glTexStorage2D = nullptr;
  167. PFNGLTEXSTORAGE3DPROC fnptr_ci_glTexStorage3D = nullptr;
  168. PFNGLGETINTERNALFORMATIVPROC fnptr_ci_glGetInternalformativ = nullptr;
  169. void gl_es_3_0_load()
  170. {
  171. //DEBUG( "gl_es_3_0_load entered..." );
  172. clearLoadCount();
  173. fnptr_ci_glReadBuffer = (PFNGLREADBUFFERPROC)loadEglProc("glReadBuffer");
  174. fnptr_ci_glDrawRangeElements = (PFNGLDRAWRANGEELEMENTSPROC)loadEglProc("glDrawRangeElements");
  175. fnptr_ci_glTexImage3D = (PFNGLTEXIMAGE3DPROC)loadEglProc("glTexImage3D");
  176. fnptr_ci_glTexSubImage3D = (PFNGLTEXSUBIMAGE3DPROC)loadEglProc("glTexSubImage3D");
  177. fnptr_ci_glCopyTexSubImage3D = (PFNGLCOPYTEXSUBIMAGE3DPROC)loadEglProc("glCopyTexSubImage3D");
  178. fnptr_ci_glCompressedTexImage3D = (PFNGLCOMPRESSEDTEXIMAGE3DPROC)loadEglProc("glCompressedTexImage3D");
  179. fnptr_ci_glCompressedTexSubImage3D = (PFNGLCOMPRESSEDTEXSUBIMAGE3DPROC)loadEglProc("glCompressedTexSubImage3D");
  180. fnptr_ci_glGenQueries = (PFNGLGENQUERIESPROC)loadEglProc("glGenQueries");
  181. fnptr_ci_glDeleteQueries = (PFNGLDELETEQUERIESPROC)loadEglProc("glDeleteQueries");
  182. fnptr_ci_glIsQuery = (PFNGLISQUERYPROC)loadEglProc("glIsQuery");
  183. fnptr_ci_glBeginQuery = (PFNGLBEGINQUERYPROC)loadEglProc("glBeginQuery");
  184. fnptr_ci_glEndQuery = (PFNGLENDQUERYPROC)loadEglProc("glEndQuery");
  185. fnptr_ci_glGetQueryiv = (PFNGLGETQUERYIVPROC)loadEglProc("glGetQueryiv");
  186. fnptr_ci_glGetQueryObjectuiv = (PFNGLGETQUERYOBJECTUIVPROC)loadEglProc("glGetQueryObjectuiv");
  187. fnptr_ci_glUnmapBuffer = (PFNGLUNMAPBUFFERPROC)loadEglProc("glUnmapBuffer");
  188. fnptr_ci_glGetBufferPointerv = (PFNGLGETBUFFERPOINTERVPROC)loadEglProc("glGetBufferPointerv");
  189. fnptr_ci_glDrawBuffers = (PFNGLDRAWBUFFERSPROC)loadEglProc("glDrawBuffers");
  190. fnptr_ci_glUniformMatrix2x3fv = (PFNGLUNIFORMMATRIX2X3FVPROC)loadEglProc("glUniformMatrix2x3fv");
  191. fnptr_ci_glUniformMatrix3x2fv = (PFNGLUNIFORMMATRIX3X2FVPROC)loadEglProc("glUniformMatrix3x2fv");
  192. fnptr_ci_glUniformMatrix2x4fv = (PFNGLUNIFORMMATRIX2X4FVPROC)loadEglProc("glUniformMatrix2x4fv");
  193. fnptr_ci_glUniformMatrix4x2fv = (PFNGLUNIFORMMATRIX4X2FVPROC)loadEglProc("glUniformMatrix4x2fv");
  194. fnptr_ci_glUniformMatrix3x4fv = (PFNGLUNIFORMMATRIX3X4FVPROC)loadEglProc("glUniformMatrix3x4fv");
  195. fnptr_ci_glUniformMatrix4x3fv = (PFNGLUNIFORMMATRIX4X3FVPROC)loadEglProc("glUniformMatrix4x3fv");
  196. fnptr_ci_glBlitFramebuffer = (PFNGLBLITFRAMEBUFFERPROC)loadEglProc("glBlitFramebuffer");
  197. fnptr_ci_glRenderbufferStorageMultisample = (PFNGLRENDERBUFFERSTORAGEMULTISAMPLEPROC)loadEglProc("glRenderbufferStorageMultisample");
  198. fnptr_ci_glFramebufferTextureLayer = (PFNGLFRAMEBUFFERTEXTURELAYERPROC)loadEglProc("glFramebufferTextureLayer");
  199. fnptr_ci_glMapBufferRange = (PFNGLMAPBUFFERRANGEPROC)loadEglProc("glMapBufferRange");
  200. fnptr_ci_glFlushMappedBufferRange = (PFNGLFLUSHMAPPEDBUFFERRANGEPROC)loadEglProc("glFlushMappedBufferRange");
  201. fnptr_ci_glBindVertexArray = (PFNGLBINDVERTEXARRAYPROC)loadEglProc("glBindVertexArray");
  202. fnptr_ci_glDeleteVertexArrays = (PFNGLDELETEVERTEXARRAYSPROC)loadEglProc("glDeleteVertexArrays");
  203. fnptr_ci_glGenVertexArrays = (PFNGLGENVERTEXARRAYSPROC)loadEglProc("glGenVertexArrays");
  204. fnptr_ci_glIsVertexArray = (PFNGLISVERTEXARRAYPROC)loadEglProc("glIsVertexArray");
  205. fnptr_ci_glGetIntegeri_v = (PFNGLGETINTEGERI_VPROC)loadEglProc("glGetIntegeri_v");
  206. fnptr_ci_glBeginTransformFeedback = (PFNGLBEGINTRANSFORMFEEDBACKPROC)loadEglProc("glBeginTransformFeedback");
  207. fnptr_ci_glEndTransformFeedback = (PFNGLENDTRANSFORMFEEDBACKPROC)loadEglProc("glEndTransformFeedback");
  208. fnptr_ci_glBindBufferRange = (PFNGLBINDBUFFERRANGEPROC)loadEglProc("glBindBufferRange");
  209. fnptr_ci_glBindBufferBase = (PFNGLBINDBUFFERBASEPROC)loadEglProc("glBindBufferBase");
  210. fnptr_ci_glTransformFeedbackVaryings = (PFNGLTRANSFORMFEEDBACKVARYINGSPROC)loadEglProc("glTransformFeedbackVaryings");
  211. fnptr_ci_glGetTransformFeedbackVarying = (PFNGLGETTRANSFORMFEEDBACKVARYINGPROC)loadEglProc("glGetTransformFeedbackVarying");
  212. fnptr_ci_glVertexAttribIPointer = (PFNGLVERTEXATTRIBIPOINTERPROC)loadEglProc("glVertexAttribIPointer");
  213. fnptr_ci_glGetVertexAttribIiv = (PFNGLGETVERTEXATTRIBIIVPROC)loadEglProc("glGetVertexAttribIiv");
  214. fnptr_ci_glGetVertexAttribIuiv = (PFNGLGETVERTEXATTRIBIUIVPROC)loadEglProc("glGetVertexAttribIuiv");
  215. fnptr_ci_glVertexAttribI4i = (PFNGLVERTEXATTRIBI4IPROC)loadEglProc("glVertexAttribI4i");
  216. fnptr_ci_glVertexAttribI4ui = (PFNGLVERTEXATTRIBI4UIPROC)loadEglProc("glVertexAttribI4ui");
  217. fnptr_ci_glVertexAttribI4iv = (PFNGLVERTEXATTRIBI4IVPROC)loadEglProc("glVertexAttribI4iv");
  218. fnptr_ci_glVertexAttribI4uiv = (PFNGLVERTEXATTRIBI4UIVPROC)loadEglProc("glVertexAttribI4uiv");
  219. fnptr_ci_glGetUniformuiv = (PFNGLGETUNIFORMUIVPROC)loadEglProc("glGetUniformuiv");
  220. fnptr_ci_glGetFragDataLocation = (PFNGLGETFRAGDATALOCATIONPROC)loadEglProc("glGetFragDataLocation");
  221. fnptr_ci_glUniform1ui = (PFNGLUNIFORM1UIPROC)loadEglProc("glUniform1ui");
  222. fnptr_ci_glUniform2ui = (PFNGLUNIFORM2UIPROC)loadEglProc("glUniform2ui");
  223. fnptr_ci_glUniform3ui = (PFNGLUNIFORM3UIPROC)loadEglProc("glUniform3ui");
  224. fnptr_ci_glUniform4ui = (PFNGLUNIFORM4UIPROC)loadEglProc("glUniform4ui");
  225. fnptr_ci_glUniform1uiv = (PFNGLUNIFORM1UIVPROC)loadEglProc("glUniform1uiv");
  226. fnptr_ci_glUniform2uiv = (PFNGLUNIFORM2UIVPROC)loadEglProc("glUniform2uiv");
  227. fnptr_ci_glUniform3uiv = (PFNGLUNIFORM3UIVPROC)loadEglProc("glUniform3uiv");
  228. fnptr_ci_glUniform4uiv = (PFNGLUNIFORM4UIVPROC)loadEglProc("glUniform4uiv");
  229. fnptr_ci_glClearBufferiv = (PFNGLCLEARBUFFERIVPROC)loadEglProc("glClearBufferiv");
  230. fnptr_ci_glClearBufferuiv = (PFNGLCLEARBUFFERUIVPROC)loadEglProc("glClearBufferuiv");
  231. fnptr_ci_glClearBufferfv = (PFNGLCLEARBUFFERFVPROC)loadEglProc("glClearBufferfv");
  232. fnptr_ci_glClearBufferfi = (PFNGLCLEARBUFFERFIPROC)loadEglProc("glClearBufferfi");
  233. fnptr_ci_glGetStringi = (PFNGLGETSTRINGIPROC)loadEglProc("glGetStringi");
  234. fnptr_ci_glCopyBufferSubData = (PFNGLCOPYBUFFERSUBDATAPROC)loadEglProc("glCopyBufferSubData");
  235. fnptr_ci_glGetUniformIndices = (PFNGLGETUNIFORMINDICESPROC)loadEglProc("glGetUniformIndices");
  236. fnptr_ci_glGetActiveUniformsiv = (PFNGLGETACTIVEUNIFORMSIVPROC)loadEglProc("glGetActiveUniformsiv");
  237. fnptr_ci_glGetUniformBlockIndex = (PFNGLGETUNIFORMBLOCKINDEXPROC)loadEglProc("glGetUniformBlockIndex");
  238. fnptr_ci_glGetActiveUniformBlockiv = (PFNGLGETACTIVEUNIFORMBLOCKIVPROC)loadEglProc("glGetActiveUniformBlockiv");
  239. fnptr_ci_glGetActiveUniformBlockName = (PFNGLGETACTIVEUNIFORMBLOCKNAMEPROC)loadEglProc("glGetActiveUniformBlockName");
  240. fnptr_ci_glUniformBlockBinding = (PFNGLUNIFORMBLOCKBINDINGPROC)loadEglProc("glUniformBlockBinding");
  241. fnptr_ci_glDrawArraysInstanced = (PFNGLDRAWARRAYSINSTANCEDPROC)loadEglProc("glDrawArraysInstanced");
  242. fnptr_ci_glDrawElementsInstanced = (PFNGLDRAWELEMENTSINSTANCEDPROC)loadEglProc("glDrawElementsInstanced");
  243. fnptr_ci_glFenceSync = (PFNGLFENCESYNCPROC)loadEglProc("glFenceSync");
  244. fnptr_ci_glIsSync = (PFNGLISSYNCPROC)loadEglProc("glIsSync");
  245. fnptr_ci_glDeleteSync = (PFNGLDELETESYNCPROC)loadEglProc("glDeleteSync");
  246. fnptr_ci_glClientWaitSync = (PFNGLCLIENTWAITSYNCPROC)loadEglProc("glClientWaitSync");
  247. fnptr_ci_glWaitSync = (PFNGLWAITSYNCPROC)loadEglProc("glWaitSync");
  248. fnptr_ci_glGetInteger64v = (PFNGLGETINTEGER64VPROC)loadEglProc("glGetInteger64v");
  249. fnptr_ci_glGetSynciv = (PFNGLGETSYNCIVPROC)loadEglProc("glGetSynciv");
  250. fnptr_ci_glGetInteger64i_v = (PFNGLGETINTEGER64I_VPROC)loadEglProc("glGetInteger64i_v");
  251. fnptr_ci_glGetBufferParameteri64v = (PFNGLGETBUFFERPARAMETERI64VPROC)loadEglProc("glGetBufferParameteri64v");
  252. fnptr_ci_glGenSamplers = (PFNGLGENSAMPLERSPROC)loadEglProc("glGenSamplers");
  253. fnptr_ci_glDeleteSamplers = (PFNGLDELETESAMPLERSPROC)loadEglProc("glDeleteSamplers");
  254. fnptr_ci_glIsSampler = (PFNGLISSAMPLERPROC)loadEglProc("glIsSampler");
  255. fnptr_ci_glBindSampler = (PFNGLBINDSAMPLERPROC)loadEglProc("glBindSampler");
  256. fnptr_ci_glSamplerParameteri = (PFNGLSAMPLERPARAMETERIPROC)loadEglProc("glSamplerParameteri");
  257. fnptr_ci_glSamplerParameteriv = (PFNGLSAMPLERPARAMETERIVPROC)loadEglProc("glSamplerParameteriv");
  258. fnptr_ci_glSamplerParameterf = (PFNGLSAMPLERPARAMETERFPROC)loadEglProc("glSamplerParameterf");
  259. fnptr_ci_glSamplerParameterfv = (PFNGLSAMPLERPARAMETERFVPROC)loadEglProc("glSamplerParameterfv");
  260. fnptr_ci_glGetSamplerParameteriv = (PFNGLGETSAMPLERPARAMETERIVPROC)loadEglProc("glGetSamplerParameteriv");
  261. fnptr_ci_glGetSamplerParameterfv = (PFNGLGETSAMPLERPARAMETERFVPROC)loadEglProc("glGetSamplerParameterfv");
  262. fnptr_ci_glVertexAttribDivisor = (PFNGLVERTEXATTRIBDIVISORPROC)loadEglProc("glVertexAttribDivisor");
  263. fnptr_ci_glBindTransformFeedback = (PFNGLBINDTRANSFORMFEEDBACKPROC)loadEglProc("glBindTransformFeedback");
  264. fnptr_ci_glDeleteTransformFeedbacks = (PFNGLDELETETRANSFORMFEEDBACKSPROC)loadEglProc("glDeleteTransformFeedbacks");
  265. fnptr_ci_glGenTransformFeedbacks = (PFNGLGENTRANSFORMFEEDBACKSPROC)loadEglProc("glGenTransformFeedbacks");
  266. fnptr_ci_glIsTransformFeedback = (PFNGLISTRANSFORMFEEDBACKPROC)loadEglProc("glIsTransformFeedback");
  267. fnptr_ci_glPauseTransformFeedback = (PFNGLPAUSETRANSFORMFEEDBACKPROC)loadEglProc("glPauseTransformFeedback");
  268. fnptr_ci_glResumeTransformFeedback = (PFNGLRESUMETRANSFORMFEEDBACKPROC)loadEglProc("glResumeTransformFeedback");
  269. fnptr_ci_glGetProgramBinary = (PFNGLGETPROGRAMBINARYPROC)loadEglProc("glGetProgramBinary");
  270. fnptr_ci_glProgramBinary = (PFNGLPROGRAMBINARYPROC)loadEglProc("glProgramBinary");
  271. fnptr_ci_glProgramParameteri = (PFNGLPROGRAMPARAMETERIPROC)loadEglProc("glProgramParameteri");
  272. fnptr_ci_glInvalidateFramebuffer = (PFNGLINVALIDATEFRAMEBUFFERPROC)loadEglProc("glInvalidateFramebuffer");
  273. fnptr_ci_glInvalidateSubFramebuffer = (PFNGLINVALIDATESUBFRAMEBUFFERPROC)loadEglProc("glInvalidateSubFramebuffer");
  274. fnptr_ci_glTexStorage2D = (PFNGLTEXSTORAGE2DPROC)loadEglProc("glTexStorage2D");
  275. fnptr_ci_glTexStorage3D = (PFNGLTEXSTORAGE3DPROC)loadEglProc("glTexStorage3D");
  276. fnptr_ci_glGetInternalformativ = (PFNGLGETINTERNALFORMATIVPROC)loadEglProc("glGetInternalformativ");
  277. DEBUG( "gl_es_3_0_load: SUCCESSFUL! | " << getLoadCount() << " procs loaded");
  278. }
  279. #endif // defined( CINDER_LINUX ) && ( CINDER_GL_ES_VERSION >= CINDER_GL_ES_VERSION_3 )
  280. // ----------------------------------------------------------------------------
  281. // OpenGL ES 3.1
  282. // ----------------------------------------------------------------------------
  283. #if defined( CINDER_LINUX ) && ( CINDER_GL_ES_VERSION >= CINDER_GL_ES_VERSION_3_1 )
  284. PFNGLDISPATCHCOMPUTEPROC fnptr_ci_glDispatchCompute = nullptr;
  285. PFNGLDISPATCHCOMPUTEINDIRECTPROC fnptr_ci_glDispatchComputeIndirect = nullptr;
  286. PFNGLDRAWARRAYSINDIRECTPROC fnptr_ci_glDrawArraysIndirect = nullptr;
  287. PFNGLDRAWELEMENTSINDIRECTPROC fnptr_ci_glDrawElementsIndirect = nullptr;
  288. PFNGLFRAMEBUFFERPARAMETERIPROC fnptr_ci_glFramebufferParameteri = nullptr;
  289. PFNGLGETFRAMEBUFFERPARAMETERIVPROC fnptr_ci_glGetFramebufferParameteriv = nullptr;
  290. PFNGLGETPROGRAMINTERFACEIVPROC fnptr_ci_glGetProgramInterfaceiv = nullptr;
  291. PFNGLGETPROGRAMRESOURCEINDEXPROC fnptr_ci_glGetProgramResourceIndex = nullptr;
  292. PFNGLGETPROGRAMRESOURCENAMEPROC fnptr_ci_glGetProgramResourceName = nullptr;
  293. PFNGLGETPROGRAMRESOURCEIVPROC fnptr_ci_glGetProgramResourceiv = nullptr;
  294. PFNGLGETPROGRAMRESOURCELOCATIONPROC fnptr_ci_glGetProgramResourceLocation = nullptr;
  295. PFNGLUSEPROGRAMSTAGESPROC fnptr_ci_glUseProgramStages = nullptr;
  296. PFNGLACTIVESHADERPROGRAMPROC fnptr_ci_glActiveShaderProgram = nullptr;
  297. PFNGLCREATESHADERPROGRAMVPROC fnptr_ci_glCreateShaderProgramv = nullptr;
  298. PFNGLBINDPROGRAMPIPELINEPROC fnptr_ci_glBindProgramPipeline = nullptr;
  299. PFNGLDELETEPROGRAMPIPELINESPROC fnptr_ci_glDeleteProgramPipelines = nullptr;
  300. PFNGLGENPROGRAMPIPELINESPROC fnptr_ci_glGenProgramPipelines = nullptr;
  301. PFNGLISPROGRAMPIPELINEPROC fnptr_ci_glIsProgramPipeline = nullptr;
  302. PFNGLGETPROGRAMPIPELINEIVPROC fnptr_ci_glGetProgramPipelineiv = nullptr;
  303. PFNGLPROGRAMUNIFORM1IPROC fnptr_ci_glProgramUniform1i = nullptr;
  304. PFNGLPROGRAMUNIFORM2IPROC fnptr_ci_glProgramUniform2i = nullptr;
  305. PFNGLPROGRAMUNIFORM3IPROC fnptr_ci_glProgramUniform3i = nullptr;
  306. PFNGLPROGRAMUNIFORM4IPROC fnptr_ci_glProgramUniform4i = nullptr;
  307. PFNGLPROGRAMUNIFORM1UIPROC fnptr_ci_glProgramUniform1ui = nullptr;
  308. PFNGLPROGRAMUNIFORM2UIPROC fnptr_ci_glProgramUniform2ui = nullptr;
  309. PFNGLPROGRAMUNIFORM3UIPROC fnptr_ci_glProgramUniform3ui = nullptr;
  310. PFNGLPROGRAMUNIFORM4UIPROC fnptr_ci_glProgramUniform4ui = nullptr;
  311. PFNGLPROGRAMUNIFORM1FPROC fnptr_ci_glProgramUniform1f = nullptr;
  312. PFNGLPROGRAMUNIFORM2FPROC fnptr_ci_glProgramUniform2f = nullptr;
  313. PFNGLPROGRAMUNIFORM3FPROC fnptr_ci_glProgramUniform3f = nullptr;
  314. PFNGLPROGRAMUNIFORM4FPROC fnptr_ci_glProgramUniform4f = nullptr;
  315. PFNGLPROGRAMUNIFORM1IVPROC fnptr_ci_glProgramUniform1iv = nullptr;
  316. PFNGLPROGRAMUNIFORM2IVPROC fnptr_ci_glProgramUniform2iv = nullptr;
  317. PFNGLPROGRAMUNIFORM3IVPROC fnptr_ci_glProgramUniform3iv = nullptr;
  318. PFNGLPROGRAMUNIFORM4IVPROC fnptr_ci_glProgramUniform4iv = nullptr;
  319. PFNGLPROGRAMUNIFORM1UIVPROC fnptr_ci_glProgramUniform1uiv = nullptr;
  320. PFNGLPROGRAMUNIFORM2UIVPROC fnptr_ci_glProgramUniform2uiv = nullptr;
  321. PFNGLPROGRAMUNIFORM3UIVPROC fnptr_ci_glProgramUniform3uiv = nullptr;
  322. PFNGLPROGRAMUNIFORM4UIVPROC fnptr_ci_glProgramUniform4uiv = nullptr;
  323. PFNGLPROGRAMUNIFORM1FVPROC fnptr_ci_glProgramUniform1fv = nullptr;
  324. PFNGLPROGRAMUNIFORM2FVPROC fnptr_ci_glProgramUniform2fv = nullptr;
  325. PFNGLPROGRAMUNIFORM3FVPROC fnptr_ci_glProgramUniform3fv = nullptr;
  326. PFNGLPROGRAMUNIFORM4FVPROC fnptr_ci_glProgramUniform4fv = nullptr;
  327. PFNGLPROGRAMUNIFORMMATRIX2FVPROC fnptr_ci_glProgramUniformMatrix2fv = nullptr;
  328. PFNGLPROGRAMUNIFORMMATRIX3FVPROC fnptr_ci_glProgramUniformMatrix3fv = nullptr;
  329. PFNGLPROGRAMUNIFORMMATRIX4FVPROC fnptr_ci_glProgramUniformMatrix4fv = nullptr;
  330. PFNGLPROGRAMUNIFORMMATRIX2X3FVPROC fnptr_ci_glProgramUniformMatrix2x3fv = nullptr;
  331. PFNGLPROGRAMUNIFORMMATRIX3X2FVPROC fnptr_ci_glProgramUniformMatrix3x2fv = nullptr;
  332. PFNGLPROGRAMUNIFORMMATRIX2X4FVPROC fnptr_ci_glProgramUniformMatrix2x4fv = nullptr;
  333. PFNGLPROGRAMUNIFORMMATRIX4X2FVPROC fnptr_ci_glProgramUniformMatrix4x2fv = nullptr;
  334. PFNGLPROGRAMUNIFORMMATRIX3X4FVPROC fnptr_ci_glProgramUniformMatrix3x4fv = nullptr;
  335. PFNGLPROGRAMUNIFORMMATRIX4X3FVPROC fnptr_ci_glProgramUniformMatrix4x3fv = nullptr;
  336. PFNGLVALIDATEPROGRAMPIPELINEPROC fnptr_ci_glValidateProgramPipeline = nullptr;
  337. PFNGLGETPROGRAMPIPELINEINFOLOGPROC fnptr_ci_glGetProgramPipelineInfoLog = nullptr;
  338. PFNGLBINDIMAGETEXTUREPROC fnptr_ci_glBindImageTexture = nullptr;
  339. PFNGLGETBOOLEANI_VPROC fnptr_ci_glGetBooleani_v = nullptr;
  340. PFNGLMEMORYBARRIERPROC fnptr_ci_glMemoryBarrier = nullptr;
  341. PFNGLMEMORYBARRIERBYREGIONPROC fnptr_ci_glMemoryBarrierByRegion = nullptr;
  342. PFNGLTEXSTORAGE2DMULTISAMPLEPROC fnptr_ci_glTexStorage2DMultisample = nullptr;
  343. PFNGLGETMULTISAMPLEFVPROC fnptr_ci_glGetMultisamplefv = nullptr;
  344. PFNGLSAMPLEMASKIPROC fnptr_ci_glSampleMaski = nullptr;
  345. PFNGLGETTEXLEVELPARAMETERIVPROC fnptr_ci_glGetTexLevelParameteriv = nullptr;
  346. PFNGLGETTEXLEVELPARAMETERFVPROC fnptr_ci_glGetTexLevelParameterfv = nullptr;
  347. PFNGLBINDVERTEXBUFFERPROC fnptr_ci_glBindVertexBuffer = nullptr;
  348. PFNGLVERTEXATTRIBFORMATPROC fnptr_ci_glVertexAttribFormat = nullptr;
  349. PFNGLVERTEXATTRIBIFORMATPROC fnptr_ci_glVertexAttribIFormat = nullptr;
  350. PFNGLVERTEXATTRIBBINDINGPROC fnptr_ci_glVertexAttribBinding = nullptr;
  351. PFNGLVERTEXBINDINGDIVISORPROC fnptr_ci_glVertexBindingDivisor = nullptr;
  352. void gl_es_3_1_load()
  353. {
  354. //DEBUG( "gl_es_3_1_load entered..." );
  355. clearLoadCount();
  356. fnptr_ci_glDispatchCompute = (PFNGLDISPATCHCOMPUTEPROC)loadEglProc("glDispatchCompute");
  357. fnptr_ci_glDispatchComputeIndirect = (PFNGLDISPATCHCOMPUTEINDIRECTPROC)loadEglProc("glDispatchComputeIndirect");
  358. fnptr_ci_glDrawArraysIndirect = (PFNGLDRAWARRAYSINDIRECTPROC)loadEglProc("glDrawArraysIndirect");
  359. fnptr_ci_glDrawElementsIndirect = (PFNGLDRAWELEMENTSINDIRECTPROC)loadEglProc("glDrawElementsIndirect");
  360. fnptr_ci_glFramebufferParameteri = (PFNGLFRAMEBUFFERPARAMETERIPROC)loadEglProc("glFramebufferParameteri");
  361. fnptr_ci_glGetFramebufferParameteriv = (PFNGLGETFRAMEBUFFERPARAMETERIVPROC)loadEglProc("glGetFramebufferParameteriv");
  362. fnptr_ci_glGetProgramInterfaceiv = (PFNGLGETPROGRAMINTERFACEIVPROC)loadEglProc("glGetProgramInterfaceiv");
  363. fnptr_ci_glGetProgramResourceIndex = (PFNGLGETPROGRAMRESOURCEINDEXPROC)loadEglProc("glGetProgramResourceIndex");
  364. fnptr_ci_glGetProgramResourceName = (PFNGLGETPROGRAMRESOURCENAMEPROC)loadEglProc("glGetProgramResourceName");
  365. fnptr_ci_glGetProgramResourceiv = (PFNGLGETPROGRAMRESOURCEIVPROC)loadEglProc("glGetProgramResourceiv");
  366. fnptr_ci_glGetProgramResourceLocation = (PFNGLGETPROGRAMRESOURCELOCATIONPROC)loadEglProc("glGetProgramResourceLocation");
  367. fnptr_ci_glUseProgramStages = (PFNGLUSEPROGRAMSTAGESPROC)loadEglProc("glUseProgramStages");
  368. fnptr_ci_glActiveShaderProgram = (PFNGLACTIVESHADERPROGRAMPROC)loadEglProc("glActiveShaderProgram");
  369. fnptr_ci_glCreateShaderProgramv = (PFNGLCREATESHADERPROGRAMVPROC)loadEglProc("glCreateShaderProgramv");
  370. fnptr_ci_glBindProgramPipeline = (PFNGLBINDPROGRAMPIPELINEPROC)loadEglProc("glBindProgramPipeline");
  371. fnptr_ci_glDeleteProgramPipelines = (PFNGLDELETEPROGRAMPIPELINESPROC)loadEglProc("glDeleteProgramPipelines");
  372. fnptr_ci_glGenProgramPipelines = (PFNGLGENPROGRAMPIPELINESPROC)loadEglProc("glGenProgramPipelines");
  373. fnptr_ci_glIsProgramPipeline = (PFNGLISPROGRAMPIPELINEPROC)loadEglProc("glIsProgramPipeline");
  374. fnptr_ci_glGetProgramPipelineiv = (PFNGLGETPROGRAMPIPELINEIVPROC)loadEglProc("glGetProgramPipelineiv");
  375. fnptr_ci_glProgramUniform1i = (PFNGLPROGRAMUNIFORM1IPROC)loadEglProc("glProgramUniform1i");
  376. fnptr_ci_glProgramUniform2i = (PFNGLPROGRAMUNIFORM2IPROC)loadEglProc("glProgramUniform2i");
  377. fnptr_ci_glProgramUniform3i = (PFNGLPROGRAMUNIFORM3IPROC)loadEglProc("glProgramUniform3i");
  378. fnptr_ci_glProgramUniform4i = (PFNGLPROGRAMUNIFORM4IPROC)loadEglProc("glProgramUniform4i");
  379. fnptr_ci_glProgramUniform1ui = (PFNGLPROGRAMUNIFORM1UIPROC)loadEglProc("glProgramUniform1ui");
  380. fnptr_ci_glProgramUniform2ui = (PFNGLPROGRAMUNIFORM2UIPROC)loadEglProc("glProgramUniform2ui");
  381. fnptr_ci_glProgramUniform3ui = (PFNGLPROGRAMUNIFORM3UIPROC)loadEglProc("glProgramUniform3ui");
  382. fnptr_ci_glProgramUniform4ui = (PFNGLPROGRAMUNIFORM4UIPROC)loadEglProc("glProgramUniform4ui");
  383. fnptr_ci_glProgramUniform1f = (PFNGLPROGRAMUNIFORM1FPROC)loadEglProc("glProgramUniform1f");
  384. fnptr_ci_glProgramUniform2f = (PFNGLPROGRAMUNIFORM2FPROC)loadEglProc("glProgramUniform2f");
  385. fnptr_ci_glProgramUniform3f = (PFNGLPROGRAMUNIFORM3FPROC)loadEglProc("glProgramUniform3f");
  386. fnptr_ci_glProgramUniform4f = (PFNGLPROGRAMUNIFORM4FPROC)loadEglProc("glProgramUniform4f");
  387. fnptr_ci_glProgramUniform1iv = (PFNGLPROGRAMUNIFORM1IVPROC)loadEglProc("glProgramUniform1iv");
  388. fnptr_ci_glProgramUniform2iv = (PFNGLPROGRAMUNIFORM2IVPROC)loadEglProc("glProgramUniform2iv");
  389. fnptr_ci_glProgramUniform3iv = (PFNGLPROGRAMUNIFORM3IVPROC)loadEglProc("glProgramUniform3iv");
  390. fnptr_ci_glProgramUniform4iv = (PFNGLPROGRAMUNIFORM4IVPROC)loadEglProc("glProgramUniform4iv");
  391. fnptr_ci_glProgramUniform1uiv = (PFNGLPROGRAMUNIFORM1UIVPROC)loadEglProc("glProgramUniform1uiv");
  392. fnptr_ci_glProgramUniform2uiv = (PFNGLPROGRAMUNIFORM2UIVPROC)loadEglProc("glProgramUniform2uiv");
  393. fnptr_ci_glProgramUniform3uiv = (PFNGLPROGRAMUNIFORM3UIVPROC)loadEglProc("glProgramUniform3uiv");
  394. fnptr_ci_glProgramUniform4uiv = (PFNGLPROGRAMUNIFORM4UIVPROC)loadEglProc("glProgramUniform4uiv");
  395. fnptr_ci_glProgramUniform1fv = (PFNGLPROGRAMUNIFORM1FVPROC)loadEglProc("glProgramUniform1fv");
  396. fnptr_ci_glProgramUniform2fv = (PFNGLPROGRAMUNIFORM2FVPROC)loadEglProc("glProgramUniform2fv");
  397. fnptr_ci_glProgramUniform3fv = (PFNGLPROGRAMUNIFORM3FVPROC)loadEglProc("glProgramUniform3fv");
  398. fnptr_ci_glProgramUniform4fv = (PFNGLPROGRAMUNIFORM4FVPROC)loadEglProc("glProgramUniform4fv");
  399. fnptr_ci_glProgramUniformMatrix2fv = (PFNGLPROGRAMUNIFORMMATRIX2FVPROC)loadEglProc("glProgramUniformMatrix2fv");
  400. fnptr_ci_glProgramUniformMatrix3fv = (PFNGLPROGRAMUNIFORMMATRIX3FVPROC)loadEglProc("glProgramUniformMatrix3fv");
  401. fnptr_ci_glProgramUniformMatrix4fv = (PFNGLPROGRAMUNIFORMMATRIX4FVPROC)loadEglProc("glProgramUniformMatrix4fv");
  402. fnptr_ci_glProgramUniformMatrix2x3fv = (PFNGLPROGRAMUNIFORMMATRIX2X3FVPROC)loadEglProc("glProgramUniformMatrix2x3fv");
  403. fnptr_ci_glProgramUniformMatrix3x2fv = (PFNGLPROGRAMUNIFORMMATRIX3X2FVPROC)loadEglProc("glProgramUniformMatrix3x2fv");
  404. fnptr_ci_glProgramUniformMatrix2x4fv = (PFNGLPROGRAMUNIFORMMATRIX2X4FVPROC)loadEglProc("glProgramUniformMatrix2x4fv");
  405. fnptr_ci_glProgramUniformMatrix4x2fv = (PFNGLPROGRAMUNIFORMMATRIX4X2FVPROC)loadEglProc("glProgramUniformMatrix4x2fv");
  406. fnptr_ci_glProgramUniformMatrix3x4fv = (PFNGLPROGRAMUNIFORMMATRIX3X4FVPROC)loadEglProc("glProgramUniformMatrix3x4fv");
  407. fnptr_ci_glProgramUniformMatrix4x3fv = (PFNGLPROGRAMUNIFORMMATRIX4X3FVPROC)loadEglProc("glProgramUniformMatrix4x3fv");
  408. fnptr_ci_glValidateProgramPipeline = (PFNGLVALIDATEPROGRAMPIPELINEPROC)loadEglProc("glValidateProgramPipeline");
  409. fnptr_ci_glGetProgramPipelineInfoLog = (PFNGLGETPROGRAMPIPELINEINFOLOGPROC)loadEglProc("glGetProgramPipelineInfoLog");
  410. fnptr_ci_glBindImageTexture = (PFNGLBINDIMAGETEXTUREPROC)loadEglProc("glBindImageTexture");
  411. fnptr_ci_glGetBooleani_v = (PFNGLGETBOOLEANI_VPROC)loadEglProc("glGetBooleani_v");
  412. fnptr_ci_glMemoryBarrier = (PFNGLMEMORYBARRIERPROC)loadEglProc("glMemoryBarrier");
  413. fnptr_ci_glMemoryBarrierByRegion = (PFNGLMEMORYBARRIERBYREGIONPROC)loadEglProc("glMemoryBarrierByRegion");
  414. fnptr_ci_glTexStorage2DMultisample = (PFNGLTEXSTORAGE2DMULTISAMPLEPROC)loadEglProc("glTexStorage2DMultisample");
  415. fnptr_ci_glGetMultisamplefv = (PFNGLGETMULTISAMPLEFVPROC)loadEglProc("glGetMultisamplefv");
  416. fnptr_ci_glSampleMaski = (PFNGLSAMPLEMASKIPROC)loadEglProc("glSampleMaski");
  417. fnptr_ci_glGetTexLevelParameteriv = (PFNGLGETTEXLEVELPARAMETERIVPROC)loadEglProc("glGetTexLevelParameteriv");
  418. fnptr_ci_glGetTexLevelParameterfv = (PFNGLGETTEXLEVELPARAMETERFVPROC)loadEglProc("glGetTexLevelParameterfv");
  419. fnptr_ci_glBindVertexBuffer = (PFNGLBINDVERTEXBUFFERPROC)loadEglProc("glBindVertexBuffer");
  420. fnptr_ci_glVertexAttribFormat = (PFNGLVERTEXATTRIBFORMATPROC)loadEglProc("glVertexAttribFormat");
  421. fnptr_ci_glVertexAttribIFormat = (PFNGLVERTEXATTRIBIFORMATPROC)loadEglProc("glVertexAttribIFormat");
  422. fnptr_ci_glVertexAttribBinding = (PFNGLVERTEXATTRIBBINDINGPROC)loadEglProc("glVertexAttribBinding");
  423. fnptr_ci_glVertexBindingDivisor = (PFNGLVERTEXBINDINGDIVISORPROC)loadEglProc("glVertexBindingDivisor");
  424. DEBUG( "gl_es_3_1_load: SUCCESSFUL! | " << getLoadCount() << " procs loaded");
  425. }
  426. #endif // defined( CINDER_LINUX ) && ( CINDER_GL_ES_VERSION >= CINDER_GL_ES_VERSION_3_1 )
  427. // ----------------------------------------------------------------------------
  428. // OpenGL ES 3.2
  429. // ----------------------------------------------------------------------------
  430. #if defined( CINDER_LINUX ) && ( CINDER_GL_ES_VERSION >= CINDER_GL_ES_VERSION_3_2 )
  431. PFNGLBLENDBARRIERPROC fnptr_ci_glBlendBarrier = nullptr;
  432. PFNGLCOPYIMAGESUBDATAPROC fnptr_ci_glCopyImageSubData = nullptr;
  433. PFNGLDEBUGMESSAGECONTROLPROC fnptr_ci_glDebugMessageControl = nullptr;
  434. PFNGLDEBUGMESSAGEINSERTPROC fnptr_ci_glDebugMessageInsert = nullptr;
  435. PFNGLDEBUGMESSAGECALLBACKPROC fnptr_ci_glDebugMessageCallback = nullptr;
  436. PFNGLGETDEBUGMESSAGELOGPROC fnptr_ci_glGetDebugMessageLog = nullptr;
  437. PFNGLPUSHDEBUGGROUPPROC fnptr_ci_glPushDebugGroup = nullptr;
  438. PFNGLPOPDEBUGGROUPPROC fnptr_ci_glPopDebugGroup = nullptr;
  439. PFNGLOBJECTLABELPROC fnptr_ci_glObjectLabel = nullptr;
  440. PFNGLGETOBJECTLABELPROC fnptr_ci_glGetObjectLabel = nullptr;
  441. PFNGLOBJECTPTRLABELPROC fnptr_ci_glObjectPtrLabel = nullptr;
  442. PFNGLGETOBJECTPTRLABELPROC fnptr_ci_glGetObjectPtrLabel = nullptr;
  443. PFNGLGETPOINTERVPROC fnptr_ci_glGetPointerv = nullptr;
  444. PFNGLENABLEIPROC fnptr_ci_glEnablei = nullptr;
  445. PFNGLDISABLEIPROC fnptr_ci_glDisablei = nullptr;
  446. PFNGLBLENDEQUATIONIPROC fnptr_ci_glBlendEquationi = nullptr;
  447. PFNGLBLENDEQUATIONSEPARATEIPROC fnptr_ci_glBlendEquationSeparatei = nullptr;
  448. PFNGLBLENDFUNCIPROC fnptr_ci_glBlendFunci = nullptr;
  449. PFNGLBLENDFUNCSEPARATEIPROC fnptr_ci_glBlendFuncSeparatei = nullptr;
  450. PFNGLCOLORMASKIPROC fnptr_ci_glColorMaski = nullptr;
  451. PFNGLISENABLEDIPROC fnptr_ci_glIsEnabledi = nullptr;
  452. PFNGLDRAWELEMENTSBASEVERTEXPROC fnptr_ci_glDrawElementsBaseVertex = nullptr;
  453. PFNGLDRAWRANGEELEMENTSBASEVERTEXPROC fnptr_ci_glDrawRangeElementsBaseVertex = nullptr;
  454. PFNGLDRAWELEMENTSINSTANCEDBASEVERTEXPROC fnptr_ci_glDrawElementsInstancedBaseVertex = nullptr;
  455. PFNGLFRAMEBUFFERTEXTUREPROC fnptr_ci_glFramebufferTexture = nullptr;
  456. PFNGLPRIMITIVEBOUNDINGBOXPROC fnptr_ci_glPrimitiveBoundingBox = nullptr;
  457. PFNGLGETGRAPHICSRESETSTATUSPROC fnptr_ci_glGetGraphicsResetStatus = nullptr;
  458. PFNGLREADNPIXELSPROC fnptr_ci_glReadnPixels = nullptr;
  459. PFNGLGETNUNIFORMFVPROC fnptr_ci_glGetnUniformfv = nullptr;
  460. PFNGLGETNUNIFORMIVPROC fnptr_ci_glGetnUniformiv = nullptr;
  461. PFNGLGETNUNIFORMUIVPROC fnptr_ci_glGetnUniformuiv = nullptr;
  462. PFNGLMINSAMPLESHADINGPROC fnptr_ci_glMinSampleShading = nullptr;
  463. PFNGLPATCHPARAMETERIPROC fnptr_ci_glPatchParameteri = nullptr;
  464. PFNGLTEXPARAMETERIIVPROC fnptr_ci_glTexParameterIiv = nullptr;
  465. PFNGLTEXPARAMETERIUIVPROC fnptr_ci_glTexParameterIuiv = nullptr;
  466. PFNGLGETTEXPARAMETERIIVPROC fnptr_ci_glGetTexParameterIiv = nullptr;
  467. PFNGLGETTEXPARAMETERIUIVPROC fnptr_ci_glGetTexParameterIuiv = nullptr;
  468. PFNGLSAMPLERPARAMETERIIVPROC fnptr_ci_glSamplerParameterIiv = nullptr;
  469. PFNGLSAMPLERPARAMETERIUIVPROC fnptr_ci_glSamplerParameterIuiv = nullptr;
  470. PFNGLGETSAMPLERPARAMETERIIVPROC fnptr_ci_glGetSamplerParameterIiv = nullptr;
  471. PFNGLGETSAMPLERPARAMETERIUIVPROC fnptr_ci_glGetSamplerParameterIuiv = nullptr;
  472. PFNGLTEXBUFFERPROC fnptr_ci_glTexBuffer = nullptr;
  473. PFNGLTEXBUFFERRANGEPROC fnptr_ci_glTexBufferRange = nullptr;
  474. PFNGLTEXSTORAGE3DMULTISAMPLEPROC fnptr_ci_glTexStorage3DMultisample = nullptr;
  475. void gl_es_3_2_load()
  476. {
  477. //DEBUG( "gl_es_3_2_load entered..." );
  478. clearLoadCount();
  479. fnptr_ci_glBlendBarrier = (PFNGLBLENDBARRIERPROC)loadEglProc("glBlendBarrier");
  480. fnptr_ci_glCopyImageSubData = (PFNGLCOPYIMAGESUBDATAPROC)loadEglProc("glCopyImageSubData");
  481. fnptr_ci_glDebugMessageControl = (PFNGLDEBUGMESSAGECONTROLPROC)loadEglProc("glDebugMessageControl");
  482. fnptr_ci_glDebugMessageInsert = (PFNGLDEBUGMESSAGEINSERTPROC)loadEglProc("glDebugMessageInsert");
  483. fnptr_ci_glDebugMessageCallback = (PFNGLDEBUGMESSAGECALLBACKPROC)loadEglProc("glDebugMessageCallback");
  484. fnptr_ci_glGetDebugMessageLog = (PFNGLGETDEBUGMESSAGELOGPROC)loadEglProc("glGetDebugMessageLog");
  485. fnptr_ci_glPushDebugGroup = (PFNGLPUSHDEBUGGROUPPROC)loadEglProc("glPushDebugGroup");
  486. fnptr_ci_glPopDebugGroup = (PFNGLPOPDEBUGGROUPPROC)loadEglProc("glPopDebugGroup");
  487. fnptr_ci_glObjectLabel = (PFNGLOBJECTLABELPROC)loadEglProc("glObjectLabel");
  488. fnptr_ci_glGetObjectLabel = (PFNGLGETOBJECTLABELPROC)loadEglProc("glGetObjectLabel");
  489. fnptr_ci_glObjectPtrLabel = (PFNGLOBJECTPTRLABELPROC)loadEglProc("glObjectPtrLabel");
  490. fnptr_ci_glGetObjectPtrLabel = (PFNGLGETOBJECTPTRLABELPROC)loadEglProc("glGetObjectPtrLabel");
  491. fnptr_ci_glGetPointerv = (PFNGLGETPOINTERVPROC)loadEglProc("glGetPointerv");
  492. fnptr_ci_glEnablei = (PFNGLENABLEIPROC)loadEglProc("glEnablei");
  493. fnptr_ci_glDisablei = (PFNGLDISABLEIPROC)loadEglProc("glDisablei");
  494. fnptr_ci_glBlendEquationi = (PFNGLBLENDEQUATIONIPROC)loadEglProc("glBlendEquationi");
  495. fnptr_ci_glBlendEquationSeparatei = (PFNGLBLENDEQUATIONSEPARATEIPROC)loadEglProc("glBlendEquationSeparatei");
  496. fnptr_ci_glBlendFunci = (PFNGLBLENDFUNCIPROC)loadEglProc("glBlendFunci");
  497. fnptr_ci_glBlendFuncSeparatei = (PFNGLBLENDFUNCSEPARATEIPROC)loadEglProc("glBlendFuncSeparatei");
  498. fnptr_ci_glColorMaski = (PFNGLCOLORMASKIPROC)loadEglProc("glColorMaski");
  499. fnptr_ci_glIsEnabledi = (PFNGLISENABLEDIPROC)loadEglProc("glIsEnabledi");
  500. fnptr_ci_glDrawElementsBaseVertex = (PFNGLDRAWELEMENTSBASEVERTEXPROC)loadEglProc("glDrawElementsBaseVertex");
  501. fnptr_ci_glDrawRangeElementsBaseVertex = (PFNGLDRAWRANGEELEMENTSBASEVERTEXPROC)loadEglProc("glDrawRangeElementsBaseVertex");
  502. fnptr_ci_glDrawElementsInstancedBaseVertex = (PFNGLDRAWELEMENTSINSTANCEDBASEVERTEXPROC)loadEglProc("glDrawElementsInstancedBaseVertex");
  503. fnptr_ci_glFramebufferTexture = (PFNGLFRAMEBUFFERTEXTUREPROC)loadEglProc("glFramebufferTexture");
  504. fnptr_ci_glPrimitiveBoundingBox = (PFNGLPRIMITIVEBOUNDINGBOXPROC)loadEglProc("glPrimitiveBoundingBox");
  505. fnptr_ci_glGetGraphicsResetStatus = (PFNGLGETGRAPHICSRESETSTATUSPROC)loadEglProc("glGetGraphicsResetStatus");
  506. fnptr_ci_glReadnPixels = (PFNGLREADNPIXELSPROC)loadEglProc("glReadnPixels");
  507. fnptr_ci_glGetnUniformfv = (PFNGLGETNUNIFORMFVPROC)loadEglProc("glGetnUniformfv");
  508. fnptr_ci_glGetnUniformiv = (PFNGLGETNUNIFORMIVPROC)loadEglProc("glGetnUniformiv");
  509. fnptr_ci_glGetnUniformuiv = (PFNGLGETNUNIFORMUIVPROC)loadEglProc("glGetnUniformuiv");
  510. fnptr_ci_glMinSampleShading = (PFNGLMINSAMPLESHADINGPROC)loadEglProc("glMinSampleShading");
  511. fnptr_ci_glPatchParameteri = (PFNGLPATCHPARAMETERIPROC)loadEglProc("glPatchParameteri");
  512. fnptr_ci_glTexParameterIiv = (PFNGLTEXPARAMETERIIVPROC)loadEglProc("glTexParameterIiv");
  513. fnptr_ci_glTexParameterIuiv = (PFNGLTEXPARAMETERIUIVPROC)loadEglProc("glTexParameterIuiv");
  514. fnptr_ci_glGetTexParameterIiv = (PFNGLGETTEXPARAMETERIIVPROC)loadEglProc("glGetTexParameterIiv");
  515. fnptr_ci_glGetTexParameterIuiv = (PFNGLGETTEXPARAMETERIUIVPROC)loadEglProc("glGetTexParameterIuiv");
  516. fnptr_ci_glSamplerParameterIiv = (PFNGLSAMPLERPARAMETERIIVPROC)loadEglProc("glSamplerParameterIiv");
  517. fnptr_ci_glSamplerParameterIuiv = (PFNGLSAMPLERPARAMETERIUIVPROC)loadEglProc("glSamplerParameterIuiv");
  518. fnptr_ci_glGetSamplerParameterIiv = (PFNGLGETSAMPLERPARAMETERIIVPROC)loadEglProc("glGetSamplerParameterIiv");
  519. fnptr_ci_glGetSamplerParameterIuiv = (PFNGLGETSAMPLERPARAMETERIUIVPROC)loadEglProc("glGetSamplerParameterIuiv");
  520. fnptr_ci_glTexBuffer = (PFNGLTEXBUFFERPROC)loadEglProc("glTexBuffer");
  521. fnptr_ci_glTexBufferRange = (PFNGLTEXBUFFERRANGEPROC)loadEglProc("glTexBufferRange");
  522. fnptr_ci_glTexStorage3DMultisample = (PFNGLTEXSTORAGE3DMULTISAMPLEPROC)loadEglProc("glTexStorage3DMultisample");
  523. DEBUG( "gl_es_3_2_load: SUCCESSFUL! | " << getLoadCount() << " procs loaded");
  524. }
  525. #endif // defined( CINDER_LINUX ) && ( CINDER_GL_ES_VERSION >= CINDER_GL_ES_VERSION_3_2 )
  526. // ----------------------------------------------------------------------------
  527. // OpenGL ES 2.0 Extensions
  528. // ----------------------------------------------------------------------------
  529. #if ( CINDER_GL_ES_VERSION >= CINDER_GL_ES_VERSION_2 )
  530. #define extstr_GL_NV_read_buffer EXT_QUOTE_STR(GL_NV_read_buffer)
  531. #define extstr_GL_OES_vertex_array_object EXT_QUOTE_STR(GL_OES_vertex_array_object)
  532. #define extstr_GL_ARB_vertex_array_object EXT_QUOTE_STR(GL_ARB_vertex_array_object)
  533. PFNGLBLENDBARRIERKHRPROC fnptr_ci_glBlendBarrierKHR = nullptr;
  534. PFNGLDEBUGMESSAGECONTROLKHRPROC fnptr_ci_glDebugMessageControlKHR = nullptr;
  535. PFNGLDEBUGMESSAGEINSERTKHRPROC fnptr_ci_glDebugMessageInsertKHR = nullptr;
  536. PFNGLDEBUGMESSAGECALLBACKKHRPROC fnptr_ci_glDebugMessageCallbackKHR = nullptr;
  537. PFNGLGETDEBUGMESSAGELOGKHRPROC fnptr_ci_glGetDebugMessageLogKHR = nullptr;
  538. PFNGLPUSHDEBUGGROUPKHRPROC fnptr_ci_glPushDebugGroupKHR = nullptr;
  539. PFNGLPOPDEBUGGROUPKHRPROC fnptr_ci_glPopDebugGroupKHR = nullptr;
  540. PFNGLOBJECTLABELKHRPROC fnptr_ci_glObjectLabelKHR = nullptr;
  541. PFNGLGETOBJECTLABELKHRPROC fnptr_ci_glGetObjectLabelKHR = nullptr;
  542. PFNGLOBJECTPTRLABELKHRPROC fnptr_ci_glObjectPtrLabelKHR = nullptr;
  543. PFNGLGETOBJECTPTRLABELKHRPROC fnptr_ci_glGetObjectPtrLabelKHR = nullptr;
  544. PFNGLGETPOINTERVKHRPROC fnptr_ci_glGetPointervKHR = nullptr;
  545. PFNGLGETGRAPHICSRESETSTATUSKHRPROC fnptr_ci_glGetGraphicsResetStatusKHR = nullptr;
  546. PFNGLREADNPIXELSKHRPROC fnptr_ci_glReadnPixelsKHR = nullptr;
  547. PFNGLGETNUNIFORMFVKHRPROC fnptr_ci_glGetnUniformfvKHR = nullptr;
  548. PFNGLGETNUNIFORMIVKHRPROC fnptr_ci_glGetnUniformivKHR = nullptr;
  549. PFNGLGETNUNIFORMUIVKHRPROC fnptr_ci_glGetnUniformuivKHR = nullptr;
  550. PFNGLEGLIMAGETARGETTEXTURE2DOESPROC fnptr_ci_glEGLImageTargetTexture2DOES = nullptr;
  551. PFNGLEGLIMAGETARGETRENDERBUFFERSTORAGEOESPROC fnptr_ci_glEGLImageTargetRenderbufferStorageOES = nullptr;
  552. PFNGLCOPYIMAGESUBDATAOESPROC fnptr_ci_glCopyImageSubDataOES = nullptr;
  553. PFNGLENABLEIOESPROC fnptr_ci_glEnableiOES = nullptr;
  554. PFNGLDISABLEIOESPROC fnptr_ci_glDisableiOES = nullptr;
  555. PFNGLBLENDEQUATIONIOESPROC fnptr_ci_glBlendEquationiOES = nullptr;
  556. PFNGLBLENDEQUATIONSEPARATEIOESPROC fnptr_ci_glBlendEquationSeparateiOES = nullptr;
  557. PFNGLBLENDFUNCIOESPROC fnptr_ci_glBlendFunciOES = nullptr;
  558. PFNGLBLENDFUNCSEPARATEIOESPROC fnptr_ci_glBlendFuncSeparateiOES = nullptr;
  559. PFNGLCOLORMASKIOESPROC fnptr_ci_glColorMaskiOES = nullptr;
  560. PFNGLISENABLEDIOESPROC fnptr_ci_glIsEnablediOES = nullptr;
  561. PFNGLDRAWELEMENTSBASEVERTEXOESPROC fnptr_ci_glDrawElementsBaseVertexOES = nullptr;
  562. PFNGLDRAWRANGEELEMENTSBASEVERTEXOESPROC fnptr_ci_glDrawRangeElementsBaseVertexOES = nullptr;
  563. PFNGLDRAWELEMENTSINSTANCEDBASEVERTEXOESPROC fnptr_ci_glDrawElementsInstancedBaseVertexOES = nullptr;
  564. PFNGLMULTIDRAWELEMENTSBASEVERTEXOESPROC fnptr_ci_glMultiDrawElementsBaseVertexOES = nullptr;
  565. PFNGLFRAMEBUFFERTEXTUREOESPROC fnptr_ci_glFramebufferTextureOES = nullptr;
  566. PFNGLGETPROGRAMBINARYOESPROC fnptr_ci_glGetProgramBinaryOES = nullptr;
  567. PFNGLPROGRAMBINARYOESPROC fnptr_ci_glProgramBinaryOES = nullptr;
  568. PFNGLGETBUFFERPOINTERVOESPROC fnptr_ci_glGetBufferPointervOES = nullptr;
  569. PFNGLPRIMITIVEBOUNDINGBOXOESPROC fnptr_ci_glPrimitiveBoundingBoxOES = nullptr;
  570. PFNGLMINSAMPLESHADINGOESPROC fnptr_ci_glMinSampleShadingOES = nullptr;
  571. PFNGLTEXIMAGE3DOESPROC fnptr_ci_glTexImage3DOES = nullptr;
  572. PFNGLTEXSUBIMAGE3DOESPROC fnptr_ci_glTexSubImage3DOES = nullptr;
  573. PFNGLCOPYTEXSUBIMAGE3DOESPROC fnptr_ci_glCopyTexSubImage3DOES = nullptr;
  574. PFNGLCOMPRESSEDTEXIMAGE3DOESPROC fnptr_ci_glCompressedTexImage3DOES = nullptr;
  575. PFNGLCOMPRESSEDTEXSUBIMAGE3DOESPROC fnptr_ci_glCompressedTexSubImage3DOES = nullptr;
  576. PFNGLFRAMEBUFFERTEXTURE3DOESPROC fnptr_ci_glFramebufferTexture3DOES = nullptr;
  577. PFNGLTEXPARAMETERIIVOESPROC fnptr_ci_glTexParameterIivOES = nullptr;
  578. PFNGLTEXPARAMETERIUIVOESPROC fnptr_ci_glTexParameterIuivOES = nullptr;
  579. PFNGLGETTEXPARAMETERIIVOESPROC fnptr_ci_glGetTexParameterIivOES = nullptr;
  580. PFNGLGETTEXPARAMETERIUIVOESPROC fnptr_ci_glGetTexParameterIuivOES = nullptr;
  581. PFNGLSAMPLERPARAMETERIIVOESPROC fnptr_ci_glSamplerParameterIivOES = nullptr;
  582. PFNGLSAMPLERPARAMETERIUIVOESPROC fnptr_ci_glSamplerParameterIuivOES = nullptr;
  583. PFNGLGETSAMPLERPARAMETERIIVOESPROC fnptr_ci_glGetSamplerParameterIivOES = nullptr;
  584. PFNGLGETSAMPLERPARAMETERIUIVOESPROC fnptr_ci_glGetSamplerParameterIuivOES = nullptr;
  585. PFNGLTEXBUFFEROESPROC fnptr_ci_glTexBufferOES = nullptr;
  586. PFNGLTEXBUFFERRANGEOESPROC fnptr_ci_glTexBufferRangeOES = nullptr;
  587. PFNGLTEXSTORAGE3DMULTISAMPLEOESPROC fnptr_ci_glTexStorage3DMultisampleOES = nullptr;
  588. PFNGLTEXTUREVIEWOESPROC fnptr_ci_glTextureViewOES = nullptr;
  589. PFNGLGETPERFMONITORGROUPSAMDPROC fnptr_ci_glGetPerfMonitorGroupsAMD = nullptr;
  590. PFNGLGETPERFMONITORCOUNTERSAMDPROC fnptr_ci_glGetPerfMonitorCountersAMD = nullptr;
  591. PFNGLGETPERFMONITORGROUPSTRINGAMDPROC fnptr_ci_glGetPerfMonitorGroupStringAMD = nullptr;
  592. PFNGLGETPERFMONITORCOUNTERSTRINGAMDPROC fnptr_ci_glGetPerfMonitorCounterStringAMD = nullptr;
  593. PFNGLGETPERFMONITORCOUNTERINFOAMDPROC fnptr_ci_glGetPerfMonitorCounterInfoAMD = nullptr;
  594. PFNGLGENPERFMONITORSAMDPROC fnptr_ci_glGenPerfMonitorsAMD = nullptr;
  595. PFNGLDELETEPERFMONITORSAMDPROC fnptr_ci_glDeletePerfMonitorsAMD = nullptr;
  596. PFNGLSELECTPERFMONITORCOUNTERSAMDPROC fnptr_ci_glSelectPerfMonitorCountersAMD = nullptr;
  597. PFNGLBEGINPERFMONITORAMDPROC fnptr_ci_glBeginPerfMonitorAMD = nullptr;
  598. PFNGLENDPERFMONITORAMDPROC fnptr_ci_glEndPerfMonitorAMD = nullptr;
  599. PFNGLGETPERFMONITORCOUNTERDATAAMDPROC fnptr_ci_glGetPerfMonitorCounterDataAMD = nullptr;
  600. PFNGLGETTRANSLATEDSHADERSOURCEANGLEPROC fnptr_ci_glGetTranslatedShaderSourceANGLE = nullptr;
  601. PFNGLCOPYTEXTURELEVELSAPPLEPROC fnptr_ci_glCopyTextureLevelsAPPLE = nullptr;
  602. PFNGLRESOLVEMULTISAMPLEFRAMEBUFFERAPPLEPROC fnptr_ci_glResolveMultisampleFramebufferAPPLE = nullptr;
  603. PFNGLFENCESYNCAPPLEPROC fnptr_ci_glFenceSyncAPPLE = nullptr;
  604. PFNGLISSYNCAPPLEPROC fnptr_ci_glIsSyncAPPLE = nullptr;
  605. PFNGLDELETESYNCAPPLEPROC fnptr_ci_glDeleteSyncAPPLE = nullptr;
  606. PFNGLCLIENTWAITSYNCAPPLEPROC fnptr_ci_glClientWaitSyncAPPLE = nullptr;
  607. PFNGLWAITSYNCAPPLEPROC fnptr_ci_glWaitSyncAPPLE = nullptr;
  608. PFNGLGETINTEGER64VAPPLEPROC fnptr_ci_glGetInteger64vAPPLE = nullptr;
  609. PFNGLGETSYNCIVAPPLEPROC fnptr_ci_glGetSyncivAPPLE = nullptr;
  610. PFNGLDRAWARRAYSINSTANCEDBASEINSTANCEEXTPROC fnptr_ci_glDrawArraysInstancedBaseInstanceEXT = nullptr;
  611. PFNGLDRAWELEMENTSINSTANCEDBASEINSTANCEEXTPROC fnptr_ci_glDrawElementsInstancedBaseInstanceEXT = nullptr;
  612. PFNGLDRAWELEMENTSINSTANCEDBASEVERTEXBASEINSTANCEEXTPROC fnptr_ci_glDrawElementsInstancedBaseVertexBaseInstanceEXT = nullptr;
  613. PFNGLBINDFRAGDATALOCATIONINDEXEDEXTPROC fnptr_ci_glBindFragDataLocationIndexedEXT = nullptr;
  614. PFNGLBINDFRAGDATALOCATIONEXTPROC fnptr_ci_glBindFragDataLocationEXT = nullptr;
  615. PFNGLGETPROGRAMRESOURCELOCATIONINDEXEXTPROC fnptr_ci_glGetProgramResourceLocationIndexEXT = nullptr;
  616. PFNGLGETFRAGDATAINDEXEXTPROC fnptr_ci_glGetFragDataIndexEXT = nullptr;
  617. PFNGLCOPYIMAGESUBDATAEXTPROC fnptr_ci_glCopyImageSubDataEXT = nullptr;
  618. PFNGLLABELOBJECTEXTPROC fnptr_ci_glLabelObjectEXT = nullptr;
  619. PFNGLGETOBJECTLABELEXTPROC fnptr_ci_glGetObjectLabelEXT = nullptr;
  620. PFNGLINSERTEVENTMARKEREXTPROC fnptr_ci_glInsertEventMarkerEXT = nullptr;
  621. PFNGLPUSHGROUPMARKEREXTPROC fnptr_ci_glPushGroupMarkerEXT = nullptr;
  622. PFNGLPOPGROUPMARKEREXTPROC fnptr_ci_glPopGroupMarkerEXT = nullptr;
  623. PFNGLDISCARDFRAMEBUFFEREXTPROC fnptr_ci_glDiscardFramebufferEXT = nullptr;
  624. PFNGLGENQUERIESEXTPROC fnptr_ci_glGenQueriesEXT = nullptr;
  625. PFNGLDELETEQUERIESEXTPROC fnptr_ci_glDeleteQueriesEXT = nullptr;
  626. PFNGLISQUERYEXTPROC fnptr_ci_glIsQueryEXT = nullptr;
  627. PFNGLBEGINQUERYEXTPROC fnptr_ci_glBeginQueryEXT = nullptr;
  628. PFNGLENDQUERYEXTPROC fnptr_ci_glEndQueryEXT = nullptr;
  629. PFNGLQUERYCOUNTEREXTPROC fnptr_ci_glQueryCounterEXT = nullptr;
  630. PFNGLGETQUERYIVEXTPROC fnptr_ci_glGetQueryivEXT = nullptr;
  631. PFNGLGETQUERYOBJECTIVEXTPROC fnptr_ci_glGetQueryObjectivEXT = nullptr;
  632. PFNGLGETQUERYOBJECTUIVEXTPROC fnptr_ci_glGetQueryObjectuivEXT = nullptr;
  633. PFNGLGETQUERYOBJECTI64VEXTPROC fnptr_ci_glGetQueryObjecti64vEXT = nullptr;
  634. PFNGLGETQUERYOBJECTUI64VEXTPROC fnptr_ci_glGetQueryObjectui64vEXT = nullptr;
  635. PFNGLDRAWBUFFERSEXTPROC fnptr_ci_glDrawBuffersEXT = nullptr;
  636. PFNGLENABLEIEXTPROC fnptr_ci_glEnableiEXT = nullptr;
  637. PFNGLDISABLEIEXTPROC fnptr_ci_glDisableiEXT = nullptr;
  638. PFNGLBLENDEQUATIONIEXTPROC fnptr_ci_glBlendEquationiEXT = nullptr;
  639. PFNGLBLENDEQUATIONSEPARATEIEXTPROC fnptr_ci_glBlendEquationSeparateiEXT = nullptr;
  640. PFNGLBLENDFUNCIEXTPROC fnptr_ci_glBlendFunciEXT = nullptr;
  641. PFNGLBLENDFUNCSEPARATEIEXTPROC fnptr_ci_glBlendFuncSeparateiEXT = nullptr;
  642. PFNGLCOLORMASKIEXTPROC fnptr_ci_glColorMaskiEXT = nullptr;
  643. PFNGLISENABLEDIEXTPROC fnptr_ci_glIsEnablediEXT = nullptr;
  644. PFNGLDRAWELEMENTSBASEVERTEXEXTPROC fnptr_ci_glDrawElementsBaseVertexEXT = nullptr;
  645. PFNGLDRAWRANGEELEMENTSBASEVERTEXEXTPROC fnptr_ci_glDrawRangeElementsBaseVertexEXT = nullptr;
  646. PFNGLDRAWELEMENTSINSTANCEDBASEVERTEXEXTPROC fnptr_ci_glDrawElementsInstancedBaseVertexEXT = nullptr;
  647. PFNGLMULTIDRAWELEMENTSBASEVERTEXEXTPROC fnptr_ci_glMultiDrawElementsBaseVertexEXT = nullptr;
  648. PFNGLMULTIDRAWARRAYSEXTPROC fnptr_ci_glMultiDrawArraysEXT = nullptr;
  649. PFNGLMULTIDRAWELEMENTSEXTPROC fnptr_ci_glMultiDrawElementsEXT = nullptr;
  650. PFNGLMULTIDRAWARRAYSINDIRECTEXTPROC fnptr_ci_glMultiDrawArraysIndirectEXT = nullptr;
  651. PFNGLMULTIDRAWELEMENTSINDIRECTEXTPROC fnptr_ci_glMultiDrawElementsIndirectEXT = nullptr;
  652. PFNGLFRAMEBUFFERTEXTURE2DMULTISAMPLEEXTPROC fnptr_ci_glFramebufferTexture2DMultisampleEXT = nullptr;
  653. PFNGLREADBUFFERINDEXEDEXTPROC fnptr_ci_glReadBufferIndexedEXT = nullptr;
  654. PFNGLDRAWBUFFERSINDEXEDEXTPROC fnptr_ci_glDrawBuffersIndexedEXT = nullptr;
  655. PFNGLGETINTEGERI_VEXTPROC fnptr_ci_glGetIntegeri_vEXT = nullptr;
  656. PFNGLPRIMITIVEBOUNDINGBOXEXTPROC fnptr_ci_glPrimitiveBoundingBoxEXT = nullptr;
  657. PFNGLRASTERSAMPLESEXTPROC fnptr_ci_glRasterSamplesEXT = nullptr;
  658. PFNGLGETGRAPHICSRESETSTATUSEXTPROC fnptr_ci_glGetGraphicsResetStatusEXT = nullptr;
  659. PFNGLREADNPIXELSEXTPROC fnptr_ci_glReadnPixelsEXT = nullptr;
  660. PFNGLGETNUNIFORMFVEXTPROC fnptr_ci_glGetnUniformfvEXT = nullptr;
  661. PFNGLGETNUNIFORMIVEXTPROC fnptr_ci_glGetnUniformivEXT = nullptr;
  662. PFNGLACTIVESHADERPROGRAMEXTPROC fnptr_ci_glActiveShaderProgramEXT = nullptr;
  663. PFNGLBI

Large files files are truncated, but you can click here to view the full file