PageRenderTime 42ms CodeModel.GetById 16ms RepoModel.GetById 1ms app.codeStats 0ms

/src/derelict/opengl/extension/ext/gpu_shader4.d

https://bitbucket.org/JoeCoder/yage/
D | 241 lines | 199 code | 11 blank | 31 comment | 36 complexity | 0d0e409995720bf60d72d0d43face169 MD5 | raw file
Possible License(s): LGPL-2.0
  1. /*
  2. * Copyright (c) 2004-2008 Derelict Developers
  3. * All rights reserved.
  4. *
  5. * Redistribution and use in source and binary forms, with or without
  6. * modification, are permitted provided that the following conditions are
  7. * met:
  8. *
  9. * * Redistributions of source code must retain the above copyright
  10. * notice, this list of conditions and the following disclaimer.
  11. *
  12. * * Redistributions in binary form must reproduce the above copyright
  13. * notice, this list of conditions and the following disclaimer in the
  14. * documentation and/or other materials provided with the distribution.
  15. *
  16. * * Neither the names 'Derelict', 'DerelictGL', nor the names of its contributors
  17. * may be used to endorse or promote products derived from this software
  18. * without specific prior written permission.
  19. *
  20. * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
  21. * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
  22. * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
  23. * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
  24. * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
  25. * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
  26. * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
  27. * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
  28. * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
  29. * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
  30. * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  31. */
  32. module derelict.opengl.extension.ext.gpu_shader4;
  33. private
  34. {
  35. import derelict.opengl.gltypes;
  36. import derelict.opengl.gl;
  37. import derelict.opengl.extension.loader;
  38. import derelict.util.wrapper;
  39. }
  40. private bool enabled = false;
  41. struct EXTGpuShader4
  42. {
  43. static bool load(char[] extString)
  44. {
  45. if(extString.findStr("GL_EXT_gpu_shader4") == -1)
  46. return false;
  47. if(!glBindExtFunc(cast(void**)&glBindFragDataLocationEXT, "glBindFragDataLocationEXT"))
  48. return false;
  49. if(!glBindExtFunc(cast(void**)&glGetFragDataLocationEXT, "glGetFragDataLocationEXT"))
  50. return false;
  51. if(!glBindExtFunc(cast(void**)&glGetUniformuivEXT, "glGetUniformuivEXT"))
  52. return false;
  53. if(!glBindExtFunc(cast(void**)&glGetVertexAttribIivEXT, "glGetVertexAttribIivEXT"))
  54. return false;
  55. if(!glBindExtFunc(cast(void**)&glGetVertexAttribIuivEXT, "glGetVertexAttribIuivEXT"))
  56. return false;
  57. if(!glBindExtFunc(cast(void**)&glUniform1uiEXT, "glUniform1uiEXT"))
  58. return false;
  59. if(!glBindExtFunc(cast(void**)&glUniform1uivEXT, "glUniform1uivEXT"))
  60. return false;
  61. if(!glBindExtFunc(cast(void**)&glUniform2uiEXT, "glUniform2uiEXT"))
  62. return false;
  63. if(!glBindExtFunc(cast(void**)&glUniform2uivEXT, "glUniform2uivEXT"))
  64. return false;
  65. if(!glBindExtFunc(cast(void**)&glUniform3uiEXT, "glUniform3uiEXT"))
  66. return false;
  67. if(!glBindExtFunc(cast(void**)&glUniform3uivEXT, "glUniform3uivEXT"))
  68. return false;
  69. if(!glBindExtFunc(cast(void**)&glUniform4uiEXT, "glUniform4uiEXT"))
  70. return false;
  71. if(!glBindExtFunc(cast(void**)&glUniform4uivEXT, "glUniform4uivEXT"))
  72. return false;
  73. if(!glBindExtFunc(cast(void**)&glVertexAttribI1iEXT, "glVertexAttribI1iEXT"))
  74. return false;
  75. if(!glBindExtFunc(cast(void**)&glVertexAttribI1ivEXT, "glVertexAttribI1ivEXT"))
  76. return false;
  77. if(!glBindExtFunc(cast(void**)&glVertexAttribI1uiEXT, "glVertexAttribI1uiEXT"))
  78. return false;
  79. if(!glBindExtFunc(cast(void**)&glVertexAttribI1uivEXT, "glVertexAttribI1uivEXT"))
  80. return false;
  81. if(!glBindExtFunc(cast(void**)&glVertexAttribI2iEXT, "glVertexAttribI2iEXT"))
  82. return false;
  83. if(!glBindExtFunc(cast(void**)&glVertexAttribI2ivEXT, "glVertexAttribI2ivEXT"))
  84. return false;
  85. if(!glBindExtFunc(cast(void**)&glVertexAttribI2uiEXT, "glVertexAttribI2uiEXT"))
  86. return false;
  87. if(!glBindExtFunc(cast(void**)&glVertexAttribI2uivEXT, "glVertexAttribI2uivEXT"))
  88. return false;
  89. if(!glBindExtFunc(cast(void**)&glVertexAttribI3iEXT, "glVertexAttribI3iEXT"))
  90. return false;
  91. if(!glBindExtFunc(cast(void**)&glVertexAttribI3ivEXT, "glVertexAttribI3ivEXT"))
  92. return false;
  93. if(!glBindExtFunc(cast(void**)&glVertexAttribI3uiEXT, "glVertexAttribI3uiEXT"))
  94. return false;
  95. if(!glBindExtFunc(cast(void**)&glVertexAttribI3uivEXT, "glVertexAttribI3uivEXT"))
  96. return false;
  97. if(!glBindExtFunc(cast(void**)&glVertexAttribI4bvEXT, "glVertexAttribI4bvEXT"))
  98. return false;
  99. if(!glBindExtFunc(cast(void**)&glVertexAttribI4iEXT, "glVertexAttribI4iEXT"))
  100. return false;
  101. if(!glBindExtFunc(cast(void**)&glVertexAttribI4ivEXT, "glVertexAttribI4ivEXT"))
  102. return false;
  103. if(!glBindExtFunc(cast(void**)&glVertexAttribI4svEXT, "glVertexAttribI4svEXT"))
  104. return false;
  105. if(!glBindExtFunc(cast(void**)&glVertexAttribI4ubvEXT, "glVertexAttribI4ubvEXT"))
  106. return false;
  107. if(!glBindExtFunc(cast(void**)&glVertexAttribI4uiEXT, "glVertexAttribI4uiEXT"))
  108. return false;
  109. if(!glBindExtFunc(cast(void**)&glVertexAttribI4uivEXT, "glVertexAttribI4uivEXT"))
  110. return false;
  111. if(!glBindExtFunc(cast(void**)&glVertexAttribI4usvEXT, "glVertexAttribI4usvEXT"))
  112. return false;
  113. if(!glBindExtFunc(cast(void**)&glVertexAttribIPointerEXT, "glVertexAttribIPointerEXT"))
  114. return false;
  115. enabled = true;
  116. return true;
  117. }
  118. static bool isEnabled()
  119. {
  120. return enabled;
  121. }
  122. }
  123. version(DerelictGL_NoExtensionLoaders)
  124. {
  125. }
  126. else
  127. {
  128. static this()
  129. {
  130. DerelictGL.registerExtensionLoader(&EXTGpuShader4.load);
  131. }
  132. }
  133. enum : GLenum
  134. {
  135. GL_VERTEX_ATTRIB_ARRAY_INTEGER_EXT = 0x88FD,
  136. GL_SAMPLER_1D_ARRAY_EXT = 0x8DC0,
  137. GL_SAMPLER_2D_ARRAY_EXT = 0x8DC1,
  138. GL_SAMPLER_BUFFER_EXT = 0x8DC2,
  139. GL_SAMPLER_1D_ARRAY_SHADOW_EXT = 0x8DC3,
  140. GL_SAMPLER_2D_ARRAY_SHADOW_EXT = 0x8DC4,
  141. GL_SAMPLER_CUBE_SHADOW_EXT = 0x8DC5,
  142. GL_UNSIGNED_INT_VEC2_EXT = 0x8DC6,
  143. GL_UNSIGNED_INT_VEC3_EXT = 0x8DC7,
  144. GL_UNSIGNED_INT_VEC4_EXT = 0x8DC8,
  145. GL_INT_SAMPLER_1D_EXT = 0x8DC9,
  146. GL_INT_SAMPLER_2D_EXT = 0x8DCA,
  147. GL_INT_SAMPLER_3D_EXT = 0x8DCB,
  148. GL_INT_SAMPLER_CUBE_EXT = 0x8DCC,
  149. GL_INT_SAMPLER_2D_RECT_EXT = 0x8DCD,
  150. GL_INT_SAMPLER_1D_ARRAY_EXT = 0x8DCE,
  151. GL_INT_SAMPLER_2D_ARRAY_EXT = 0x8DCF,
  152. GL_INT_SAMPLER_BUFFER_EXT = 0x8DD0,
  153. GL_UNSIGNED_INT_SAMPLER_1D_EXT = 0x8DD1,
  154. GL_UNSIGNED_INT_SAMPLER_2D_EXT = 0x8DD2,
  155. GL_UNSIGNED_INT_SAMPLER_3D_EXT = 0x8DD3,
  156. GL_UNSIGNED_INT_SAMPLER_CUBE_EXT = 0x8DD4,
  157. GL_UNSIGNED_INT_SAMPLER_2D_RECT_EXT = 0x8DD5,
  158. GL_UNSIGNED_INT_SAMPLER_1D_ARRAY_EXT = 0x8DD6,
  159. GL_UNSIGNED_INT_SAMPLER_2D_ARRAY_EXT = 0x8DD7,
  160. GL_UNSIGNED_INT_SAMPLER_BUFFER_EXT = 0x8DD8,
  161. }
  162. extern(System):
  163. typedef void function(GLuint,GLuint,GLchar*) pfglBindFragDataLocationEXT;
  164. typedef GLint function(GLuint,GLchar*) pfglGetFragDataLocationEXT;
  165. typedef void function(GLuint,GLint,GLuint*) pfglGetUniformuivEXT;
  166. typedef void function(GLuint,GLenum,GLint*) pfglGetVertexAttribIivEXT;
  167. typedef void function(GLuint,GLenum,GLuint*) pfglGetVertexAttribIuivEXT;
  168. typedef void function(GLint,GLuint) pfglUniform1uiEXT;
  169. typedef void function(GLint,GLsizei,GLuint*) pfglUniform1uivEXT;
  170. typedef void function(GLint,GLuint,GLuint) pfglUniform2uiEXT;
  171. typedef void function(GLint,GLsizei,GLuint*) pfglUniform2uivEXT;
  172. typedef void function(GLint,GLuint,GLuint,GLuint) pfglUniform3uiEXT;
  173. typedef void function(GLint,GLsizei,GLuint*) pfglUniform3uivEXT;
  174. typedef void function(GLint,GLuint,GLuint,GLuint,GLuint) pfglUniform4uiEXT;
  175. typedef void function(GLint,GLsizei,GLuint*) pfglUniform4uivEXT;
  176. typedef void function(GLuint,GLint) pfglVertexAttribI1iEXT;
  177. typedef void function(GLuint,GLint*) pfglVertexAttribI1ivEXT;
  178. typedef void function(GLuint,GLuint) pfglVertexAttribI1uiEXT;
  179. typedef void function(GLuint,GLuint*) pfglVertexAttribI1uivEXT;
  180. typedef void function(GLuint,GLint,GLint) pfglVertexAttribI2iEXT;
  181. typedef void function(GLuint,GLint*) pfglVertexAttribI2ivEXT;
  182. typedef void function(GLuint,GLuint,GLuint) pfglVertexAttribI2uiEXT;
  183. typedef void function(GLuint,GLuint*) pfglVertexAttribI2uivEXT;
  184. typedef void function(GLuint,GLint,GLint,GLint) pfglVertexAttribI3iEXT;
  185. typedef void function(GLuint,GLint*) pfglVertexAttribI3ivEXT;
  186. typedef void function(GLuint,GLuint,GLuint,GLuint) pfglVertexAttribI3uiEXT;
  187. typedef void function(GLuint,GLuint*) pfglVertexAttribI3uivEXT;
  188. typedef void function(GLuint,GLbyte*) pfglVertexAttribI4bvEXT;
  189. typedef void function(GLuint,GLint,GLint,GLint,GLint) pfglVertexAttribI4iEXT;
  190. typedef void function(GLuint,GLint*) pfglVertexAttribI4ivEXT;
  191. typedef void function(GLuint,GLshort*) pfglVertexAttribI4svEXT;
  192. typedef void function(GLuint,GLubyte*) pfglVertexAttribI4ubvEXT;
  193. typedef void function(GLuint,GLuint,GLuint,GLuint,GLuint) pfglVertexAttribI4uiEXT;
  194. typedef void function(GLuint,GLuint*) pfglVertexAttribI4uivEXT;
  195. typedef void function(GLuint,GLushort*) pfglVertexAttribI4usvEXT;
  196. typedef void function(GLuint,GLint,GLenum,GLenum,GLsizei,GLvoid*) pfglVertexAttribIPointerEXT;
  197. pfglBindFragDataLocationEXT glBindFragDataLocationEXT;
  198. pfglGetFragDataLocationEXT glGetFragDataLocationEXT;
  199. pfglGetUniformuivEXT glGetUniformuivEXT;
  200. pfglGetVertexAttribIivEXT glGetVertexAttribIivEXT;
  201. pfglGetVertexAttribIuivEXT glGetVertexAttribIuivEXT;
  202. pfglUniform1uiEXT glUniform1uiEXT;
  203. pfglUniform1uivEXT glUniform1uivEXT;
  204. pfglUniform2uiEXT glUniform2uiEXT;
  205. pfglUniform2uivEXT glUniform2uivEXT;
  206. pfglUniform3uiEXT glUniform3uiEXT;
  207. pfglUniform3uivEXT glUniform3uivEXT;
  208. pfglUniform4uiEXT glUniform4uiEXT;
  209. pfglUniform4uivEXT glUniform4uivEXT;
  210. pfglVertexAttribI1iEXT glVertexAttribI1iEXT;
  211. pfglVertexAttribI1ivEXT glVertexAttribI1ivEXT;
  212. pfglVertexAttribI1uiEXT glVertexAttribI1uiEXT;
  213. pfglVertexAttribI1uivEXT glVertexAttribI1uivEXT;
  214. pfglVertexAttribI2iEXT glVertexAttribI2iEXT;
  215. pfglVertexAttribI2ivEXT glVertexAttribI2ivEXT;
  216. pfglVertexAttribI2uiEXT glVertexAttribI2uiEXT;
  217. pfglVertexAttribI2uivEXT glVertexAttribI2uivEXT;
  218. pfglVertexAttribI3iEXT glVertexAttribI3iEXT;
  219. pfglVertexAttribI3ivEXT glVertexAttribI3ivEXT;
  220. pfglVertexAttribI3uiEXT glVertexAttribI3uiEXT;
  221. pfglVertexAttribI3uivEXT glVertexAttribI3uivEXT;
  222. pfglVertexAttribI4bvEXT glVertexAttribI4bvEXT;
  223. pfglVertexAttribI4iEXT glVertexAttribI4iEXT;
  224. pfglVertexAttribI4ivEXT glVertexAttribI4ivEXT;
  225. pfglVertexAttribI4svEXT glVertexAttribI4svEXT;
  226. pfglVertexAttribI4ubvEXT glVertexAttribI4ubvEXT;
  227. pfglVertexAttribI4uiEXT glVertexAttribI4uiEXT;
  228. pfglVertexAttribI4uivEXT glVertexAttribI4uivEXT;
  229. pfglVertexAttribI4usvEXT glVertexAttribI4usvEXT;
  230. pfglVertexAttribIPointerEXT glVertexAttribIPointerEXT;