fn.go 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495
  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. glfnBindBuffer
  30. glfnBindTexture
  31. glfnBindVertexArray
  32. glfnBlendColor
  33. glfnBlendFunc
  34. glfnBufferData
  35. glfnClear
  36. glfnClearColor
  37. glfnCompileShader
  38. glfnCreateProgram
  39. glfnCreateShader
  40. glfnDeleteBuffer
  41. glfnDeleteTexture
  42. glfnDisable
  43. glfnDrawArrays
  44. glfnEnable
  45. glfnEnableVertexAttribArray
  46. glfnFlush
  47. glfnGenBuffer
  48. glfnGenTexture
  49. glfnGenVertexArray
  50. glfnGetAttribLocation
  51. glfnGetError
  52. glfnGetProgramInfoLog
  53. glfnGetProgramiv
  54. glfnGetShaderInfoLog
  55. glfnGetShaderSource
  56. glfnGetShaderiv
  57. glfnGetTexParameteriv
  58. glfnGetUniformLocation
  59. glfnPixelStorei
  60. glfnLinkProgram
  61. glfnReadPixels
  62. glfnScissor
  63. glfnShaderSource
  64. glfnTexImage2D
  65. glfnTexParameteri
  66. glfnUniform1f
  67. glfnUniform4f
  68. glfnUniform4fv
  69. glfnUseProgram
  70. glfnVertexAttribPointer
  71. glfnViewport
  72. )
  73. func goString(buf []byte) string {
  74. for i, b := range buf {
  75. if b == 0 {
  76. return string(buf[:i])
  77. }
  78. }
  79. panic("buf is not NUL-terminated")
  80. }
  81. func glBoolean(b bool) uintptr {
  82. if b {
  83. return True
  84. }
  85. return False
  86. }