PageRenderTime 46ms CodeModel.GetById 21ms RepoModel.GetById 0ms app.codeStats 1ms

/indra/llrender/llglheaders.h

https://bitbucket.org/lindenlab/viewer-beta/
C Header | 1013 lines | 780 code | 91 blank | 142 comment | 4 complexity | e9a5015921226b7e080b298772a616a7 MD5 | raw file
Possible License(s): LGPL-2.1
  1. /**
  2. * @file llglheaders.h
  3. * @brief LLGL definitions
  4. *
  5. * $LicenseInfo:firstyear=2001&license=viewerlgpl$
  6. * Second Life Viewer Source Code
  7. * Copyright (C) 2010, Linden Research, Inc.
  8. *
  9. * This library is free software; you can redistribute it and/or
  10. * modify it under the terms of the GNU Lesser General Public
  11. * License as published by the Free Software Foundation;
  12. * version 2.1 of the License only.
  13. *
  14. * This library is distributed in the hope that it will be useful,
  15. * but WITHOUT ANY WARRANTY; without even the implied warranty of
  16. * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  17. * Lesser General Public License for more details.
  18. *
  19. * You should have received a copy of the GNU Lesser General Public
  20. * License along with this library; if not, write to the Free Software
  21. * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
  22. *
  23. * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
  24. * $/LicenseInfo$
  25. */
  26. #ifndef LL_LLGLHEADERS_H
  27. #define LL_LLGLHEADERS_H
  28. #if LL_SOLARIS
  29. # if defined(__sparc)
  30. # define I_NEED_OS2_H // avoiding BOOL conflicts
  31. # endif
  32. # include "GL/gl.h"
  33. # if defined(__sparc)
  34. # undef I_NEED_OS2_H
  35. # ifdef BOOL
  36. # undef BOOL // now get rid of Xmd.h crap
  37. # endif
  38. # endif
  39. # include "GL/glx.h"
  40. # define GL_GLEXT_PROTOTYPES 1
  41. # include "GL/glext.h"
  42. # include "GL/glu.h"
  43. # include "GL/glx.h"
  44. # define GLX_GLXEXT_PROTOTYPES 1
  45. # include "GL/glxext.h"
  46. //# define GLH_EXT_GET_PROC_ADDRESS(p) glXGetProcAddressARB((const GLubyte*)(p))
  47. # define GLH_EXT_GET_PROC_ADDRESS(p) glXGetProcAddress((const GLubyte*)(p))
  48. // The __APPLE__ kludge is to make glh_extensions.h not symbol-clash horribly
  49. // This header is distributed with SL. You'll find it in linden/libraries/include/GL/
  50. # define __APPLE__
  51. # include "GL/glh_extensions.h"
  52. # undef __APPLE__
  53. // GL_ARB_vertex_buffer_object
  54. extern PFNGLBINDBUFFERARBPROC glBindBufferARB;
  55. extern PFNGLDELETEBUFFERSARBPROC glDeleteBuffersARB;
  56. extern PFNGLGENBUFFERSARBPROC glGenBuffersARB;
  57. extern PFNGLISBUFFERARBPROC glIsBufferARB;
  58. extern PFNGLBUFFERDATAARBPROC glBufferDataARB;
  59. extern PFNGLBUFFERSUBDATAARBPROC glBufferSubDataARB;
  60. extern PFNGLGETBUFFERSUBDATAARBPROC glGetBufferSubDataARB;
  61. extern PFNGLMAPBUFFERARBPROC glMapBufferARB;
  62. extern PFNGLUNMAPBUFFERARBPROC glUnmapBufferARB;
  63. extern PFNGLGETBUFFERPARAMETERIVARBPROC glGetBufferParameterivARB;
  64. extern PFNGLGETBUFFERPOINTERVARBPROC glGetBufferPointervARB;
  65. // GL_ARB_vertex_array_object
  66. extern PFNGLBINDVERTEXARRAYPROC glBindVertexArray;
  67. extern PFNGLDELETEVERTEXARRAYSPROC glDeleteVertexArrays;
  68. extern PFNGLGENVERTEXARRAYSPROC glGenVertexArrays;
  69. extern PFNGLISVERTEXARRAYPROC glIsVertexArray;
  70. // GL_ARB_sync
  71. extern PFNGLFENCESYNCPROC glFenceSync;
  72. extern PFNGLISSYNCPROC glIsSync;
  73. extern PFNGLDELETESYNCPROC glDeleteSync;
  74. extern PFNGLCLIENTWAITSYNCPROC glClientWaitSync;
  75. extern PFNGLWAITSYNCPROC glWaitSync;
  76. extern PFNGLGETINTEGER64VPROC glGetInteger64v;
  77. extern PFNGLGETSYNCIVPROC glGetSynciv;
  78. // GL_APPLE_flush_buffer_range
  79. extern PFNGLBUFFERPARAMETERIAPPLEPROC glBufferParameteriAPPLE;
  80. extern PFNGLFLUSHMAPPEDBUFFERRANGEAPPLEPROC glFlushMappedBufferRangeAPPLE;
  81. // GL_ARB_map_buffer_range
  82. extern PFNGLMAPBUFFERRANGEPROC glMapBufferRange;
  83. extern PFNGLFLUSHMAPPEDBUFFERRANGEPROC glFlushMappedBufferRange;
  84. // GL_ATI_vertex_array_object
  85. extern PFNGLNEWOBJECTBUFFERATIPROC glNewObjectBufferATI;
  86. extern PFNGLISOBJECTBUFFERATIPROC glIsObjectBufferATI;
  87. extern PFNGLUPDATEOBJECTBUFFERATIPROC glUpdateObjectBufferATI;
  88. extern PFNGLGETOBJECTBUFFERFVATIPROC glGetObjectBufferfvATI;
  89. extern PFNGLGETOBJECTBUFFERIVATIPROC glGetObjectBufferivATI;
  90. extern PFNGLFREEOBJECTBUFFERATIPROC glFreeObjectBufferATI;
  91. extern PFNGLARRAYOBJECTATIPROC glArrayObjectATI;
  92. extern PFNGLVERTEXATTRIBARRAYOBJECTATIPROC glVertexAttribArrayObjectATI;
  93. extern PFNGLGETARRAYOBJECTFVATIPROC glGetArrayObjectfvATI;
  94. extern PFNGLGETARRAYOBJECTIVATIPROC glGetArrayObjectivATI;
  95. extern PFNGLVARIANTARRAYOBJECTATIPROC glVariantObjectArrayATI;
  96. extern PFNGLGETVARIANTARRAYOBJECTFVATIPROC glGetVariantArrayObjectfvATI;
  97. extern PFNGLGETVARIANTARRAYOBJECTIVATIPROC glGetVariantArrayObjectivATI;
  98. // GL_ARB_occlusion_query
  99. extern PFNGLGENQUERIESARBPROC glGenQueriesARB;
  100. extern PFNGLDELETEQUERIESARBPROC glDeleteQueriesARB;
  101. extern PFNGLISQUERYARBPROC glIsQueryARB;
  102. extern PFNGLBEGINQUERYARBPROC glBeginQueryARB;
  103. extern PFNGLENDQUERYARBPROC glEndQueryARB;
  104. extern PFNGLGETQUERYIVARBPROC glGetQueryivARB;
  105. extern PFNGLGETQUERYOBJECTIVARBPROC glGetQueryObjectivARB;
  106. extern PFNGLGETQUERYOBJECTUIVARBPROC glGetQueryObjectuivARB;
  107. // GL_ARB_point_parameters
  108. extern PFNGLPOINTPARAMETERFARBPROC glPointParameterfARB;
  109. extern PFNGLPOINTPARAMETERFVARBPROC glPointParameterfvARB;
  110. // GL_ARB_shader_objects
  111. extern PFNGLDELETEOBJECTARBPROC glDeleteObjectARB;
  112. extern PFNGLGETHANDLEARBPROC glGetHandleARB;
  113. extern PFNGLDETACHOBJECTARBPROC glDetachObjectARB;
  114. extern PFNGLCREATESHADEROBJECTARBPROC glCreateShaderObjectARB;
  115. extern PFNGLSHADERSOURCEARBPROC glShaderSourceARB;
  116. extern PFNGLCOMPILESHADERARBPROC glCompileShaderARB;
  117. extern PFNGLCREATEPROGRAMOBJECTARBPROC glCreateProgramObjectARB;
  118. extern PFNGLATTACHOBJECTARBPROC glAttachObjectARB;
  119. extern PFNGLLINKPROGRAMARBPROC glLinkProgramARB;
  120. extern PFNGLUSEPROGRAMOBJECTARBPROC glUseProgramObjectARB;
  121. extern PFNGLVALIDATEPROGRAMARBPROC glValidateProgramARB;
  122. extern PFNGLUNIFORM1FARBPROC glUniform1fARB;
  123. extern PFNGLUNIFORM2FARBPROC glUniform2fARB;
  124. extern PFNGLUNIFORM3FARBPROC glUniform3fARB;
  125. extern PFNGLUNIFORM4FARBPROC glUniform4fARB;
  126. extern PFNGLUNIFORM1IARBPROC glUniform1iARB;
  127. extern PFNGLUNIFORM2IARBPROC glUniform2iARB;
  128. extern PFNGLUNIFORM3IARBPROC glUniform3iARB;
  129. extern PFNGLUNIFORM4IARBPROC glUniform4iARB;
  130. extern PFNGLUNIFORM1FVARBPROC glUniform1fvARB;
  131. extern PFNGLUNIFORM2FVARBPROC glUniform2fvARB;
  132. extern PFNGLUNIFORM3FVARBPROC glUniform3fvARB;
  133. extern PFNGLUNIFORM4FVARBPROC glUniform4fvARB;
  134. extern PFNGLUNIFORM1IVARBPROC glUniform1ivARB;
  135. extern PFNGLUNIFORM2IVARBPROC glUniform2ivARB;
  136. extern PFNGLUNIFORM3IVARBPROC glUniform3ivARB;
  137. extern PFNGLUNIFORM4IVARBPROC glUniform4ivARB;
  138. extern PFNGLUNIFORMMATRIX2FVARBPROC glUniformMatrix2fvARB;
  139. extern PFNGLUNIFORMMATRIX3FVARBPROC glUniformMatrix3fvARB;
  140. extern PFNGLUNIFORMMATRIX4FVARBPROC glUniformMatrix4fvARB;
  141. extern PFNGLGETOBJECTPARAMETERFVARBPROC glGetObjectParameterfvARB;
  142. extern PFNGLGETOBJECTPARAMETERIVARBPROC glGetObjectParameterivARB;
  143. extern PFNGLGETINFOLOGARBPROC glGetInfoLogARB;
  144. extern PFNGLGETATTACHEDOBJECTSARBPROC glGetAttachedObjectsARB;
  145. extern PFNGLGETUNIFORMLOCATIONARBPROC glGetUniformLocationARB;
  146. extern PFNGLGETACTIVEUNIFORMARBPROC glGetActiveUniformARB;
  147. extern PFNGLGETUNIFORMFVARBPROC glGetUniformfvARB;
  148. extern PFNGLGETUNIFORMIVARBPROC glGetUniformivARB;
  149. extern PFNGLGETSHADERSOURCEARBPROC glGetShaderSourceARB;
  150. // GL_ARB_vertex_shader
  151. extern PFNGLVERTEXATTRIB1DARBPROC glVertexAttrib1dARB;
  152. extern PFNGLVERTEXATTRIB1DVARBPROC glVertexAttrib1dvARB;
  153. extern PFNGLVERTEXATTRIB1FARBPROC glVertexAttrib1fARB;
  154. extern PFNGLVERTEXATTRIB1FVARBPROC glVertexAttrib1fvARB;
  155. extern PFNGLVERTEXATTRIB1SARBPROC glVertexAttrib1sARB;
  156. extern PFNGLVERTEXATTRIB1SVARBPROC glVertexAttrib1svARB;
  157. extern PFNGLVERTEXATTRIB2DARBPROC glVertexAttrib2dARB;
  158. extern PFNGLVERTEXATTRIB2DVARBPROC glVertexAttrib2dvARB;
  159. extern PFNGLVERTEXATTRIB2FARBPROC glVertexAttrib2fARB;
  160. extern PFNGLVERTEXATTRIB2FVARBPROC glVertexAttrib2fvARB;
  161. extern PFNGLVERTEXATTRIB2SARBPROC glVertexAttrib2sARB;
  162. extern PFNGLVERTEXATTRIB2SVARBPROC glVertexAttrib2svARB;
  163. extern PFNGLVERTEXATTRIB3DARBPROC glVertexAttrib3dARB;
  164. extern PFNGLVERTEXATTRIB3DVARBPROC glVertexAttrib3dvARB;
  165. extern PFNGLVERTEXATTRIB3FARBPROC glVertexAttrib3fARB;
  166. extern PFNGLVERTEXATTRIB3FVARBPROC glVertexAttrib3fvARB;
  167. extern PFNGLVERTEXATTRIB3SARBPROC glVertexAttrib3sARB;
  168. extern PFNGLVERTEXATTRIB3SVARBPROC glVertexAttrib3svARB;
  169. extern PFNGLVERTEXATTRIB4NBVARBPROC glVertexAttrib4nbvARB;
  170. extern PFNGLVERTEXATTRIB4NIVARBPROC glVertexAttrib4nivARB;
  171. extern PFNGLVERTEXATTRIB4NSVARBPROC glVertexAttrib4nsvARB;
  172. extern PFNGLVERTEXATTRIB4NUBARBPROC glVertexAttrib4nubARB;
  173. extern PFNGLVERTEXATTRIB4NUBVARBPROC glVertexAttrib4nubvARB;
  174. extern PFNGLVERTEXATTRIB4NUIVARBPROC glVertexAttrib4nuivARB;
  175. extern PFNGLVERTEXATTRIB4NUSVARBPROC glVertexAttrib4nusvARB;
  176. extern PFNGLVERTEXATTRIB4BVARBPROC glVertexAttrib4bvARB;
  177. extern PFNGLVERTEXATTRIB4DARBPROC glVertexAttrib4dARB;
  178. extern PFNGLVERTEXATTRIB4DVARBPROC glVertexAttrib4dvARB;
  179. extern PFNGLVERTEXATTRIB4FARBPROC glVertexAttrib4fARB;
  180. extern PFNGLVERTEXATTRIB4FVARBPROC glVertexAttrib4fvARB;
  181. extern PFNGLVERTEXATTRIB4IVARBPROC glVertexAttrib4ivARB;
  182. extern PFNGLVERTEXATTRIB4SARBPROC glVertexAttrib4sARB;
  183. extern PFNGLVERTEXATTRIB4SVARBPROC glVertexAttrib4svARB;
  184. extern PFNGLVERTEXATTRIB4UBVARBPROC glVertexAttrib4ubvARB;
  185. extern PFNGLVERTEXATTRIB4UIVARBPROC glVertexAttrib4uivARB;
  186. extern PFNGLVERTEXATTRIB4USVARBPROC glVertexAttrib4usvARB;
  187. extern PFNGLVERTEXATTRIBPOINTERARBPROC glVertexAttribPointerARB;
  188. extern PFNGLENABLEVERTEXATTRIBARRAYARBPROC glEnableVertexAttribArrayARB;
  189. extern PFNGLDISABLEVERTEXATTRIBARRAYARBPROC glDisableVertexAttribArrayARB;
  190. extern PFNGLPROGRAMSTRINGARBPROC glProgramStringARB;
  191. extern PFNGLBINDPROGRAMARBPROC glBindProgramARB;
  192. extern PFNGLDELETEPROGRAMSARBPROC glDeleteProgramsARB;
  193. extern PFNGLGENPROGRAMSARBPROC glGenProgramsARB;
  194. extern PFNGLPROGRAMENVPARAMETER4DARBPROC glProgramEnvParameter4dARB;
  195. extern PFNGLPROGRAMENVPARAMETER4DVARBPROC glProgramEnvParameter4dvARB;
  196. extern PFNGLPROGRAMENVPARAMETER4FARBPROC glProgramEnvParameter4fARB;
  197. extern PFNGLPROGRAMENVPARAMETER4FVARBPROC glProgramEnvParameter4fvARB;
  198. extern PFNGLPROGRAMLOCALPARAMETER4DARBPROC glProgramLocalParameter4dARB;
  199. extern PFNGLPROGRAMLOCALPARAMETER4DVARBPROC glProgramLocalParameter4dvARB;
  200. extern PFNGLPROGRAMLOCALPARAMETER4FARBPROC glProgramLocalParameter4fARB;
  201. extern PFNGLPROGRAMLOCALPARAMETER4FVARBPROC glProgramLocalParameter4fvARB;
  202. extern PFNGLGETPROGRAMENVPARAMETERDVARBPROC glGetProgramEnvParameterdvARB;
  203. extern PFNGLGETPROGRAMENVPARAMETERFVARBPROC glGetProgramEnvParameterfvARB;
  204. extern PFNGLGETPROGRAMLOCALPARAMETERDVARBPROC glGetProgramLocalParameterdvARB;
  205. extern PFNGLGETPROGRAMLOCALPARAMETERFVARBPROC glGetProgramLocalParameterfvARB;
  206. extern PFNGLGETPROGRAMIVARBPROC glGetProgramivARB;
  207. extern PFNGLGETPROGRAMSTRINGARBPROC glGetProgramStringARB;
  208. extern PFNGLGETVERTEXATTRIBDVARBPROC glGetVertexAttribdvARB;
  209. extern PFNGLGETVERTEXATTRIBFVARBPROC glGetVertexAttribfvARB;
  210. extern PFNGLGETVERTEXATTRIBIVARBPROC glGetVertexAttribivARB;
  211. extern PFNGLGETVERTEXATTRIBPOINTERVARBPROC glGetVertexAttribPointervARB;
  212. extern PFNGLISPROGRAMARBPROC glIsProgramARB;
  213. extern PFNGLBINDATTRIBLOCATIONARBPROC glBindAttribLocationARB;
  214. extern PFNGLGETACTIVEATTRIBARBPROC glGetActiveAttribARB;
  215. extern PFNGLGETATTRIBLOCATIONARBPROC glGetAttribLocationARB;
  216. extern PFNGLCOMPRESSEDTEXIMAGE2DARBPROC glCompressedTexImage2DARB;
  217. extern PFNGLGETCOMPRESSEDTEXIMAGEARBPROC glGetCompressedTexImageARB;
  218. extern PFNGLCOLORTABLEEXTPROC glColorTableEXT;
  219. //GL_EXT_blend_func_separate
  220. extern PFNGLBLENDFUNCSEPARATEEXTPROC glBlendFuncSeparateEXT;
  221. //GL_EXT_framebuffer_object
  222. extern PFNGLISRENDERBUFFEREXTPROC glIsRenderbufferEXT;
  223. extern PFNGLBINDRENDERBUFFEREXTPROC glBindRenderbufferEXT;
  224. extern PFNGLDELETERENDERBUFFERSEXTPROC glDeleteRenderbuffersEXT;
  225. extern PFNGLGENRENDERBUFFERSEXTPROC glGenRenderbuffersEXT;
  226. extern PFNGLRENDERBUFFERSTORAGEEXTPROC glRenderbufferStorageEXT;
  227. extern PFNGLGETRENDERBUFFERPARAMETERIVEXTPROC glGetRenderbufferParameterivEXT;
  228. extern PFNGLISFRAMEBUFFEREXTPROC glIsFramebufferEXT;
  229. extern PFNGLBINDFRAMEBUFFEREXTPROC glBindFramebufferEXT;
  230. extern PFNGLDELETEFRAMEBUFFERSEXTPROC glDeleteFramebuffersEXT;
  231. extern PFNGLGENFRAMEBUFFERSEXTPROC glGenFramebuffersEXT;
  232. extern PFNGLCHECKFRAMEBUFFERSTATUSEXTPROC glCheckFramebufferStatusEXT;
  233. extern PFNGLFRAMEBUFFERTEXTURE1DEXTPROC glFramebufferTexture1DEXT;
  234. extern PFNGLFRAMEBUFFERTEXTURE2DEXTPROC glFramebufferTexture2DEXT;
  235. extern PFNGLFRAMEBUFFERTEXTURE3DEXTPROC glFramebufferTexture3DEXT;
  236. extern PFNGLFRAMEBUFFERRENDERBUFFEREXTPROC glFramebufferRenderbufferEXT;
  237. extern PFNGLGETFRAMEBUFFERATTACHMENTPARAMETERIVEXTPROC glGetFramebufferAttachmentParameterivEXT;
  238. extern PFNGLGENERATEMIPMAPEXTPROC glGenerateMipmapEXT;
  239. #elif LL_MESA
  240. //----------------------------------------------------------------------------
  241. // MESA headers
  242. // quotes so we get libraries/.../GL/ version
  243. #define GL_GLEXT_PROTOTYPES 1
  244. #include "GL/gl.h"
  245. #include "GL/glext.h"
  246. #include "GL/glu.h"
  247. // The __APPLE__ kludge is to make glh_extensions.h not symbol-clash horribly
  248. # define __APPLE__
  249. # include "GL/glh_extensions.h"
  250. # undef __APPLE__
  251. #elif LL_LINUX
  252. //----------------------------------------------------------------------------
  253. // LL_LINUX
  254. //----------------------------------------------------------------------------
  255. // Linux, MESA headers, but not necessarily assuming MESA runtime.
  256. // quotes so we get libraries/.../GL/ version
  257. #include "GL/gl.h"
  258. #include "GL/glext.h"
  259. #include "GL/glu.h"
  260. #if LL_LINUX && !LL_MESA_HEADLESS
  261. // The __APPLE__ kludge is to make glh_extensions.h not symbol-clash horribly
  262. # define __APPLE__
  263. # include "GL/glh_extensions.h"
  264. # undef __APPLE__
  265. /* Although SDL very likely ends up calling glXGetProcAddress() itself,
  266. if we use SDL_GL_GetProcAddress() then we get bogus addresses back on
  267. some systems. Weird. */
  268. /*# include "SDL/SDL.h"
  269. # define GLH_EXT_GET_PROC_ADDRESS(p) SDL_GL_GetProcAddress(p) */
  270. #define GLX_GLXEXT_PROTOTYPES 1
  271. # include "GL/glx.h"
  272. # include "GL/glxext.h"
  273. // Use glXGetProcAddressARB instead of glXGetProcAddress - the ARB symbol
  274. // is considered 'legacy' but works on more machines.
  275. # define GLH_EXT_GET_PROC_ADDRESS(p) glXGetProcAddressARB((const GLubyte*)(p))
  276. #endif // LL_LINUX && !LL_MESA_HEADLESS
  277. #if LL_LINUX && defined(WINGDIAPI)
  278. // WINGDIAPI gets set if we are using the linux nvidia gl.h header which needs
  279. // the functions below setting up.
  280. # define LL_LINUX_NV_GL_HEADERS 1
  281. #else
  282. # define LL_LINUX_NV_GL_HEADERS 0
  283. #endif // LL_LINUX && defined(WINGDIAPI)
  284. #if LL_LINUX_NV_GL_HEADERS
  285. // Missing functions when using nvidia headers:
  286. extern PFNGLACTIVETEXTUREARBPROC glActiveTextureARB;
  287. extern PFNGLCLIENTACTIVETEXTUREARBPROC glClientActiveTextureARB;
  288. extern PFNGLDRAWRANGEELEMENTSPROC glDrawRangeElements;
  289. #endif // LL_LINUX_NV_GL_HEADERS
  290. // GL_ARB_vertex_array_object
  291. extern PFNGLBINDVERTEXARRAYPROC glBindVertexArray;
  292. extern PFNGLDELETEVERTEXARRAYSPROC glDeleteVertexArrays;
  293. extern PFNGLGENVERTEXARRAYSPROC glGenVertexArrays;
  294. extern PFNGLISVERTEXARRAYPROC glIsVertexArray;
  295. // GL_ARB_vertex_buffer_object
  296. extern PFNGLBINDBUFFERARBPROC glBindBufferARB;
  297. extern PFNGLDELETEBUFFERSARBPROC glDeleteBuffersARB;
  298. extern PFNGLGENBUFFERSARBPROC glGenBuffersARB;
  299. extern PFNGLISBUFFERARBPROC glIsBufferARB;
  300. extern PFNGLBUFFERDATAARBPROC glBufferDataARB;
  301. extern PFNGLBUFFERSUBDATAARBPROC glBufferSubDataARB;
  302. extern PFNGLGETBUFFERSUBDATAARBPROC glGetBufferSubDataARB;
  303. extern PFNGLMAPBUFFERARBPROC glMapBufferARB;
  304. extern PFNGLUNMAPBUFFERARBPROC glUnmapBufferARB;
  305. extern PFNGLGETBUFFERPARAMETERIVARBPROC glGetBufferParameterivARB;
  306. extern PFNGLGETBUFFERPOINTERVARBPROC glGetBufferPointervARB;
  307. // GL_ARB_sync
  308. extern PFNGLFENCESYNCPROC glFenceSync;
  309. extern PFNGLISSYNCPROC glIsSync;
  310. extern PFNGLDELETESYNCPROC glDeleteSync;
  311. extern PFNGLCLIENTWAITSYNCPROC glClientWaitSync;
  312. extern PFNGLWAITSYNCPROC glWaitSync;
  313. extern PFNGLGETINTEGER64VPROC glGetInteger64v;
  314. extern PFNGLGETSYNCIVPROC glGetSynciv;
  315. // GL_APPLE_flush_buffer_range
  316. extern PFNGLBUFFERPARAMETERIAPPLEPROC glBufferParameteriAPPLE;
  317. extern PFNGLFLUSHMAPPEDBUFFERRANGEAPPLEPROC glFlushMappedBufferRangeAPPLE;
  318. // GL_ARB_map_buffer_range
  319. extern PFNGLMAPBUFFERRANGEPROC glMapBufferRange;
  320. extern PFNGLFLUSHMAPPEDBUFFERRANGEPROC glFlushMappedBufferRange;
  321. // GL_ATI_vertex_array_object
  322. extern PFNGLNEWOBJECTBUFFERATIPROC glNewObjectBufferATI;
  323. extern PFNGLISOBJECTBUFFERATIPROC glIsObjectBufferATI;
  324. extern PFNGLUPDATEOBJECTBUFFERATIPROC glUpdateObjectBufferATI;
  325. extern PFNGLGETOBJECTBUFFERFVATIPROC glGetObjectBufferfvATI;
  326. extern PFNGLGETOBJECTBUFFERIVATIPROC glGetObjectBufferivATI;
  327. extern PFNGLFREEOBJECTBUFFERATIPROC glFreeObjectBufferATI;
  328. extern PFNGLARRAYOBJECTATIPROC glArrayObjectATI;
  329. extern PFNGLVERTEXATTRIBARRAYOBJECTATIPROC glVertexAttribArrayObjectATI;
  330. extern PFNGLGETARRAYOBJECTFVATIPROC glGetArrayObjectfvATI;
  331. extern PFNGLGETARRAYOBJECTIVATIPROC glGetArrayObjectivATI;
  332. extern PFNGLVARIANTARRAYOBJECTATIPROC glVariantObjectArrayATI;
  333. extern PFNGLGETVARIANTARRAYOBJECTFVATIPROC glGetVariantArrayObjectfvATI;
  334. extern PFNGLGETVARIANTARRAYOBJECTIVATIPROC glGetVariantArrayObjectivATI;
  335. // GL_ARB_occlusion_query
  336. extern PFNGLGENQUERIESARBPROC glGenQueriesARB;
  337. extern PFNGLDELETEQUERIESARBPROC glDeleteQueriesARB;
  338. extern PFNGLISQUERYARBPROC glIsQueryARB;
  339. extern PFNGLBEGINQUERYARBPROC glBeginQueryARB;
  340. extern PFNGLENDQUERYARBPROC glEndQueryARB;
  341. extern PFNGLGETQUERYIVARBPROC glGetQueryivARB;
  342. extern PFNGLGETQUERYOBJECTIVARBPROC glGetQueryObjectivARB;
  343. extern PFNGLGETQUERYOBJECTUIVARBPROC glGetQueryObjectuivARB;
  344. // GL_ARB_point_parameters
  345. extern PFNGLPOINTPARAMETERFARBPROC glPointParameterfARB;
  346. extern PFNGLPOINTPARAMETERFVARBPROC glPointParameterfvARB;
  347. // GL_ARB_shader_objects
  348. extern PFNGLDELETEOBJECTARBPROC glDeleteObjectARB;
  349. extern PFNGLGETHANDLEARBPROC glGetHandleARB;
  350. extern PFNGLDETACHOBJECTARBPROC glDetachObjectARB;
  351. extern PFNGLCREATESHADEROBJECTARBPROC glCreateShaderObjectARB;
  352. extern PFNGLSHADERSOURCEARBPROC glShaderSourceARB;
  353. extern PFNGLCOMPILESHADERARBPROC glCompileShaderARB;
  354. extern PFNGLCREATEPROGRAMOBJECTARBPROC glCreateProgramObjectARB;
  355. extern PFNGLATTACHOBJECTARBPROC glAttachObjectARB;
  356. extern PFNGLLINKPROGRAMARBPROC glLinkProgramARB;
  357. extern PFNGLUSEPROGRAMOBJECTARBPROC glUseProgramObjectARB;
  358. extern PFNGLVALIDATEPROGRAMARBPROC glValidateProgramARB;
  359. extern PFNGLUNIFORM1FARBPROC glUniform1fARB;
  360. extern PFNGLUNIFORM2FARBPROC glUniform2fARB;
  361. extern PFNGLUNIFORM3FARBPROC glUniform3fARB;
  362. extern PFNGLUNIFORM4FARBPROC glUniform4fARB;
  363. extern PFNGLUNIFORM1IARBPROC glUniform1iARB;
  364. extern PFNGLUNIFORM2IARBPROC glUniform2iARB;
  365. extern PFNGLUNIFORM3IARBPROC glUniform3iARB;
  366. extern PFNGLUNIFORM4IARBPROC glUniform4iARB;
  367. extern PFNGLUNIFORM1FVARBPROC glUniform1fvARB;
  368. extern PFNGLUNIFORM2FVARBPROC glUniform2fvARB;
  369. extern PFNGLUNIFORM3FVARBPROC glUniform3fvARB;
  370. extern PFNGLUNIFORM4FVARBPROC glUniform4fvARB;
  371. extern PFNGLUNIFORM1IVARBPROC glUniform1ivARB;
  372. extern PFNGLUNIFORM2IVARBPROC glUniform2ivARB;
  373. extern PFNGLUNIFORM3IVARBPROC glUniform3ivARB;
  374. extern PFNGLUNIFORM4IVARBPROC glUniform4ivARB;
  375. extern PFNGLUNIFORMMATRIX2FVARBPROC glUniformMatrix2fvARB;
  376. extern PFNGLUNIFORMMATRIX3FVARBPROC glUniformMatrix3fvARB;
  377. extern PFNGLUNIFORMMATRIX4FVARBPROC glUniformMatrix4fvARB;
  378. extern PFNGLGETOBJECTPARAMETERFVARBPROC glGetObjectParameterfvARB;
  379. extern PFNGLGETOBJECTPARAMETERIVARBPROC glGetObjectParameterivARB;
  380. extern PFNGLGETINFOLOGARBPROC glGetInfoLogARB;
  381. extern PFNGLGETATTACHEDOBJECTSARBPROC glGetAttachedObjectsARB;
  382. extern PFNGLGETUNIFORMLOCATIONARBPROC glGetUniformLocationARB;
  383. extern PFNGLGETACTIVEUNIFORMARBPROC glGetActiveUniformARB;
  384. extern PFNGLGETUNIFORMFVARBPROC glGetUniformfvARB;
  385. extern PFNGLGETUNIFORMIVARBPROC glGetUniformivARB;
  386. extern PFNGLGETSHADERSOURCEARBPROC glGetShaderSourceARB;
  387. // GL_ARB_vertex_shader
  388. extern PFNGLVERTEXATTRIB1DARBPROC glVertexAttrib1dARB;
  389. extern PFNGLVERTEXATTRIB1DVARBPROC glVertexAttrib1dvARB;
  390. extern PFNGLVERTEXATTRIB1FARBPROC glVertexAttrib1fARB;
  391. extern PFNGLVERTEXATTRIB1FVARBPROC glVertexAttrib1fvARB;
  392. extern PFNGLVERTEXATTRIB1SARBPROC glVertexAttrib1sARB;
  393. extern PFNGLVERTEXATTRIB1SVARBPROC glVertexAttrib1svARB;
  394. extern PFNGLVERTEXATTRIB2DARBPROC glVertexAttrib2dARB;
  395. extern PFNGLVERTEXATTRIB2DVARBPROC glVertexAttrib2dvARB;
  396. extern PFNGLVERTEXATTRIB2FARBPROC glVertexAttrib2fARB;
  397. extern PFNGLVERTEXATTRIB2FVARBPROC glVertexAttrib2fvARB;
  398. extern PFNGLVERTEXATTRIB2SARBPROC glVertexAttrib2sARB;
  399. extern PFNGLVERTEXATTRIB2SVARBPROC glVertexAttrib2svARB;
  400. extern PFNGLVERTEXATTRIB3DARBPROC glVertexAttrib3dARB;
  401. extern PFNGLVERTEXATTRIB3DVARBPROC glVertexAttrib3dvARB;
  402. extern PFNGLVERTEXATTRIB3FARBPROC glVertexAttrib3fARB;
  403. extern PFNGLVERTEXATTRIB3FVARBPROC glVertexAttrib3fvARB;
  404. extern PFNGLVERTEXATTRIB3SARBPROC glVertexAttrib3sARB;
  405. extern PFNGLVERTEXATTRIB3SVARBPROC glVertexAttrib3svARB;
  406. extern PFNGLVERTEXATTRIB4NBVARBPROC glVertexAttrib4nbvARB;
  407. extern PFNGLVERTEXATTRIB4NIVARBPROC glVertexAttrib4nivARB;
  408. extern PFNGLVERTEXATTRIB4NSVARBPROC glVertexAttrib4nsvARB;
  409. extern PFNGLVERTEXATTRIB4NUBARBPROC glVertexAttrib4nubARB;
  410. extern PFNGLVERTEXATTRIB4NUBVARBPROC glVertexAttrib4nubvARB;
  411. extern PFNGLVERTEXATTRIB4NUIVARBPROC glVertexAttrib4nuivARB;
  412. extern PFNGLVERTEXATTRIB4NUSVARBPROC glVertexAttrib4nusvARB;
  413. extern PFNGLVERTEXATTRIB4BVARBPROC glVertexAttrib4bvARB;
  414. extern PFNGLVERTEXATTRIB4DARBPROC glVertexAttrib4dARB;
  415. extern PFNGLVERTEXATTRIB4DVARBPROC glVertexAttrib4dvARB;
  416. extern PFNGLVERTEXATTRIB4FARBPROC glVertexAttrib4fARB;
  417. extern PFNGLVERTEXATTRIB4FVARBPROC glVertexAttrib4fvARB;
  418. extern PFNGLVERTEXATTRIB4IVARBPROC glVertexAttrib4ivARB;
  419. extern PFNGLVERTEXATTRIB4SARBPROC glVertexAttrib4sARB;
  420. extern PFNGLVERTEXATTRIB4SVARBPROC glVertexAttrib4svARB;
  421. extern PFNGLVERTEXATTRIB4UBVARBPROC glVertexAttrib4ubvARB;
  422. extern PFNGLVERTEXATTRIB4UIVARBPROC glVertexAttrib4uivARB;
  423. extern PFNGLVERTEXATTRIB4USVARBPROC glVertexAttrib4usvARB;
  424. extern PFNGLVERTEXATTRIBPOINTERARBPROC glVertexAttribPointerARB;
  425. extern PFNGLENABLEVERTEXATTRIBARRAYARBPROC glEnableVertexAttribArrayARB;
  426. extern PFNGLDISABLEVERTEXATTRIBARRAYARBPROC glDisableVertexAttribArrayARB;
  427. extern PFNGLPROGRAMSTRINGARBPROC glProgramStringARB;
  428. extern PFNGLBINDPROGRAMARBPROC glBindProgramARB;
  429. extern PFNGLDELETEPROGRAMSARBPROC glDeleteProgramsARB;
  430. extern PFNGLGENPROGRAMSARBPROC glGenProgramsARB;
  431. extern PFNGLPROGRAMENVPARAMETER4DARBPROC glProgramEnvParameter4dARB;
  432. extern PFNGLPROGRAMENVPARAMETER4DVARBPROC glProgramEnvParameter4dvARB;
  433. extern PFNGLPROGRAMENVPARAMETER4FARBPROC glProgramEnvParameter4fARB;
  434. extern PFNGLPROGRAMENVPARAMETER4FVARBPROC glProgramEnvParameter4fvARB;
  435. extern PFNGLPROGRAMLOCALPARAMETER4DARBPROC glProgramLocalParameter4dARB;
  436. extern PFNGLPROGRAMLOCALPARAMETER4DVARBPROC glProgramLocalParameter4dvARB;
  437. extern PFNGLPROGRAMLOCALPARAMETER4FARBPROC glProgramLocalParameter4fARB;
  438. extern PFNGLPROGRAMLOCALPARAMETER4FVARBPROC glProgramLocalParameter4fvARB;
  439. extern PFNGLGETPROGRAMENVPARAMETERDVARBPROC glGetProgramEnvParameterdvARB;
  440. extern PFNGLGETPROGRAMENVPARAMETERFVARBPROC glGetProgramEnvParameterfvARB;
  441. extern PFNGLGETPROGRAMLOCALPARAMETERDVARBPROC glGetProgramLocalParameterdvARB;
  442. extern PFNGLGETPROGRAMLOCALPARAMETERFVARBPROC glGetProgramLocalParameterfvARB;
  443. extern PFNGLGETPROGRAMIVARBPROC glGetProgramivARB;
  444. extern PFNGLGETPROGRAMSTRINGARBPROC glGetProgramStringARB;
  445. extern PFNGLGETVERTEXATTRIBDVARBPROC glGetVertexAttribdvARB;
  446. extern PFNGLGETVERTEXATTRIBFVARBPROC glGetVertexAttribfvARB;
  447. extern PFNGLGETVERTEXATTRIBIVARBPROC glGetVertexAttribivARB;
  448. extern PFNGLGETVERTEXATTRIBPOINTERVARBPROC glGetVertexAttribPointervARB;
  449. extern PFNGLISPROGRAMARBPROC glIsProgramARB;
  450. extern PFNGLBINDATTRIBLOCATIONARBPROC glBindAttribLocationARB;
  451. extern PFNGLGETACTIVEATTRIBARBPROC glGetActiveAttribARB;
  452. extern PFNGLGETATTRIBLOCATIONARBPROC glGetAttribLocationARB;
  453. extern PFNGLCOMPRESSEDTEXIMAGE2DARBPROC glCompressedTexImage2DARB;
  454. extern PFNGLGETCOMPRESSEDTEXIMAGEARBPROC glGetCompressedTexImageARB;
  455. //GL_EXT_blend_func_separate
  456. extern PFNGLBLENDFUNCSEPARATEEXTPROC glBlendFuncSeparateEXT;
  457. //GL_ARB_framebuffer_object
  458. extern PFNGLISRENDERBUFFERPROC glIsRenderbuffer;
  459. extern PFNGLBINDRENDERBUFFERPROC glBindRenderbuffer;
  460. extern PFNGLDELETERENDERBUFFERSPROC glDeleteRenderbuffers;
  461. extern PFNGLGENRENDERBUFFERSPROC glGenRenderbuffers;
  462. extern PFNGLRENDERBUFFERSTORAGEPROC glRenderbufferStorage;
  463. extern PFNGLGETRENDERBUFFERPARAMETERIVPROC glGetRenderbufferParameteriv;
  464. extern PFNGLISFRAMEBUFFERPROC glIsFramebuffer;
  465. extern PFNGLBINDFRAMEBUFFERPROC glBindFramebuffer;
  466. extern PFNGLDELETEFRAMEBUFFERSPROC glDeleteFramebuffers;
  467. extern PFNGLGENFRAMEBUFFERSPROC glGenFramebuffers;
  468. extern PFNGLCHECKFRAMEBUFFERSTATUSPROC glCheckFramebufferStatus;
  469. extern PFNGLFRAMEBUFFERTEXTURE1DPROC glFramebufferTexture1D;
  470. extern PFNGLFRAMEBUFFERTEXTURE2DPROC glFramebufferTexture2D;
  471. extern PFNGLFRAMEBUFFERTEXTURE3DPROC glFramebufferTexture3D;
  472. extern PFNGLFRAMEBUFFERRENDERBUFFERPROC glFramebufferRenderbuffer;
  473. extern PFNGLGETFRAMEBUFFERATTACHMENTPARAMETERIVPROC glGetFramebufferAttachmentParameteriv;
  474. extern PFNGLGENERATEMIPMAPPROC glGenerateMipmap;
  475. extern PFNGLBLITFRAMEBUFFERPROC glBlitFramebuffer;
  476. extern PFNGLRENDERBUFFERSTORAGEMULTISAMPLEPROC glRenderbufferStorageMultisample;
  477. extern PFNGLFRAMEBUFFERTEXTURELAYERPROC glFramebufferTextureLayer;
  478. //GL_ARB_draw_buffers
  479. extern PFNGLDRAWBUFFERSARBPROC glDrawBuffersARB;
  480. //GL_ARB_texture_multisample
  481. extern PFNGLTEXIMAGE2DMULTISAMPLEPROC glTexImage2DMultisample;
  482. extern PFNGLTEXIMAGE3DMULTISAMPLEPROC glTexImage3DMultisample;
  483. extern PFNGLGETMULTISAMPLEFVPROC glGetMultisamplefv;
  484. extern PFNGLSAMPLEMASKIPROC glSampleMaski;
  485. #elif LL_WINDOWS
  486. //----------------------------------------------------------------------------
  487. // LL_WINDOWS
  488. // windows gl headers depend on things like APIENTRY, so include windows.
  489. #define WIN32_LEAN_AND_MEAN
  490. #include <winsock2.h>
  491. #include <windows.h>
  492. //----------------------------------------------------------------------------
  493. #include <GL/gl.h>
  494. #include <GL/glu.h>
  495. // quotes so we get libraries/.../GL/ version
  496. #include "GL/glext.h"
  497. #include "GL/glh_extensions.h"
  498. // WGL_ARB_create_context
  499. extern PFNWGLCREATECONTEXTATTRIBSARBPROC wglCreateContextAttribsARB;
  500. extern PFNGLGETSTRINGIPROC glGetStringi;
  501. // GL_ARB_vertex_buffer_object
  502. extern PFNGLBINDBUFFERARBPROC glBindBufferARB;
  503. extern PFNGLDELETEBUFFERSARBPROC glDeleteBuffersARB;
  504. extern PFNGLGENBUFFERSARBPROC glGenBuffersARB;
  505. extern PFNGLISBUFFERARBPROC glIsBufferARB;
  506. extern PFNGLBUFFERDATAARBPROC glBufferDataARB;
  507. extern PFNGLBUFFERSUBDATAARBPROC glBufferSubDataARB;
  508. extern PFNGLGETBUFFERSUBDATAARBPROC glGetBufferSubDataARB;
  509. extern PFNGLMAPBUFFERARBPROC glMapBufferARB;
  510. extern PFNGLUNMAPBUFFERARBPROC glUnmapBufferARB;
  511. extern PFNGLGETBUFFERPARAMETERIVARBPROC glGetBufferParameterivARB;
  512. extern PFNGLGETBUFFERPOINTERVARBPROC glGetBufferPointervARB;
  513. // GL_ARB_vertex_array_object
  514. extern PFNGLBINDVERTEXARRAYPROC glBindVertexArray;
  515. extern PFNGLDELETEVERTEXARRAYSPROC glDeleteVertexArrays;
  516. extern PFNGLGENVERTEXARRAYSPROC glGenVertexArrays;
  517. extern PFNGLISVERTEXARRAYPROC glIsVertexArray;
  518. // GL_ARB_sync
  519. extern PFNGLFENCESYNCPROC glFenceSync;
  520. extern PFNGLISSYNCPROC glIsSync;
  521. extern PFNGLDELETESYNCPROC glDeleteSync;
  522. extern PFNGLCLIENTWAITSYNCPROC glClientWaitSync;
  523. extern PFNGLWAITSYNCPROC glWaitSync;
  524. extern PFNGLGETINTEGER64VPROC glGetInteger64v;
  525. extern PFNGLGETSYNCIVPROC glGetSynciv;
  526. // GL_APPLE_flush_buffer_range
  527. extern PFNGLBUFFERPARAMETERIAPPLEPROC glBufferParameteriAPPLE;
  528. extern PFNGLFLUSHMAPPEDBUFFERRANGEAPPLEPROC glFlushMappedBufferRangeAPPLE;
  529. // GL_ARB_map_buffer_range
  530. extern PFNGLMAPBUFFERRANGEPROC glMapBufferRange;
  531. extern PFNGLFLUSHMAPPEDBUFFERRANGEPROC glFlushMappedBufferRange;
  532. // GL_ATI_vertex_array_object
  533. extern PFNGLNEWOBJECTBUFFERATIPROC glNewObjectBufferATI;
  534. extern PFNGLISOBJECTBUFFERATIPROC glIsObjectBufferATI;
  535. extern PFNGLUPDATEOBJECTBUFFERATIPROC glUpdateObjectBufferATI;
  536. extern PFNGLGETOBJECTBUFFERFVATIPROC glGetObjectBufferfvATI;
  537. extern PFNGLGETOBJECTBUFFERIVATIPROC glGetObjectBufferivATI;
  538. extern PFNGLFREEOBJECTBUFFERATIPROC glFreeObjectBufferATI;
  539. extern PFNGLARRAYOBJECTATIPROC glArrayObjectATI;
  540. extern PFNGLVERTEXATTRIBARRAYOBJECTATIPROC glVertexAttribArrayObjectATI;
  541. extern PFNGLGETARRAYOBJECTFVATIPROC glGetArrayObjectfvATI;
  542. extern PFNGLGETARRAYOBJECTIVATIPROC glGetArrayObjectivATI;
  543. extern PFNGLVARIANTARRAYOBJECTATIPROC glVariantObjectArrayATI;
  544. extern PFNGLGETVARIANTARRAYOBJECTFVATIPROC glGetVariantArrayObjectfvATI;
  545. extern PFNGLGETVARIANTARRAYOBJECTIVATIPROC glGetVariantArrayObjectivATI;
  546. extern PFNWGLSWAPINTERVALEXTPROC wglSwapIntervalEXT;
  547. // GL_ARB_occlusion_query
  548. extern PFNGLGENQUERIESARBPROC glGenQueriesARB;
  549. extern PFNGLDELETEQUERIESARBPROC glDeleteQueriesARB;
  550. extern PFNGLISQUERYARBPROC glIsQueryARB;
  551. extern PFNGLBEGINQUERYARBPROC glBeginQueryARB;
  552. extern PFNGLENDQUERYARBPROC glEndQueryARB;
  553. extern PFNGLGETQUERYIVARBPROC glGetQueryivARB;
  554. extern PFNGLGETQUERYOBJECTIVARBPROC glGetQueryObjectivARB;
  555. extern PFNGLGETQUERYOBJECTUIVARBPROC glGetQueryObjectuivARB;
  556. // GL_ARB_point_parameters
  557. extern PFNGLPOINTPARAMETERFARBPROC glPointParameterfARB;
  558. extern PFNGLPOINTPARAMETERFVARBPROC glPointParameterfvARB;
  559. // GL_ARB_shader_objects
  560. extern PFNGLDELETEOBJECTARBPROC glDeleteObjectARB;
  561. extern PFNGLGETHANDLEARBPROC glGetHandleARB;
  562. extern PFNGLDETACHOBJECTARBPROC glDetachObjectARB;
  563. extern PFNGLCREATESHADEROBJECTARBPROC glCreateShaderObjectARB;
  564. extern PFNGLSHADERSOURCEARBPROC glShaderSourceARB;
  565. extern PFNGLCOMPILESHADERARBPROC glCompileShaderARB;
  566. extern PFNGLCREATEPROGRAMOBJECTARBPROC glCreateProgramObjectARB;
  567. extern PFNGLATTACHOBJECTARBPROC glAttachObjectARB;
  568. extern PFNGLLINKPROGRAMARBPROC glLinkProgramARB;
  569. extern PFNGLUSEPROGRAMOBJECTARBPROC glUseProgramObjectARB;
  570. extern PFNGLVALIDATEPROGRAMARBPROC glValidateProgramARB;
  571. extern PFNGLUNIFORM1FARBPROC glUniform1fARB;
  572. extern PFNGLUNIFORM2FARBPROC glUniform2fARB;
  573. extern PFNGLUNIFORM3FARBPROC glUniform3fARB;
  574. extern PFNGLUNIFORM4FARBPROC glUniform4fARB;
  575. extern PFNGLUNIFORM1IARBPROC glUniform1iARB;
  576. extern PFNGLUNIFORM2IARBPROC glUniform2iARB;
  577. extern PFNGLUNIFORM3IARBPROC glUniform3iARB;
  578. extern PFNGLUNIFORM4IARBPROC glUniform4iARB;
  579. extern PFNGLUNIFORM1FVARBPROC glUniform1fvARB;
  580. extern PFNGLUNIFORM2FVARBPROC glUniform2fvARB;
  581. extern PFNGLUNIFORM3FVARBPROC glUniform3fvARB;
  582. extern PFNGLUNIFORM4FVARBPROC glUniform4fvARB;
  583. extern PFNGLUNIFORM1IVARBPROC glUniform1ivARB;
  584. extern PFNGLUNIFORM2IVARBPROC glUniform2ivARB;
  585. extern PFNGLUNIFORM3IVARBPROC glUniform3ivARB;
  586. extern PFNGLUNIFORM4IVARBPROC glUniform4ivARB;
  587. extern PFNGLUNIFORMMATRIX2FVARBPROC glUniformMatrix2fvARB;
  588. extern PFNGLUNIFORMMATRIX3FVARBPROC glUniformMatrix3fvARB;
  589. extern PFNGLUNIFORMMATRIX4FVARBPROC glUniformMatrix4fvARB;
  590. extern PFNGLGETOBJECTPARAMETERFVARBPROC glGetObjectParameterfvARB;
  591. extern PFNGLGETOBJECTPARAMETERIVARBPROC glGetObjectParameterivARB;
  592. extern PFNGLGETINFOLOGARBPROC glGetInfoLogARB;
  593. extern PFNGLGETATTACHEDOBJECTSARBPROC glGetAttachedObjectsARB;
  594. extern PFNGLGETUNIFORMLOCATIONARBPROC glGetUniformLocationARB;
  595. extern PFNGLGETACTIVEUNIFORMARBPROC glGetActiveUniformARB;
  596. extern PFNGLGETUNIFORMFVARBPROC glGetUniformfvARB;
  597. extern PFNGLGETUNIFORMIVARBPROC glGetUniformivARB;
  598. extern PFNGLGETSHADERSOURCEARBPROC glGetShaderSourceARB;
  599. // GL_ARB_vertex_shader
  600. extern PFNGLVERTEXATTRIB1DARBPROC glVertexAttrib1dARB;
  601. extern PFNGLVERTEXATTRIB1DVARBPROC glVertexAttrib1dvARB;
  602. extern PFNGLVERTEXATTRIB1FARBPROC glVertexAttrib1fARB;
  603. extern PFNGLVERTEXATTRIB1FVARBPROC glVertexAttrib1fvARB;
  604. extern PFNGLVERTEXATTRIB1SARBPROC glVertexAttrib1sARB;
  605. extern PFNGLVERTEXATTRIB1SVARBPROC glVertexAttrib1svARB;
  606. extern PFNGLVERTEXATTRIB2DARBPROC glVertexAttrib2dARB;
  607. extern PFNGLVERTEXATTRIB2DVARBPROC glVertexAttrib2dvARB;
  608. extern PFNGLVERTEXATTRIB2FARBPROC glVertexAttrib2fARB;
  609. extern PFNGLVERTEXATTRIB2FVARBPROC glVertexAttrib2fvARB;
  610. extern PFNGLVERTEXATTRIB2SARBPROC glVertexAttrib2sARB;
  611. extern PFNGLVERTEXATTRIB2SVARBPROC glVertexAttrib2svARB;
  612. extern PFNGLVERTEXATTRIB3DARBPROC glVertexAttrib3dARB;
  613. extern PFNGLVERTEXATTRIB3DVARBPROC glVertexAttrib3dvARB;
  614. extern PFNGLVERTEXATTRIB3FARBPROC glVertexAttrib3fARB;
  615. extern PFNGLVERTEXATTRIB3FVARBPROC glVertexAttrib3fvARB;
  616. extern PFNGLVERTEXATTRIB3SARBPROC glVertexAttrib3sARB;
  617. extern PFNGLVERTEXATTRIB3SVARBPROC glVertexAttrib3svARB;
  618. extern PFNGLVERTEXATTRIB4NBVARBPROC glVertexAttrib4nbvARB;
  619. extern PFNGLVERTEXATTRIB4NIVARBPROC glVertexAttrib4nivARB;
  620. extern PFNGLVERTEXATTRIB4NSVARBPROC glVertexAttrib4nsvARB;
  621. extern PFNGLVERTEXATTRIB4NUBARBPROC glVertexAttrib4nubARB;
  622. extern PFNGLVERTEXATTRIB4NUBVARBPROC glVertexAttrib4nubvARB;
  623. extern PFNGLVERTEXATTRIB4NUIVARBPROC glVertexAttrib4nuivARB;
  624. extern PFNGLVERTEXATTRIB4NUSVARBPROC glVertexAttrib4nusvARB;
  625. extern PFNGLVERTEXATTRIB4BVARBPROC glVertexAttrib4bvARB;
  626. extern PFNGLVERTEXATTRIB4DARBPROC glVertexAttrib4dARB;
  627. extern PFNGLVERTEXATTRIB4DVARBPROC glVertexAttrib4dvARB;
  628. extern PFNGLVERTEXATTRIB4FARBPROC glVertexAttrib4fARB;
  629. extern PFNGLVERTEXATTRIB4FVARBPROC glVertexAttrib4fvARB;
  630. extern PFNGLVERTEXATTRIB4IVARBPROC glVertexAttrib4ivARB;
  631. extern PFNGLVERTEXATTRIB4SARBPROC glVertexAttrib4sARB;
  632. extern PFNGLVERTEXATTRIB4SVARBPROC glVertexAttrib4svARB;
  633. extern PFNGLVERTEXATTRIB4UBVARBPROC glVertexAttrib4ubvARB;
  634. extern PFNGLVERTEXATTRIB4UIVARBPROC glVertexAttrib4uivARB;
  635. extern PFNGLVERTEXATTRIB4USVARBPROC glVertexAttrib4usvARB;
  636. extern PFNGLVERTEXATTRIBPOINTERARBPROC glVertexAttribPointerARB;
  637. extern PFNGLENABLEVERTEXATTRIBARRAYARBPROC glEnableVertexAttribArrayARB;
  638. extern PFNGLDISABLEVERTEXATTRIBARRAYARBPROC glDisableVertexAttribArrayARB;
  639. extern PFNGLPROGRAMSTRINGARBPROC glProgramStringARB;
  640. extern PFNGLBINDPROGRAMARBPROC glBindProgramARB;
  641. extern PFNGLDELETEPROGRAMSARBPROC glDeleteProgramsARB;
  642. extern PFNGLGENPROGRAMSARBPROC glGenProgramsARB;
  643. extern PFNGLPROGRAMENVPARAMETER4DARBPROC glProgramEnvParameter4dARB;
  644. extern PFNGLPROGRAMENVPARAMETER4DVARBPROC glProgramEnvParameter4dvARB;
  645. extern PFNGLPROGRAMENVPARAMETER4FARBPROC glProgramEnvParameter4fARB;
  646. extern PFNGLPROGRAMENVPARAMETER4FVARBPROC glProgramEnvParameter4fvARB;
  647. extern PFNGLPROGRAMLOCALPARAMETER4DARBPROC glProgramLocalParameter4dARB;
  648. extern PFNGLPROGRAMLOCALPARAMETER4DVARBPROC glProgramLocalParameter4dvARB;
  649. extern PFNGLPROGRAMLOCALPARAMETER4FARBPROC glProgramLocalParameter4fARB;
  650. extern PFNGLPROGRAMLOCALPARAMETER4FVARBPROC glProgramLocalParameter4fvARB;
  651. extern PFNGLGETPROGRAMENVPARAMETERDVARBPROC glGetProgramEnvParameterdvARB;
  652. extern PFNGLGETPROGRAMENVPARAMETERFVARBPROC glGetProgramEnvParameterfvARB;
  653. extern PFNGLGETPROGRAMLOCALPARAMETERDVARBPROC glGetProgramLocalParameterdvARB;
  654. extern PFNGLGETPROGRAMLOCALPARAMETERFVARBPROC glGetProgramLocalParameterfvARB;
  655. extern PFNGLGETPROGRAMIVARBPROC glGetProgramivARB;
  656. extern PFNGLGETPROGRAMSTRINGARBPROC glGetProgramStringARB;
  657. extern PFNGLGETVERTEXATTRIBDVARBPROC glGetVertexAttribdvARB;
  658. extern PFNGLGETVERTEXATTRIBFVARBPROC glGetVertexAttribfvARB;
  659. extern PFNGLGETVERTEXATTRIBIVARBPROC glGetVertexAttribivARB;
  660. extern PFNGLGETVERTEXATTRIBPOINTERVARBPROC glGetVertexAttribPointervARB;
  661. extern PFNGLISPROGRAMARBPROC glIsProgramARB;
  662. extern PFNGLBINDATTRIBLOCATIONARBPROC glBindAttribLocationARB;
  663. extern PFNGLGETACTIVEATTRIBARBPROC glGetActiveAttribARB;
  664. extern PFNGLGETATTRIBLOCATIONARBPROC glGetAttribLocationARB;
  665. //GL_EXT_blend_func_separate
  666. extern PFNGLBLENDFUNCSEPARATEEXTPROC glBlendFuncSeparateEXT;
  667. //GL_ARB_framebuffer_object
  668. extern PFNGLISRENDERBUFFERPROC glIsRenderbuffer;
  669. extern PFNGLBINDRENDERBUFFERPROC glBindRenderbuffer;
  670. extern PFNGLDELETERENDERBUFFERSPROC glDeleteRenderbuffers;
  671. extern PFNGLGENRENDERBUFFERSPROC glGenRenderbuffers;
  672. extern PFNGLRENDERBUFFERSTORAGEPROC glRenderbufferStorage;
  673. extern PFNGLGETRENDERBUFFERPARAMETERIVPROC glGetRenderbufferParameteriv;
  674. extern PFNGLISFRAMEBUFFERPROC glIsFramebuffer;
  675. extern PFNGLBINDFRAMEBUFFERPROC glBindFramebuffer;
  676. extern PFNGLDELETEFRAMEBUFFERSPROC glDeleteFramebuffers;
  677. extern PFNGLGENFRAMEBUFFERSPROC glGenFramebuffers;
  678. extern PFNGLCHECKFRAMEBUFFERSTATUSPROC glCheckFramebufferStatus;
  679. extern PFNGLFRAMEBUFFERTEXTURE1DPROC glFramebufferTexture1D;
  680. extern PFNGLFRAMEBUFFERTEXTURE2DPROC glFramebufferTexture2D;
  681. extern PFNGLFRAMEBUFFERTEXTURE3DPROC glFramebufferTexture3D;
  682. extern PFNGLFRAMEBUFFERRENDERBUFFERPROC glFramebufferRenderbuffer;
  683. extern PFNGLGETFRAMEBUFFERATTACHMENTPARAMETERIVPROC glGetFramebufferAttachmentParameteriv;
  684. extern PFNGLGENERATEMIPMAPPROC glGenerateMipmap;
  685. extern PFNGLBLITFRAMEBUFFERPROC glBlitFramebuffer;
  686. extern PFNGLRENDERBUFFERSTORAGEMULTISAMPLEPROC glRenderbufferStorageMultisample;
  687. extern PFNGLFRAMEBUFFERTEXTURELAYERPROC glFramebufferTextureLayer;
  688. //GL_ARB_draw_buffers
  689. extern PFNGLDRAWBUFFERSARBPROC glDrawBuffersARB;
  690. //GL_ARB_texture_multisample
  691. extern PFNGLTEXIMAGE2DMULTISAMPLEPROC glTexImage2DMultisample;
  692. extern PFNGLTEXIMAGE3DMULTISAMPLEPROC glTexImage3DMultisample;
  693. extern PFNGLGETMULTISAMPLEFVPROC glGetMultisamplefv;
  694. extern PFNGLSAMPLEMASKIPROC glSampleMaski;
  695. //GL_ARB_debug_output
  696. extern PFNGLDEBUGMESSAGECONTROLARBPROC glDebugMessageControlARB;
  697. extern PFNGLDEBUGMESSAGEINSERTARBPROC glDebugMessageInsertARB;
  698. extern PFNGLDEBUGMESSAGECALLBACKARBPROC glDebugMessageCallbackARB;
  699. extern PFNGLGETDEBUGMESSAGELOGARBPROC glGetDebugMessageLogARB;
  700. #elif LL_DARWIN
  701. //----------------------------------------------------------------------------
  702. // LL_DARWIN
  703. #include <OpenGL/gl.h>
  704. #include <OpenGL/glu.h>
  705. #define GL_EXT_separate_specular_color 1
  706. #include <OpenGL/glext.h>
  707. #include "GL/glh_extensions.h"
  708. // These symbols don't exist on 10.3.9, so they have to be declared weak. Redeclaring them here fixes the problem.
  709. // Note that they also must not be called on 10.3.9. This should be taken care of by a runtime check for the existence of the GL extension.
  710. #include <AvailabilityMacros.h>
  711. //GL_EXT_blend_func_separate
  712. extern void glBlendFuncSeparateEXT(GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha) ;
  713. // GL_EXT_framebuffer_object
  714. extern GLboolean glIsRenderbufferEXT(GLuint renderbuffer) AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER;
  715. extern void glBindRenderbufferEXT(GLenum target, GLuint renderbuffer) AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER;
  716. extern void glDeleteRenderbuffersEXT(GLsizei n, const GLuint *renderbuffers) AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER;
  717. extern void glGenRenderbuffersEXT(GLsizei n, GLuint *renderbuffers) AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER;
  718. extern void glRenderbufferStorageEXT(GLenum target, GLenum internalformat, GLsizei width, GLsizei height) AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER;
  719. extern void glGetRenderbufferParameterivEXT(GLenum target, GLenum pname, GLint *params) AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER;
  720. extern GLboolean glIsFramebufferEXT(GLuint framebuffer) AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER;
  721. extern void glBindFramebufferEXT(GLenum target, GLuint framebuffer) AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER;
  722. extern void glDeleteFramebuffersEXT(GLsizei n, const GLuint *framebuffers) AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER;
  723. extern void glGenFramebuffersEXT(GLsizei n, GLuint *framebuffers) AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER;
  724. extern GLenum glCheckFramebufferStatusEXT(GLenum target) AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER;
  725. extern void glFramebufferTexture1DEXT(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level) AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER;
  726. extern void glFramebufferTexture2DEXT(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level) AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER;
  727. extern void glFramebufferTexture3DEXT(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset) AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER;
  728. extern void glFramebufferRenderbufferEXT(GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer) AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER;
  729. extern void glGetFramebufferAttachmentParameterivEXT(GLenum target, GLenum attachment, GLenum pname, GLint *params) AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER;
  730. extern void glGenerateMipmapEXT(GLenum target) AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER;
  731. #ifndef GL_ARB_framebuffer_object
  732. #define glGenerateMipmap glGenerateMipmapEXT
  733. #define GL_MAX_SAMPLES 0x8D57
  734. #endif
  735. // GL_ARB_draw_buffers
  736. extern void glDrawBuffersARB(GLsizei n, const GLenum* bufs) AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER;
  737. #ifdef __cplusplus
  738. extern "C" {
  739. #endif
  740. //
  741. // Define map buffer range headers on Mac
  742. //
  743. #ifndef GL_ARB_map_buffer_range
  744. #define GL_MAP_READ_BIT 0x0001
  745. #define GL_MAP_WRITE_BIT 0x0002
  746. #define GL_MAP_INVALIDATE_RANGE_BIT 0x0004
  747. #define GL_MAP_INVALIDATE_BUFFER_BIT 0x0008
  748. #define GL_MAP_FLUSH_EXPLICIT_BIT 0x0010
  749. #define GL_MAP_UNSYNCHRONIZED_BIT 0x0020
  750. #endif
  751. //
  752. // Define multisample headers on Mac
  753. //
  754. #ifndef GL_ARB_texture_multisample
  755. #define GL_SAMPLE_POSITION 0x8E50
  756. #define GL_SAMPLE_MASK 0x8E51
  757. #define GL_SAMPLE_MASK_VALUE 0x8E52
  758. #define GL_MAX_SAMPLE_MASK_WORDS 0x8E59
  759. #define GL_TEXTURE_2D_MULTISAMPLE 0x9100
  760. #define GL_PROXY_TEXTURE_2D_MULTISAMPLE 0x9101
  761. #define GL_TEXTURE_2D_MULTISAMPLE_ARRAY 0x9102
  762. #define GL_PROXY_TEXTURE_2D_MULTISAMPLE_ARRAY 0x9103
  763. #define GL_TEXTURE_BINDING_2D_MULTISAMPLE 0x9104
  764. #define GL_TEXTURE_BINDING_2D_MULTISAMPLE_ARRAY 0x9105
  765. #define GL_TEXTURE_SAMPLES 0x9106
  766. #define GL_TEXTURE_FIXED_SAMPLE_LOCATIONS 0x9107
  767. #define GL_SAMPLER_2D_MULTISAMPLE 0x9108
  768. #define GL_INT_SAMPLER_2D_MULTISAMPLE 0x9109
  769. #define GL_UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE 0x910A
  770. #define GL_SAMPLER_2D_MULTISAMPLE_ARRAY 0x910B
  771. #define GL_INT_SAMPLER_2D_MULTISAMPLE_ARRAY 0x910C
  772. #define GL_UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE_ARRAY 0x910D
  773. #define GL_MAX_COLOR_TEXTURE_SAMPLES 0x910E
  774. #define GL_MAX_DEPTH_TEXTURE_SAMPLES 0x910F
  775. #define GL_MAX_INTEGER_SAMPLES 0x9110
  776. #endif
  777. //
  778. // Define vertex buffer object headers on Mac
  779. //
  780. #ifndef GL_ARB_vertex_buffer_object
  781. #define GL_BUFFER_SIZE_ARB 0x8764
  782. #define GL_BUFFER_USAGE_ARB 0x8765
  783. #define GL_ARRAY_BUFFER_ARB 0x8892
  784. #define GL_ELEMENT_ARRAY_BUFFER_ARB 0x8893
  785. #define GL_ARRAY_BUFFER_BINDING_ARB 0x8894
  786. #define GL_ELEMENT_ARRAY_BUFFER_BINDING_ARB 0x8895
  787. #define GL_VERTEX_ARRAY_BUFFER_BINDING_ARB 0x8896
  788. #define GL_NORMAL_ARRAY_BUFFER_BINDING_ARB 0x8897
  789. #define GL_COLOR_ARRAY_BUFFER_BINDING_ARB 0x8898
  790. #define GL_INDEX_ARRAY_BUFFER_BINDING_ARB 0x8899
  791. #define GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING_ARB 0x889A
  792. #define GL_EDGE_FLAG_ARRAY_BUFFER_BINDING_ARB 0x889B
  793. #define GL_SECONDARY_COLOR_ARRAY_BUFFER_BINDING_ARB 0x889C
  794. #define GL_FOG_COORDINATE_ARRAY_BUFFER_BINDING_ARB 0x889D
  795. #define GL_WEIGHT_ARRAY_BUFFER_BINDING_ARB 0x889E
  796. #define GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING_ARB 0x889F
  797. #define GL_READ_ONLY_ARB 0x88B8
  798. #define GL_WRITE_ONLY_ARB 0x88B9
  799. #define GL_READ_WRITE_ARB 0x88BA
  800. #define GL_BUFFER_ACCESS_ARB 0x88BB
  801. #define GL_BUFFER_MAPPED_ARB 0x88BC
  802. #define GL_BUFFER_MAP_POINTER_ARB 0x88BD
  803. #define GL_STREAM_DRAW_ARB 0x88E0
  804. #define GL_STREAM_READ_ARB 0x88E1
  805. #define GL_STREAM_COPY_ARB 0x88E2
  806. #define GL_STATIC_DRAW_ARB 0x88E4
  807. #define GL_STATIC_READ_ARB 0x88E5
  808. #define GL_STATIC_COPY_ARB 0x88E6
  809. #define GL_DYNAMIC_DRAW_ARB 0x88E8
  810. #define GL_DYNAMIC_READ_ARB 0x88E9
  811. #define GL_DYNAMIC_COPY_ARB 0x88EA
  812. #endif
  813. #ifndef GL_ARB_vertex_buffer_object
  814. /* GL types for handling large vertex buffer objects */
  815. typedef intptr_t GLintptrARB;
  816. typedef intptr_t GLsizeiptrARB;
  817. #endif
  818. #ifndef GL_ARB_vertex_buffer_object
  819. #define GL_ARB_vertex_buffer_object 1
  820. #ifdef GL_GLEXT_FUNCTION_POINTERS
  821. typedef void (* glBindBufferARBProcPtr) (GLenum target, GLuint buffer);
  822. typedef void (* glDeleteBufferARBProcPtr) (GLsizei n, const GLuint *buffers);
  823. typedef void (* glGenBuffersARBProcPtr) (GLsizei n, GLuint *buffers);
  824. typedef GLboolean (* glIsBufferARBProcPtr) (GLuint buffer);
  825. typedef void (* glBufferDataARBProcPtr) (GLenum target, GLsizeiptrARB size, const GLvoid *data, GLenum usage);
  826. typedef void (* glBufferSubDataARBProcPtr) (GLenum target, GLintptrARB offset, GLsizeiptrARB size, const GLvoid *data);
  827. typedef void (* glGetBufferSubDataARBProcPtr) (GLenum target, GLintptrARB offset, GLsizeiptrARB size, GLvoid *data);
  828. typedef GLvoid* (* glMapBufferARBProcPtr) (GLenum target, GLenum access); /* Flawfinder: ignore */
  829. typedef GLboolean (* glUnmapBufferARBProcPtr) (GLenum target);
  830. typedef void (* glGetBufferParameterivARBProcPtr) (GLenum target, GLenum pname, GLint *params);
  831. typedef void (* glGetBufferPointervARBProcPtr) (GLenum target, GLenum pname, GLvoid* *params);
  832. #else
  833. extern void glBindBufferARB (GLenum, GLuint);
  834. extern void glDeleteBuffersARB (GLsizei, const GLuint *);
  835. extern void glGenBuffersARB (GLsizei, GLuint *);
  836. extern GLboolean glIsBufferARB (GLuint);
  837. extern void glBufferDataARB (GLenum, GLsizeiptrARB, const GLvoid *, GLenum);
  838. extern void glBufferSubDataARB (GLenum, GLintptrARB, GLsizeiptrARB, const GLvoid *);
  839. extern void glGetBufferSubDataARB (GLenum, GLintptrARB, GLsizeiptrARB, GLvoid *);
  840. extern GLvoid* glMapBufferARB (GLenum, GLenum);
  841. extern GLboolean glUnmapBufferARB (GLenum);
  842. extern void glGetBufferParameterivARB (GLenum, GLenum, GLint *);
  843. extern void glGetBufferPointervARB (GLenum, GLenum, GLvoid* *);
  844. #endif /* GL_GLEXT_FUNCTION_POINTERS */
  845. #endif
  846. #ifndef GL_ARB_texture_rg
  847. #define GL_RG 0x8227
  848. #define GL_RG_INTEGER 0x8228
  849. #define GL_R8 0x8229
  850. #define GL_R16 0x822A
  851. #define GL_RG8 0x822B
  852. #define GL_RG16 0x822C
  853. #define GL_R16F 0x822D
  854. #define GL_R32F 0x822E
  855. #define GL_RG16F 0x822F
  856. #define GL_RG32F 0x8230
  857. #define GL_R8I 0x8231
  858. #define GL_R8UI 0x8232
  859. #define GL_R16I 0x8233
  860. #define GL_R16UI 0x8234
  861. #define GL_R32I 0x8235
  862. #define GL_R32UI 0x8236
  863. #define GL_RG8I 0x8237
  864. #define GL_RG8UI 0x8238
  865. #define GL_RG16I 0x8239
  866. #define GL_RG16UI 0x823A
  867. #define GL_RG32I 0x823B
  868. #define GL_RG32UI 0x823C
  869. #endif
  870. // May be needed for DARWIN...
  871. // #ifndef GL_ARB_compressed_tex_image
  872. // #define GL_ARB_compressed_tex_image 1
  873. // #ifdef GL_GLEXT_FUNCTION_POINTERS
  874. // typedef void (* glCompressedTexImage1D) (GLenum, GLint, GLenum, GLsizei, GLint, GLsizei, const GLvoid*);
  875. // typedef void (* glCompressedTexImage2D) (GLenum, GLint, GLenum, GLsizei, GLsizei, GLint, GLsizei, const GLvoid*);
  876. // typedef void (* glCompressedTexImage3D) (GLenum, GLint, GLenum, GLsizei, GLsizei, GLsizei, GLint, GLsizei, const GLvoid*);
  877. // typedef void (* glCompressedTexSubImage1D) (GLenum, GLint, GLint, GLsizei, GLenum, GLsizei, const GLvoid*);
  878. // typedef void (* glCompressedTexSubImage2D) (GLenum, GLint, GLint, GLint, GLsizei, GLsizei, GLenum, GLsizei, const GLvoid*);
  879. // typedef void (* glCompressedTexSubImage3D) (GLenum, GLint, GLint, GLint, GLint, GLsizei, GLsizei, GLsizei, GLenum, GLsizei, const GLvoid*);
  880. // typedef void (* glGetCompressedTexImage) (GLenum, GLint, GLvoid*);
  881. // #else
  882. // extern void glCompressedTexImage1D (GLenum, GLint, GLenum, GLsizei, GLint, GLsizei, const GLvoid*);
  883. // extern void glCompressedTexImage2D (GLenum, GLint, GLenum, GLsizei, GLsizei, GLint, GLsizei, const GLvoid*);
  884. // extern void glCompressedTexImage3D (GLenum, GLint, GLenum, GLsizei, GLsizei, GLsizei, GLint, GLsizei, const GLvoid*);
  885. // extern void glCompressedTexSubImage1D (GLenum, GLint, GLint, GLsizei, GLenum, GLsizei, const GLvoid*);
  886. // extern void glCompressedTexSubImage2D (GLenum, GLint, GLint, GLint, GLsizei, GLsizei, GLenum, GLsizei, const GLvoid*);
  887. // extern void glCompressedTexSubImage3D (GLenum, GLint, GLint, GLint, GLint, GLsizei, GLsizei, GLsizei, GLenum, GLsizei, const GLvoid*);
  888. // extern void glGetCompressedTexImage (GLenum, GLint, GLvoid*);
  889. // #endif /* GL_GLEXT_FUNCTION_POINTERS */
  890. // #endif
  891. #ifdef __cplusplus
  892. }
  893. #endif
  894. #include <AGL/gl.h>
  895. #endif // LL_MESA / LL_WINDOWS / LL_DARWIN
  896. // Even when GL_ARB_depth_clamp is available in the driver, the (correct)
  897. // headers, and therefore GL_DEPTH_CLAMP might not be defined.
  898. // In that case GL_DEPTH_CLAMP_NV should be defined, but why not just
  899. // use the known numeric.
  900. //
  901. // To avoid #ifdef's in the code. Just define this here.
  902. #ifndef GL_DEPTH_CLAMP
  903. // Probably (still) called GL_DEPTH_CLAMP_NV.
  904. #define GL_DEPTH_CLAMP 0x864F
  905. #endif
  906. //GL_NVX_gpu_memory_info constants
  907. #ifndef GL_NVX_gpu_memory_info
  908. #define GL_NVX_gpu_memory_info
  909. #define GL_GPU_MEMORY_INFO_DEDICATED_VIDMEM_NVX 0x9047
  910. #define GL_GPU_MEMORY_INFO_TOTAL_AVAILABLE_MEMORY_NVX 0x9048
  911. #define GL_GPU_MEMORY_INFO_CURRENT_AVAILABLE_VIDMEM_NVX 0x9049
  912. #define GL_GPU_MEMORY_INFO_EVICTION_COUNT_NVX 0x904A
  913. #define GL_GPU_MEMORY_INFO_EVICTED_MEMORY_NVX 0x904B
  914. #endif
  915. //GL_ATI_meminfo constants
  916. #ifndef GL_ATI_meminfo
  917. #define GL_ATI_meminfo
  918. #define GL_VBO_FREE_MEMORY_ATI 0x87FB
  919. #define GL_TEXTURE_FREE_MEMORY_ATI 0x87FC
  920. #define GL_RENDERBUFFER_FREE_MEMORY_ATI 0x87FD
  921. #endif
  922. #endif // LL_LLGLHEADERS_H