PageRenderTime 62ms CodeModel.GetById 35ms RepoModel.GetById 0ms app.codeStats 0ms

/src/GraphicsExt.h

https://bitbucket.org/sirbrialliance/jonss3
C Header | 213 lines | 125 code | 5 blank | 83 comment | 0 complexity | ac36be80afda3d97893d8ba50998504c MD5 | raw file
  1. /**
  2. * This file is included multiple times with various macros defined to do various
  3. * things to load the various OpenGL extensions.
  4. *
  5. * Use Graphics::loadAvailableExtensions to fill these in.
  6. * Items that are NULL after that are unavailable.
  7. *
  8. * Therefore, you can, at runtime, check if a given extension is available with this simple idiom:
  9. * if (glFooFunc) {
  10. * //do the FooFunc version
  11. * glFooFunc(a, b, c);
  12. * } else {
  13. * //do the fallback version
  14. * }
  15. *
  16. * Regex for converting from the glext.h protos:
  17. * s/GLAPI .* APIENTRY (gl\w+)[^;]+;/GL_EXT_PROC(PFN$1PROC, $1);/
  18. * - then add back the camel case
  19. */
  20. #include <GL/glext.h>
  21. //Vertex buffer fu
  22. GL_EXT_PROC(PFNGLBINDBUFFERPROC, glBindBuffer);
  23. GL_EXT_PROC(PFNGLDELETEBUFFERSPROC, glDeleteBuffers);
  24. GL_EXT_PROC(PFNGLGENBUFFERSPROC, glGenBuffers);
  25. GL_EXT_PROC(PFNGLISBUFFERPROC, glIsBuffer);
  26. GL_EXT_PROC(PFNGLBUFFERDATAPROC, glBufferData);
  27. GL_EXT_PROC(PFNGLBUFFERSUBDATAPROC, glBufferSubData);
  28. GL_EXT_PROC(PFNGLGETBUFFERSUBDATAPROC, glGetBufferSubData);
  29. GL_EXT_PROC(PFNGLMAPBUFFERPROC, glMapBuffer);
  30. GL_EXT_PROC(PFNGLUNMAPBUFFERPROC, glUnmapBuffer);
  31. GL_EXT_PROC(PFNGLGETBUFFERPARAMETERIVPROC, glGetBufferParameteriv);
  32. GL_EXT_PROC(PFNGLGETBUFFERPOINTERVPROC, glGetBufferPointerv);
  33. //Shader fu
  34. GL_EXT_PROC(PFNGLBLENDEQUATIONSEPARATEPROC, glBlendEquationSeparate);
  35. GL_EXT_PROC(PFNGLDRAWBUFFERSPROC, glDrawBuffers);
  36. GL_EXT_PROC(PFNGLSTENCILOPSEPARATEPROC, glStencilOpSeparate);
  37. GL_EXT_PROC(PFNGLSTENCILFUNCSEPARATEPROC, glStencilFuncSeparate);
  38. GL_EXT_PROC(PFNGLSTENCILMASKSEPARATEPROC, glStencilMaskSeparate);
  39. GL_EXT_PROC(PFNGLATTACHSHADERPROC, glAttachShader);
  40. GL_EXT_PROC(PFNGLBINDATTRIBLOCATIONPROC, glBindAttribLocation);
  41. GL_EXT_PROC(PFNGLCOMPILESHADERPROC, glCompileShader);
  42. GL_EXT_PROC(PFNGLCREATEPROGRAMPROC, glCreateProgram);
  43. GL_EXT_PROC(PFNGLCREATESHADERPROC, glCreateShader);
  44. GL_EXT_PROC(PFNGLDELETEPROGRAMPROC, glDeleteProgram);
  45. GL_EXT_PROC(PFNGLDELETESHADERPROC, glDeleteShader);
  46. GL_EXT_PROC(PFNGLDETACHSHADERPROC, glDetachShader);
  47. GL_EXT_PROC(PFNGLDISABLEVERTEXATTRIBARRAYPROC, glDisableVertexAttribArray);
  48. GL_EXT_PROC(PFNGLENABLEVERTEXATTRIBARRAYPROC, glEnableVertexAttribArray);
  49. GL_EXT_PROC(PFNGLGETACTIVEATTRIBPROC, glGetActiveAttrib);
  50. GL_EXT_PROC(PFNGLGETACTIVEUNIFORMPROC, glGetActiveUniform);
  51. GL_EXT_PROC(PFNGLGETATTACHEDSHADERSPROC, glGetAttachedShaders);
  52. GL_EXT_PROC(PFNGLGETATTRIBLOCATIONPROC, glGetAttribLocation);
  53. GL_EXT_PROC(PFNGLGETPROGRAMIVPROC, glGetProgramiv);
  54. GL_EXT_PROC(PFNGLGETPROGRAMINFOLOGPROC, glGetProgramInfoLog);
  55. GL_EXT_PROC(PFNGLGETSHADERIVPROC, glGetShaderiv);
  56. GL_EXT_PROC(PFNGLGETSHADERINFOLOGPROC, glGetShaderInfoLog);
  57. GL_EXT_PROC(PFNGLGETSHADERSOURCEPROC, glGetShaderSource);
  58. GL_EXT_PROC(PFNGLGETUNIFORMLOCATIONPROC, glGetUniformLocation);
  59. GL_EXT_PROC(PFNGLGETUNIFORMFVPROC, glGetUniformfv);
  60. GL_EXT_PROC(PFNGLGETUNIFORMIVPROC, glGetUniformiv);
  61. GL_EXT_PROC(PFNGLGETVERTEXATTRIBDVPROC, glGetVertexAttribdv);
  62. GL_EXT_PROC(PFNGLGETVERTEXATTRIBFVPROC, glGetVertexAttribfv);
  63. GL_EXT_PROC(PFNGLGETVERTEXATTRIBIVPROC, glGetVertexAttribiv);
  64. GL_EXT_PROC(PFNGLGETVERTEXATTRIBPOINTERVPROC, glGetVertexAttribPointerv);
  65. GL_EXT_PROC(PFNGLISPROGRAMPROC, glIsProgram);
  66. GL_EXT_PROC(PFNGLISSHADERPROC, glIsShader);
  67. GL_EXT_PROC(PFNGLLINKPROGRAMPROC, glLinkProgram);
  68. GL_EXT_PROC(PFNGLSHADERSOURCEPROC, glShaderSource);
  69. GL_EXT_PROC(PFNGLUSEPROGRAMPROC, glUseProgram);
  70. GL_EXT_PROC(PFNGLUNIFORM1FPROC, glUniform1f);
  71. GL_EXT_PROC(PFNGLUNIFORM2FPROC, glUniform2f);
  72. GL_EXT_PROC(PFNGLUNIFORM3FPROC, glUniform3f);
  73. GL_EXT_PROC(PFNGLUNIFORM4FPROC, glUniform4f);
  74. GL_EXT_PROC(PFNGLUNIFORM1IPROC, glUniform1i);
  75. GL_EXT_PROC(PFNGLUNIFORM2IPROC, glUniform2i);
  76. GL_EXT_PROC(PFNGLUNIFORM3IPROC, glUniform3i);
  77. GL_EXT_PROC(PFNGLUNIFORM4IPROC, glUniform4i);
  78. GL_EXT_PROC(PFNGLUNIFORM1FVPROC, glUniform1fv);
  79. GL_EXT_PROC(PFNGLUNIFORM2FVPROC, glUniform2fv);
  80. GL_EXT_PROC(PFNGLUNIFORM3FVPROC, glUniform3fv);
  81. GL_EXT_PROC(PFNGLUNIFORM4FVPROC, glUniform4fv);
  82. GL_EXT_PROC(PFNGLUNIFORM1IVPROC, glUniform1iv);
  83. GL_EXT_PROC(PFNGLUNIFORM2IVPROC, glUniform2iv);
  84. GL_EXT_PROC(PFNGLUNIFORM3IVPROC, glUniform3iv);
  85. GL_EXT_PROC(PFNGLUNIFORM4IVPROC, glUniform4iv);
  86. GL_EXT_PROC(PFNGLUNIFORMMATRIX2FVPROC, glUniformMatrix2fv);
  87. GL_EXT_PROC(PFNGLUNIFORMMATRIX3FVPROC, glUniformMatrix3fv);
  88. GL_EXT_PROC(PFNGLUNIFORMMATRIX4FVPROC, glUniformMatrix4fv);
  89. GL_EXT_PROC(PFNGLVALIDATEPROGRAMPROC, glValidateProgram);
  90. GL_EXT_PROC(PFNGLVERTEXATTRIB1DPROC, glVertexAttrib1d);
  91. GL_EXT_PROC(PFNGLVERTEXATTRIB1DVPROC, glVertexAttrib1dv);
  92. GL_EXT_PROC(PFNGLVERTEXATTRIB1FPROC, glVertexAttrib1f);
  93. GL_EXT_PROC(PFNGLVERTEXATTRIB1FVPROC, glVertexAttrib1fv);
  94. GL_EXT_PROC(PFNGLVERTEXATTRIB1SPROC, glVertexAttrib1s);
  95. GL_EXT_PROC(PFNGLVERTEXATTRIB1SVPROC, glVertexAttrib1sv);
  96. GL_EXT_PROC(PFNGLVERTEXATTRIB2DPROC, glVertexAttrib2d);
  97. GL_EXT_PROC(PFNGLVERTEXATTRIB2DVPROC, glVertexAttrib2dv);
  98. GL_EXT_PROC(PFNGLVERTEXATTRIB2FPROC, glVertexAttrib2f);
  99. GL_EXT_PROC(PFNGLVERTEXATTRIB2FVPROC, glVertexAttrib2fv);
  100. GL_EXT_PROC(PFNGLVERTEXATTRIB2SPROC, glVertexAttrib2s);
  101. GL_EXT_PROC(PFNGLVERTEXATTRIB2SVPROC, glVertexAttrib2sv);
  102. GL_EXT_PROC(PFNGLVERTEXATTRIB3DPROC, glVertexAttrib3d);
  103. GL_EXT_PROC(PFNGLVERTEXATTRIB3DVPROC, glVertexAttrib3dv);
  104. GL_EXT_PROC(PFNGLVERTEXATTRIB3FPROC, glVertexAttrib3f);
  105. GL_EXT_PROC(PFNGLVERTEXATTRIB3FVPROC, glVertexAttrib3fv);
  106. GL_EXT_PROC(PFNGLVERTEXATTRIB3SPROC, glVertexAttrib3s);
  107. GL_EXT_PROC(PFNGLVERTEXATTRIB3SVPROC, glVertexAttrib3sv);
  108. GL_EXT_PROC(PFNGLVERTEXATTRIB4NBVPROC, glVertexAttrib4Nbv);
  109. GL_EXT_PROC(PFNGLVERTEXATTRIB4NIVPROC, glVertexAttrib4Niv);
  110. GL_EXT_PROC(PFNGLVERTEXATTRIB4NSVPROC, glVertexAttrib4Nsv);
  111. GL_EXT_PROC(PFNGLVERTEXATTRIB4NUBPROC, glVertexAttrib4Nub);
  112. GL_EXT_PROC(PFNGLVERTEXATTRIB4NUBVPROC, glVertexAttrib4Nubv);
  113. GL_EXT_PROC(PFNGLVERTEXATTRIB4NUIVPROC, glVertexAttrib4Nuiv);
  114. GL_EXT_PROC(PFNGLVERTEXATTRIB4NUSVPROC, glVertexAttrib4Nusv);
  115. GL_EXT_PROC(PFNGLVERTEXATTRIB4BVPROC, glVertexAttrib4bv);
  116. GL_EXT_PROC(PFNGLVERTEXATTRIB4DPROC, glVertexAttrib4d);
  117. GL_EXT_PROC(PFNGLVERTEXATTRIB4DVPROC, glVertexAttrib4dv);
  118. GL_EXT_PROC(PFNGLVERTEXATTRIB4FPROC, glVertexAttrib4f);
  119. GL_EXT_PROC(PFNGLVERTEXATTRIB4FVPROC, glVertexAttrib4fv);
  120. GL_EXT_PROC(PFNGLVERTEXATTRIB4IVPROC, glVertexAttrib4iv);
  121. GL_EXT_PROC(PFNGLVERTEXATTRIB4SPROC, glVertexAttrib4s);
  122. GL_EXT_PROC(PFNGLVERTEXATTRIB4SVPROC, glVertexAttrib4sv);
  123. GL_EXT_PROC(PFNGLVERTEXATTRIB4UBVPROC, glVertexAttrib4ubv);
  124. GL_EXT_PROC(PFNGLVERTEXATTRIB4UIVPROC, glVertexAttrib4uiv);
  125. GL_EXT_PROC(PFNGLVERTEXATTRIB4USVPROC, glVertexAttrib4usv);
  126. GL_EXT_PROC(PFNGLVERTEXATTRIBPOINTERPROC, glVertexAttribPointer);
  127. //Framebuffers
  128. GL_EXT_PROC(PFNGLISRENDERBUFFERPROC, glIsRenderbuffer);
  129. GL_EXT_PROC(PFNGLBINDRENDERBUFFERPROC, glBindRenderbuffer);
  130. GL_EXT_PROC(PFNGLDELETERENDERBUFFERSPROC, glDeleteRenderbuffers);
  131. GL_EXT_PROC(PFNGLGENRENDERBUFFERSPROC, glGenRenderbuffers);
  132. GL_EXT_PROC(PFNGLRENDERBUFFERSTORAGEPROC, glRenderbufferStorage);
  133. GL_EXT_PROC(PFNGLGETRENDERBUFFERPARAMETERIVPROC, glGetRenderbufferParameteriv);
  134. GL_EXT_PROC(PFNGLISFRAMEBUFFERPROC, glIsFramebuffer);
  135. GL_EXT_PROC(PFNGLBINDFRAMEBUFFERPROC, glBindFramebuffer);
  136. GL_EXT_PROC(PFNGLDELETEFRAMEBUFFERSPROC, glDeleteFramebuffers);
  137. GL_EXT_PROC(PFNGLGENFRAMEBUFFERSPROC, glGenFramebuffers);
  138. GL_EXT_PROC(PFNGLCHECKFRAMEBUFFERSTATUSPROC, glCheckFramebufferStatus);
  139. GL_EXT_PROC(PFNGLFRAMEBUFFERTEXTURE1DPROC, glFramebufferTexture1D);
  140. GL_EXT_PROC(PFNGLFRAMEBUFFERTEXTURE2DPROC, glFramebufferTexture2D);
  141. GL_EXT_PROC(PFNGLFRAMEBUFFERTEXTURE3DPROC, glFramebufferTexture3D);
  142. GL_EXT_PROC(PFNGLFRAMEBUFFERRENDERBUFFERPROC, glFramebufferRenderbuffer);
  143. GL_EXT_PROC(PFNGLGETFRAMEBUFFERATTACHMENTPARAMETERIVPROC, glGetFramebufferAttachmentParameteriv);
  144. GL_EXT_PROC(PFNGLGENERATEMIPMAPPROC, glGenerateMipmap);
  145. GL_EXT_PROC(PFNGLBLITFRAMEBUFFERPROC, glBlitFramebuffer);
  146. GL_EXT_PROC(PFNGLRENDERBUFFERSTORAGEMULTISAMPLEPROC, glRenderbufferStorageMultisample);
  147. GL_EXT_PROC(PFNGLFRAMEBUFFERTEXTURELAYERPROC, glFramebufferTextureLayer);
  148. //GL 3
  149. /*
  150. GL_EXT_PROC(PFNGLCOLORMASKIPROC, glColorMaski);
  151. GL_EXT_PROC(PFNGLGETBOOLEANI_VPROC, glGetBooleani_v);
  152. GL_EXT_PROC(PFNGLGETINTEGERI_VPROC, glGetIntegeri_v);
  153. GL_EXT_PROC(PFNGLENABLEIPROC, glEnablei);
  154. GL_EXT_PROC(PFNGLDISABLEIPROC, glDisablei);
  155. GL_EXT_PROC(PFNGLISENABLEDIPROC, glIsEnabledi);
  156. GL_EXT_PROC(PFNGLBEGINTRANSFORMFEEDBACKPROC, glBeginTransformFeedback);
  157. GL_EXT_PROC(PFNGLENDTRANSFORMFEEDBACKPROC, glEndTransformFeedback);
  158. GL_EXT_PROC(PFNGLBINDBUFFERRANGEPROC, glBindBufferRange);
  159. GL_EXT_PROC(PFNGLBINDBUFFERBASEPROC, glBindBufferBase);
  160. GL_EXT_PROC(PFNGLTRANSFORMFEEDBACKVARYINGSPROC, glTransformFeedbackVaryings);
  161. GL_EXT_PROC(PFNGLGETTRANSFORMFEEDBACKVARYINGPROC, glGetTransformFeedbackVarying);
  162. GL_EXT_PROC(PFNGLCLAMPCOLORPROC, glClampColor);
  163. GL_EXT_PROC(PFNGLBEGINCONDITIONALRENDERPROC, glBeginConditionalRender);
  164. GL_EXT_PROC(PFNGLENDCONDITIONALRENDERPROC, glEndConditionalRender);
  165. GL_EXT_PROC(PFNGLVERTEXATTRIBIPOINTERPROC, glVertexAttribIPointer);
  166. GL_EXT_PROC(PFNGLGETVERTEXATTRIBIIVPROC, glGetVertexAttribIiv);
  167. GL_EXT_PROC(PFNGLGETVERTEXATTRIBIUIVPROC, glGetVertexAttribIuiv);
  168. GL_EXT_PROC(PFNGLVERTEXATTRIBI1IPROC, glVertexAttribI1i);
  169. GL_EXT_PROC(PFNGLVERTEXATTRIBI2IPROC, glVertexAttribI2i);
  170. GL_EXT_PROC(PFNGLVERTEXATTRIBI3IPROC, glVertexAttribI3i);
  171. GL_EXT_PROC(PFNGLVERTEXATTRIBI4IPROC, glVertexAttribI4i);
  172. GL_EXT_PROC(PFNGLVERTEXATTRIBI1UIPROC, glVertexAttribI1ui);
  173. GL_EXT_PROC(PFNGLVERTEXATTRIBI2UIPROC, glVertexAttribI2ui);
  174. GL_EXT_PROC(PFNGLVERTEXATTRIBI3UIPROC, glVertexAttribI3ui);
  175. GL_EXT_PROC(PFNGLVERTEXATTRIBI4UIPROC, glVertexAttribI4ui);
  176. GL_EXT_PROC(PFNGLVERTEXATTRIBI1IVPROC, glVertexAttribI1iv);
  177. GL_EXT_PROC(PFNGLVERTEXATTRIBI2IVPROC, glVertexAttribI2iv);
  178. GL_EXT_PROC(PFNGLVERTEXATTRIBI3IVPROC, glVertexAttribI3iv);
  179. GL_EXT_PROC(PFNGLVERTEXATTRIBI4IVPROC, glVertexAttribI4iv);
  180. GL_EXT_PROC(PFNGLVERTEXATTRIBI1UIVPROC, glVertexAttribI1uiv);
  181. GL_EXT_PROC(PFNGLVERTEXATTRIBI2UIVPROC, glVertexAttribI2uiv);
  182. GL_EXT_PROC(PFNGLVERTEXATTRIBI3UIVPROC, glVertexAttribI3uiv);
  183. GL_EXT_PROC(PFNGLVERTEXATTRIBI4UIVPROC, glVertexAttribI4uiv);
  184. GL_EXT_PROC(PFNGLVERTEXATTRIBI4BVPROC, glVertexAttribI4bv);
  185. GL_EXT_PROC(PFNGLVERTEXATTRIBI4SVPROC, glVertexAttribI4sv);
  186. GL_EXT_PROC(PFNGLVERTEXATTRIBI4UBVPROC, glVertexAttribI4ubv);
  187. GL_EXT_PROC(PFNGLVERTEXATTRIBI4USVPROC, glVertexAttribI4usv);
  188. GL_EXT_PROC(PFNGLGETUNIFORMUIVPROC, glGetUniformuiv);
  189. GL_EXT_PROC(PFNGLBINDFRAGDATALOCATIONPROC, glBindFragDataLocation);
  190. GL_EXT_PROC(PFNGLGETFRAGDATALOCATIONPROC, glGetFragDataLocation);
  191. GL_EXT_PROC(PFNGLUNIFORM1UIPROC, glUniform1ui);
  192. GL_EXT_PROC(PFNGLUNIFORM2UIPROC, glUniform2ui);
  193. GL_EXT_PROC(PFNGLUNIFORM3UIPROC, glUniform3ui);
  194. GL_EXT_PROC(PFNGLUNIFORM4UIPROC, glUniform4ui);
  195. GL_EXT_PROC(PFNGLUNIFORM1UIVPROC, glUniform1uiv);
  196. GL_EXT_PROC(PFNGLUNIFORM2UIVPROC, glUniform2uiv);
  197. GL_EXT_PROC(PFNGLUNIFORM3UIVPROC, glUniform3uiv);
  198. GL_EXT_PROC(PFNGLUNIFORM4UIVPROC, glUniform4uiv);
  199. GL_EXT_PROC(PFNGLTEXPARAMETERIIVPROC, glTexParameterIiv);
  200. GL_EXT_PROC(PFNGLTEXPARAMETERIUIVPROC, glTexParameterIuiv);
  201. GL_EXT_PROC(PFNGLGETTEXPARAMETERIIVPROC, glGetTexParameterIiv);
  202. GL_EXT_PROC(PFNGLGETTEXPARAMETERIUIVPROC, glGetTexParameterIuiv);
  203. GL_EXT_PROC(PFNGLCLEARBUFFERIVPROC, glClearBufferiv);
  204. GL_EXT_PROC(PFNGLCLEARBUFFERUIVPROC, glClearBufferuiv);
  205. GL_EXT_PROC(PFNGLCLEARBUFFERFVPROC, glClearBufferfv);
  206. GL_EXT_PROC(PFNGLCLEARBUFFERFIPROC, glClearBufferfi);
  207. GL_EXT_PROC(PFNGLGETSTRINGIPROC, glGetStringi);
  208. */