fn.go 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210
  1. // Copyright 2015 The Go Authors. All rights reserved.
  2. // Use of this source code is governed by a BSD-style
  3. // license that can be found in the LICENSE file.
  4. package gl
  5. import "unsafe"
  6. type call struct {
  7. args fnargs
  8. parg unsafe.Pointer
  9. blocking bool
  10. }
  11. type fnargs struct {
  12. fn glfn
  13. a0 uintptr
  14. a1 uintptr
  15. a2 uintptr
  16. a3 uintptr
  17. a4 uintptr
  18. a5 uintptr
  19. a6 uintptr
  20. a7 uintptr
  21. a8 uintptr
  22. a9 uintptr
  23. }
  24. type glfn int
  25. const (
  26. glfnUNDEFINED glfn = iota
  27. glfnActiveTexture
  28. glfnAttachShader
  29. glfnBindAttribLocation
  30. glfnBindBuffer
  31. glfnBindFramebuffer
  32. glfnBindRenderbuffer
  33. glfnBindTexture
  34. glfnBindVertexArray
  35. glfnBlendColor
  36. glfnBlendEquation
  37. glfnBlendEquationSeparate
  38. glfnBlendFunc
  39. glfnBlendFuncSeparate
  40. glfnBufferData
  41. glfnBufferSubData
  42. glfnCheckFramebufferStatus
  43. glfnClear
  44. glfnClearColor
  45. glfnClearDepthf
  46. glfnClearStencil
  47. glfnColorMask
  48. glfnCompileShader
  49. glfnCompressedTexImage2D
  50. glfnCompressedTexSubImage2D
  51. glfnCopyTexImage2D
  52. glfnCopyTexSubImage2D
  53. glfnCreateProgram
  54. glfnCreateShader
  55. glfnCullFace
  56. glfnDeleteBuffer
  57. glfnDeleteFramebuffer
  58. glfnDeleteProgram
  59. glfnDeleteRenderbuffer
  60. glfnDeleteShader
  61. glfnDeleteTexture
  62. glfnDeleteVertexArray
  63. glfnDepthFunc
  64. glfnDepthRangef
  65. glfnDepthMask
  66. glfnDetachShader
  67. glfnDisable
  68. glfnDisableVertexAttribArray
  69. glfnDrawArrays
  70. glfnDrawElements
  71. glfnEnable
  72. glfnEnableVertexAttribArray
  73. glfnFinish
  74. glfnFlush
  75. glfnFramebufferRenderbuffer
  76. glfnFramebufferTexture2D
  77. glfnFrontFace
  78. glfnGenBuffer
  79. glfnGenFramebuffer
  80. glfnGenRenderbuffer
  81. glfnGenTexture
  82. glfnGenVertexArray
  83. glfnGenerateMipmap
  84. glfnGetActiveAttrib
  85. glfnGetActiveUniform
  86. glfnGetAttachedShaders
  87. glfnGetAttribLocation
  88. glfnGetBooleanv
  89. glfnGetBufferParameteri
  90. glfnGetError
  91. glfnGetFloatv
  92. glfnGetFramebufferAttachmentParameteriv
  93. glfnGetIntegerv
  94. glfnGetProgramInfoLog
  95. glfnGetProgramiv
  96. glfnGetRenderbufferParameteriv
  97. glfnGetShaderInfoLog
  98. glfnGetShaderPrecisionFormat
  99. glfnGetShaderSource
  100. glfnGetShaderiv
  101. glfnGetString
  102. glfnGetTexParameterfv
  103. glfnGetTexParameteriv
  104. glfnGetUniformLocation
  105. glfnGetUniformfv
  106. glfnGetUniformiv
  107. glfnGetVertexAttribfv
  108. glfnGetVertexAttribiv
  109. glfnHint
  110. glfnIsBuffer
  111. glfnIsEnabled
  112. glfnIsFramebuffer
  113. glfnIsProgram
  114. glfnIsRenderbuffer
  115. glfnIsShader
  116. glfnIsTexture
  117. glfnLineWidth
  118. glfnLinkProgram
  119. glfnPixelStorei
  120. glfnPolygonOffset
  121. glfnReadPixels
  122. glfnReleaseShaderCompiler
  123. glfnRenderbufferStorage
  124. glfnSampleCoverage
  125. glfnScissor
  126. glfnShaderSource
  127. glfnStencilFunc
  128. glfnStencilFuncSeparate
  129. glfnStencilMask
  130. glfnStencilMaskSeparate
  131. glfnStencilOp
  132. glfnStencilOpSeparate
  133. glfnTexImage2D
  134. glfnTexParameterf
  135. glfnTexParameterfv
  136. glfnTexParameteri
  137. glfnTexParameteriv
  138. glfnTexSubImage2D
  139. glfnUniform1f
  140. glfnUniform1fv
  141. glfnUniform1i
  142. glfnUniform1iv
  143. glfnUniform2f
  144. glfnUniform2fv
  145. glfnUniform2i
  146. glfnUniform2iv
  147. glfnUniform3f
  148. glfnUniform3fv
  149. glfnUniform3i
  150. glfnUniform3iv
  151. glfnUniform4f
  152. glfnUniform4fv
  153. glfnUniform4i
  154. glfnUniform4iv
  155. glfnUniformMatrix2fv
  156. glfnUniformMatrix3fv
  157. glfnUniformMatrix4fv
  158. glfnUseProgram
  159. glfnValidateProgram
  160. glfnVertexAttrib1f
  161. glfnVertexAttrib1fv
  162. glfnVertexAttrib2f
  163. glfnVertexAttrib2fv
  164. glfnVertexAttrib3f
  165. glfnVertexAttrib3fv
  166. glfnVertexAttrib4f
  167. glfnVertexAttrib4fv
  168. glfnVertexAttribPointer
  169. glfnViewport
  170. // ES 3.0 functions
  171. glfnUniformMatrix2x3fv
  172. glfnUniformMatrix3x2fv
  173. glfnUniformMatrix2x4fv
  174. glfnUniformMatrix4x2fv
  175. glfnUniformMatrix3x4fv
  176. glfnUniformMatrix4x3fv
  177. glfnBlitFramebuffer
  178. glfnUniform1ui
  179. glfnUniform2ui
  180. glfnUniform3ui
  181. glfnUniform4ui
  182. glfnUniform1uiv
  183. glfnUniform2uiv
  184. glfnUniform3uiv
  185. glfnUniform4uiv
  186. )
  187. func goString(buf []byte) string {
  188. for i, b := range buf {
  189. if b == 0 {
  190. return string(buf[:i])
  191. }
  192. }
  193. panic("buf is not NUL-terminated")
  194. }
  195. func glBoolean(b bool) uintptr {
  196. if b {
  197. return TRUE
  198. }
  199. return FALSE
  200. }