From d8eaf0a3943c5346bd7e611dafdb52540841eb88 Mon Sep 17 00:00:00 2001
From: Hajime Hoshi
Date: Sat, 10 Sep 2022 03:31:16 +0900
Subject: [PATCH] internal/graphicsdriver/opengl/gl: reland: integrate files
for ebitengine/purego
Closes #2313
---
go.mod | 2 +-
go.sum | 3 +-
...package_others.go => package_notpurego.go} | 0
.../{package_darwin.go => package_purego.go} | 3 +
.../opengl/gl/package_windows.go | 677 ------------------
5 files changed, 6 insertions(+), 679 deletions(-)
rename internal/graphicsdriver/opengl/gl/{package_others.go => package_notpurego.go} (100%)
rename internal/graphicsdriver/opengl/gl/{package_darwin.go => package_purego.go} (99%)
delete mode 100644 internal/graphicsdriver/opengl/gl/package_windows.go
diff --git a/go.mod b/go.mod
index e03ba3c56d4f..93f2736e35ac 100644
--- a/go.mod
+++ b/go.mod
@@ -3,7 +3,7 @@ module github.com/hajimehoshi/ebiten/v2
go 1.15
require (
- github.com/ebitengine/purego v0.0.0-20220907032450-cf3e27c364c7
+ github.com/ebitengine/purego v0.0.0-20220910041003-a51c01493ff9
github.com/go-gl/glfw/v3.3/glfw v0.0.0-20220806181222-55e207c401ad
github.com/hajimehoshi/bitmapfont/v2 v2.2.1
github.com/hajimehoshi/go-mp3 v0.3.3
diff --git a/go.sum b/go.sum
index 43f9149e8b23..999edf256284 100644
--- a/go.sum
+++ b/go.sum
@@ -1,6 +1,7 @@
github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo=
-github.com/ebitengine/purego v0.0.0-20220907032450-cf3e27c364c7 h1:tmSauY5l3s/Cp5n+cEiG1epUR2AejmdHeMJMycMFxb0=
github.com/ebitengine/purego v0.0.0-20220907032450-cf3e27c364c7/go.mod h1:Eh8I3yvknDYZeCuXH9kRNaPuHEwvXDCk378o9xszmHg=
+github.com/ebitengine/purego v0.0.0-20220910041003-a51c01493ff9 h1:SWRYqW9r4JvlnVnDurFzaF+0X60GG5QZD8n0U9cq3Gw=
+github.com/ebitengine/purego v0.0.0-20220910041003-a51c01493ff9/go.mod h1:Eh8I3yvknDYZeCuXH9kRNaPuHEwvXDCk378o9xszmHg=
github.com/go-gl/glfw/v3.3/glfw v0.0.0-20220806181222-55e207c401ad h1:kX51IjbsJPCvzV9jUoVQG9GEUqIq5hjfYzXTqQ52Rh8=
github.com/go-gl/glfw/v3.3/glfw v0.0.0-20220806181222-55e207c401ad/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8=
github.com/hajimehoshi/bitmapfont/v2 v2.2.1 h1:y7zcy02/UgO24IL3COqYtrRZzhRucNBtmCo/SNU648k=
diff --git a/internal/graphicsdriver/opengl/gl/package_others.go b/internal/graphicsdriver/opengl/gl/package_notpurego.go
similarity index 100%
rename from internal/graphicsdriver/opengl/gl/package_others.go
rename to internal/graphicsdriver/opengl/gl/package_notpurego.go
diff --git a/internal/graphicsdriver/opengl/gl/package_darwin.go b/internal/graphicsdriver/opengl/gl/package_purego.go
similarity index 99%
rename from internal/graphicsdriver/opengl/gl/package_darwin.go
rename to internal/graphicsdriver/opengl/gl/package_purego.go
index c87ba33050a6..17238533a916 100644
--- a/internal/graphicsdriver/opengl/gl/package_darwin.go
+++ b/internal/graphicsdriver/opengl/gl/package_purego.go
@@ -1,5 +1,8 @@
// SPDX-License-Identifier: MIT
+//go:build darwin || windows
+// +build darwin windows
+
package gl
import (
diff --git a/internal/graphicsdriver/opengl/gl/package_windows.go b/internal/graphicsdriver/opengl/gl/package_windows.go
deleted file mode 100644
index fdae541a0083..000000000000
--- a/internal/graphicsdriver/opengl/gl/package_windows.go
+++ /dev/null
@@ -1,677 +0,0 @@
-// SPDX-License-Identifier: MIT
-
-package gl
-
-import (
- "errors"
- "math"
- "syscall"
- "unsafe"
-)
-
-var (
- gpActiveTexture uintptr
- gpAttachShader uintptr
- gpBindAttribLocation uintptr
- gpBindBuffer uintptr
- gpBindFramebufferEXT uintptr
- gpBindRenderbufferEXT uintptr
- gpBindTexture uintptr
- gpBlendFunc uintptr
- gpBufferData uintptr
- gpBufferSubData uintptr
- gpCheckFramebufferStatusEXT uintptr
- gpClear uintptr
- gpColorMask uintptr
- gpCompileShader uintptr
- gpCreateProgram uintptr
- gpCreateShader uintptr
- gpDeleteBuffers uintptr
- gpDeleteFramebuffersEXT uintptr
- gpDeleteProgram uintptr
- gpDeleteRenderbuffersEXT uintptr
- gpDeleteShader uintptr
- gpDeleteTextures uintptr
- gpDisable uintptr
- gpDisableVertexAttribArray uintptr
- gpDrawElements uintptr
- gpEnable uintptr
- gpEnableVertexAttribArray uintptr
- gpFlush uintptr
- gpFramebufferRenderbufferEXT uintptr
- gpFramebufferTexture2DEXT uintptr
- gpGenBuffers uintptr
- gpGenFramebuffersEXT uintptr
- gpGenRenderbuffersEXT uintptr
- gpGenTextures uintptr
- gpGetDoublei_v uintptr
- gpGetDoublei_vEXT uintptr
- gpGetError uintptr
- gpGetFloati_v uintptr
- gpGetFloati_vEXT uintptr
- gpGetIntegeri_v uintptr
- gpGetIntegerui64i_vNV uintptr
- gpGetIntegerv uintptr
- gpGetPointeri_vEXT uintptr
- gpGetProgramInfoLog uintptr
- gpGetProgramiv uintptr
- gpGetShaderInfoLog uintptr
- gpGetShaderiv uintptr
- gpGetTransformFeedbacki64_v uintptr
- gpGetTransformFeedbacki_v uintptr
- gpGetUniformLocation uintptr
- gpGetUnsignedBytei_vEXT uintptr
- gpGetVertexArrayIntegeri_vEXT uintptr
- gpGetVertexArrayPointeri_vEXT uintptr
- gpIsFramebufferEXT uintptr
- gpIsProgram uintptr
- gpIsRenderbufferEXT uintptr
- gpIsTexture uintptr
- gpLinkProgram uintptr
- gpPixelStorei uintptr
- gpReadPixels uintptr
- gpRenderbufferStorageEXT uintptr
- gpScissor uintptr
- gpShaderSource uintptr
- gpStencilFunc uintptr
- gpStencilOp uintptr
- gpTexImage2D uintptr
- gpTexParameteri uintptr
- gpTexSubImage2D uintptr
- gpUniform1f uintptr
- gpUniform1i uintptr
- gpUniform1fv uintptr
- gpUniform2fv uintptr
- gpUniform3fv uintptr
- gpUniform4fv uintptr
- gpUniformMatrix2fv uintptr
- gpUniformMatrix3fv uintptr
- gpUniformMatrix4fv uintptr
- gpUseProgram uintptr
- gpVertexAttribPointer uintptr
- gpViewport uintptr
-)
-
-func boolToUintptr(b bool) uintptr {
- if b {
- return 1
- }
- return 0
-}
-
-func ActiveTexture(texture uint32) {
- _, _, _ = syscall.Syscall(gpActiveTexture, 1, uintptr(texture), 0, 0)
-}
-
-func AttachShader(program uint32, shader uint32) {
- _, _, _ = syscall.Syscall(gpAttachShader, 2, uintptr(program), uintptr(shader), 0)
-}
-
-func BindAttribLocation(program uint32, index uint32, name *uint8) {
- _, _, _ = syscall.Syscall(gpBindAttribLocation, 3, uintptr(program), uintptr(index), uintptr(unsafe.Pointer(name)))
-}
-
-func BindBuffer(target uint32, buffer uint32) {
- _, _, _ = syscall.Syscall(gpBindBuffer, 2, uintptr(target), uintptr(buffer), 0)
-}
-
-func BindFramebufferEXT(target uint32, framebuffer uint32) {
- _, _, _ = syscall.Syscall(gpBindFramebufferEXT, 2, uintptr(target), uintptr(framebuffer), 0)
-}
-
-func BindRenderbufferEXT(target uint32, renderbuffer uint32) {
- _, _, _ = syscall.Syscall(gpBindRenderbufferEXT, 2, uintptr(target), uintptr(renderbuffer), 0)
-}
-
-func BindTexture(target uint32, texture uint32) {
- _, _, _ = syscall.Syscall(gpBindTexture, 2, uintptr(target), uintptr(texture), 0)
-}
-
-func BlendFunc(sfactor uint32, dfactor uint32) {
- _, _, _ = syscall.Syscall(gpBlendFunc, 2, uintptr(sfactor), uintptr(dfactor), 0)
-}
-
-func BufferData(target uint32, size int, data unsafe.Pointer, usage uint32) {
- _, _, _ = syscall.Syscall6(gpBufferData, 4, uintptr(target), uintptr(size), uintptr(data), uintptr(usage), 0, 0)
-}
-
-func BufferSubData(target uint32, offset int, size int, data unsafe.Pointer) {
- _, _, _ = syscall.Syscall6(gpBufferSubData, 4, uintptr(target), uintptr(offset), uintptr(size), uintptr(data), 0, 0)
-}
-
-func CheckFramebufferStatusEXT(target uint32) uint32 {
- ret, _, _ := syscall.Syscall(gpCheckFramebufferStatusEXT, 1, uintptr(target), 0, 0)
- return uint32(ret)
-}
-
-func Clear(mask uint32) {
- _, _, _ = syscall.Syscall(gpClear, 1, uintptr(mask), 0, 0)
-}
-
-func ColorMask(red bool, green bool, blue bool, alpha bool) {
- _, _, _ = syscall.Syscall6(gpColorMask, 4, boolToUintptr(red), boolToUintptr(green), boolToUintptr(blue), boolToUintptr(alpha), 0, 0)
-}
-
-func CompileShader(shader uint32) {
- _, _, _ = syscall.Syscall(gpCompileShader, 1, uintptr(shader), 0, 0)
-}
-
-func CreateProgram() uint32 {
- ret, _, _ := syscall.Syscall(gpCreateProgram, 0, 0, 0, 0)
- return uint32(ret)
-}
-
-func CreateShader(xtype uint32) uint32 {
- ret, _, _ := syscall.Syscall(gpCreateShader, 1, uintptr(xtype), 0, 0)
- return uint32(ret)
-}
-
-func DeleteBuffers(n int32, buffers *uint32) {
- _, _, _ = syscall.Syscall(gpDeleteBuffers, 2, uintptr(n), uintptr(unsafe.Pointer(buffers)), 0)
-}
-
-func DeleteFramebuffersEXT(n int32, framebuffers *uint32) {
- _, _, _ = syscall.Syscall(gpDeleteFramebuffersEXT, 2, uintptr(n), uintptr(unsafe.Pointer(framebuffers)), 0)
-}
-
-func DeleteProgram(program uint32) {
- _, _, _ = syscall.Syscall(gpDeleteProgram, 1, uintptr(program), 0, 0)
-}
-
-func DeleteRenderbuffersEXT(n int32, renderbuffers *uint32) {
- _, _, _ = syscall.Syscall(gpDeleteRenderbuffersEXT, 2, uintptr(n), uintptr(unsafe.Pointer(renderbuffers)), 0)
-}
-
-func DeleteShader(shader uint32) {
- _, _, _ = syscall.Syscall(gpDeleteShader, 1, uintptr(shader), 0, 0)
-}
-
-func DeleteTextures(n int32, textures *uint32) {
- _, _, _ = syscall.Syscall(gpDeleteTextures, 2, uintptr(n), uintptr(unsafe.Pointer(textures)), 0)
-}
-
-func Disable(cap uint32) {
- _, _, _ = syscall.Syscall(gpDisable, 1, uintptr(cap), 0, 0)
-}
-
-func DisableVertexAttribArray(index uint32) {
- _, _, _ = syscall.Syscall(gpDisableVertexAttribArray, 1, uintptr(index), 0, 0)
-}
-
-func DrawElements(mode uint32, count int32, xtype uint32, indices uintptr) {
- _, _, _ = syscall.Syscall6(gpDrawElements, 4, uintptr(mode), uintptr(count), uintptr(xtype), uintptr(indices), 0, 0)
-}
-
-func Enable(cap uint32) {
- _, _, _ = syscall.Syscall(gpEnable, 1, uintptr(cap), 0, 0)
-}
-
-func EnableVertexAttribArray(index uint32) {
- _, _, _ = syscall.Syscall(gpEnableVertexAttribArray, 1, uintptr(index), 0, 0)
-}
-
-func Flush() {
- _, _, _ = syscall.Syscall(gpFlush, 0, 0, 0, 0)
-}
-
-func FramebufferRenderbufferEXT(target uint32, attachment uint32, renderbuffertarget uint32, renderbuffer uint32) {
- _, _, _ = syscall.Syscall6(gpFramebufferRenderbufferEXT, 4, uintptr(target), uintptr(attachment), uintptr(renderbuffertarget), uintptr(renderbuffer), 0, 0)
-}
-
-func FramebufferTexture2DEXT(target uint32, attachment uint32, textarget uint32, texture uint32, level int32) {
- _, _, _ = syscall.Syscall6(gpFramebufferTexture2DEXT, 5, uintptr(target), uintptr(attachment), uintptr(textarget), uintptr(texture), uintptr(level), 0)
-}
-
-func GenBuffers(n int32, buffers *uint32) {
- _, _, _ = syscall.Syscall(gpGenBuffers, 2, uintptr(n), uintptr(unsafe.Pointer(buffers)), 0)
-}
-
-func GenFramebuffersEXT(n int32, framebuffers *uint32) {
- _, _, _ = syscall.Syscall(gpGenFramebuffersEXT, 2, uintptr(n), uintptr(unsafe.Pointer(framebuffers)), 0)
-}
-
-func GenRenderbuffersEXT(n int32, renderbuffers *uint32) {
- _, _, _ = syscall.Syscall(gpGenRenderbuffersEXT, 2, uintptr(n), uintptr(unsafe.Pointer(renderbuffers)), 0)
-}
-
-func GenTextures(n int32, textures *uint32) {
- _, _, _ = syscall.Syscall(gpGenTextures, 2, uintptr(n), uintptr(unsafe.Pointer(textures)), 0)
-}
-
-func GetDoublei_v(target uint32, index uint32, data *float64) {
- _, _, _ = syscall.Syscall(gpGetDoublei_v, 3, uintptr(target), uintptr(index), uintptr(unsafe.Pointer(data)))
-}
-func GetDoublei_vEXT(pname uint32, index uint32, params *float64) {
- _, _, _ = syscall.Syscall(gpGetDoublei_vEXT, 3, uintptr(pname), uintptr(index), uintptr(unsafe.Pointer(params)))
-}
-
-func GetError() uint32 {
- ret, _, _ := syscall.Syscall(gpGetError, 0, 0, 0, 0)
- return uint32(ret)
-}
-func GetFloati_v(target uint32, index uint32, data *float32) {
- _, _, _ = syscall.Syscall(gpGetFloati_v, 3, uintptr(target), uintptr(index), uintptr(unsafe.Pointer(data)))
-}
-func GetFloati_vEXT(pname uint32, index uint32, params *float32) {
- _, _, _ = syscall.Syscall(gpGetFloati_vEXT, 3, uintptr(pname), uintptr(index), uintptr(unsafe.Pointer(params)))
-}
-
-func GetIntegeri_v(target uint32, index uint32, data *int32) {
- _, _, _ = syscall.Syscall(gpGetIntegeri_v, 3, uintptr(target), uintptr(index), uintptr(unsafe.Pointer(data)))
-}
-func GetIntegerui64i_vNV(value uint32, index uint32, result *uint64) {
- _, _, _ = syscall.Syscall(gpGetIntegerui64i_vNV, 3, uintptr(value), uintptr(index), uintptr(unsafe.Pointer(result)))
-}
-func GetIntegerv(pname uint32, data *int32) {
- _, _, _ = syscall.Syscall(gpGetIntegerv, 2, uintptr(pname), uintptr(unsafe.Pointer(data)), 0)
-}
-
-func GetPointeri_vEXT(pname uint32, index uint32, params *unsafe.Pointer) {
- _, _, _ = syscall.Syscall(gpGetPointeri_vEXT, 3, uintptr(pname), uintptr(index), uintptr(unsafe.Pointer(params)))
-}
-
-func GetProgramInfoLog(program uint32, bufSize int32, length *int32, infoLog *uint8) {
- _, _, _ = syscall.Syscall6(gpGetProgramInfoLog, 4, uintptr(program), uintptr(bufSize), uintptr(unsafe.Pointer(length)), uintptr(unsafe.Pointer(infoLog)), 0, 0)
-}
-
-func GetProgramiv(program uint32, pname uint32, params *int32) {
- _, _, _ = syscall.Syscall(gpGetProgramiv, 3, uintptr(program), uintptr(pname), uintptr(unsafe.Pointer(params)))
-}
-
-func GetShaderInfoLog(shader uint32, bufSize int32, length *int32, infoLog *uint8) {
- _, _, _ = syscall.Syscall6(gpGetShaderInfoLog, 4, uintptr(shader), uintptr(bufSize), uintptr(unsafe.Pointer(length)), uintptr(unsafe.Pointer(infoLog)), 0, 0)
-}
-
-func GetShaderiv(shader uint32, pname uint32, params *int32) {
- _, _, _ = syscall.Syscall(gpGetShaderiv, 3, uintptr(shader), uintptr(pname), uintptr(unsafe.Pointer(params)))
-}
-
-func GetTransformFeedbacki64_v(xfb uint32, pname uint32, index uint32, param *int64) {
- _, _, _ = syscall.Syscall6(gpGetTransformFeedbacki64_v, 4, uintptr(xfb), uintptr(pname), uintptr(index), uintptr(unsafe.Pointer(param)), 0, 0)
-}
-func GetTransformFeedbacki_v(xfb uint32, pname uint32, index uint32, param *int32) {
- _, _, _ = syscall.Syscall6(gpGetTransformFeedbacki_v, 4, uintptr(xfb), uintptr(pname), uintptr(index), uintptr(unsafe.Pointer(param)), 0, 0)
-}
-
-func GetUniformLocation(program uint32, name *uint8) int32 {
- ret, _, _ := syscall.Syscall(gpGetUniformLocation, 2, uintptr(program), uintptr(unsafe.Pointer(name)), 0)
- return int32(ret)
-}
-
-func GetUnsignedBytei_vEXT(target uint32, index uint32, data *uint8) {
- _, _, _ = syscall.Syscall(gpGetUnsignedBytei_vEXT, 3, uintptr(target), uintptr(index), uintptr(unsafe.Pointer(data)))
-}
-func GetVertexArrayIntegeri_vEXT(vaobj uint32, index uint32, pname uint32, param *int32) {
- _, _, _ = syscall.Syscall6(gpGetVertexArrayIntegeri_vEXT, 4, uintptr(vaobj), uintptr(index), uintptr(pname), uintptr(unsafe.Pointer(param)), 0, 0)
-}
-func GetVertexArrayPointeri_vEXT(vaobj uint32, index uint32, pname uint32, param *unsafe.Pointer) {
- _, _, _ = syscall.Syscall6(gpGetVertexArrayPointeri_vEXT, 4, uintptr(vaobj), uintptr(index), uintptr(pname), uintptr(unsafe.Pointer(param)), 0, 0)
-}
-
-func IsFramebufferEXT(framebuffer uint32) bool {
- ret, _, _ := syscall.Syscall(gpIsFramebufferEXT, 1, uintptr(framebuffer), 0, 0)
- return byte(ret) != 0
-}
-
-func IsProgram(program uint32) bool {
- ret, _, _ := syscall.Syscall(gpIsProgram, 1, uintptr(program), 0, 0)
- return byte(ret) != 0
-}
-
-func IsRenderbufferEXT(renderbuffer uint32) bool {
- ret, _, _ := syscall.Syscall(gpIsRenderbufferEXT, 1, uintptr(renderbuffer), 0, 0)
- return byte(ret) != 0
-}
-
-func IsTexture(texture uint32) bool {
- ret, _, _ := syscall.Syscall(gpIsTexture, 1, uintptr(texture), 0, 0)
- return byte(ret) != 0
-}
-
-func LinkProgram(program uint32) {
- _, _, _ = syscall.Syscall(gpLinkProgram, 1, uintptr(program), 0, 0)
-}
-
-func PixelStorei(pname uint32, param int32) {
- _, _, _ = syscall.Syscall(gpPixelStorei, 2, uintptr(pname), uintptr(param), 0)
-}
-
-func ReadPixels(x int32, y int32, width int32, height int32, format uint32, xtype uint32, pixels unsafe.Pointer) {
- _, _, _ = syscall.Syscall9(gpReadPixels, 7, uintptr(x), uintptr(y), uintptr(width), uintptr(height), uintptr(format), uintptr(xtype), uintptr(pixels), 0, 0)
-}
-
-func RenderbufferStorageEXT(target uint32, internalformat uint32, width int32, height int32) {
- _, _, _ = syscall.Syscall6(gpRenderbufferStorageEXT, 4, uintptr(target), uintptr(internalformat), uintptr(width), uintptr(height), 0, 0)
-}
-
-func Scissor(x int32, y int32, width int32, height int32) {
- _, _, _ = syscall.Syscall6(gpScissor, 4, uintptr(x), uintptr(y), uintptr(width), uintptr(height), 0, 0)
-}
-
-func ShaderSource(shader uint32, count int32, xstring **uint8, length *int32) {
- _, _, _ = syscall.Syscall6(gpShaderSource, 4, uintptr(shader), uintptr(count), uintptr(unsafe.Pointer(xstring)), uintptr(unsafe.Pointer(length)), 0, 0)
-}
-
-func StencilFunc(xfunc uint32, ref int32, mask uint32) {
- _, _, _ = syscall.Syscall(gpStencilFunc, 3, uintptr(xfunc), uintptr(ref), uintptr(mask))
-}
-
-func StencilOp(fail uint32, zfail uint32, zpass uint32) {
- _, _, _ = syscall.Syscall(gpStencilOp, 3, uintptr(fail), uintptr(zfail), uintptr(zpass))
-}
-
-func TexImage2D(target uint32, level int32, internalformat int32, width int32, height int32, border int32, format uint32, xtype uint32, pixels unsafe.Pointer) {
- _, _, _ = syscall.Syscall9(gpTexImage2D, 9, uintptr(target), uintptr(level), uintptr(internalformat), uintptr(width), uintptr(height), uintptr(border), uintptr(format), uintptr(xtype), uintptr(pixels))
-}
-
-func TexParameteri(target uint32, pname uint32, param int32) {
- _, _, _ = syscall.Syscall(gpTexParameteri, 3, uintptr(target), uintptr(pname), uintptr(param))
-}
-
-func TexSubImage2D(target uint32, level int32, xoffset int32, yoffset int32, width int32, height int32, format uint32, xtype uint32, pixels unsafe.Pointer) {
- _, _, _ = syscall.Syscall9(gpTexSubImage2D, 9, uintptr(target), uintptr(level), uintptr(xoffset), uintptr(yoffset), uintptr(width), uintptr(height), uintptr(format), uintptr(xtype), uintptr(pixels))
-}
-
-func Uniform1f(location int32, v0 float32) {
- _, _, _ = syscall.Syscall(gpUniform1f, 2, uintptr(location), uintptr(math.Float32bits(v0)), 0)
-}
-
-func Uniform1i(location int32, v0 int32) {
- _, _, _ = syscall.Syscall(gpUniform1i, 2, uintptr(location), uintptr(v0), 0)
-}
-
-func Uniform1fv(location int32, count int32, value *float32) {
- _, _, _ = syscall.Syscall(gpUniform1fv, 3, uintptr(location), uintptr(count), uintptr(unsafe.Pointer(value)))
-}
-
-func Uniform2fv(location int32, count int32, value *float32) {
- _, _, _ = syscall.Syscall(gpUniform2fv, 3, uintptr(location), uintptr(count), uintptr(unsafe.Pointer(value)))
-}
-
-func Uniform3fv(location int32, count int32, value *float32) {
- _, _, _ = syscall.Syscall(gpUniform3fv, 3, uintptr(location), uintptr(count), uintptr(unsafe.Pointer(value)))
-}
-
-func Uniform4fv(location int32, count int32, value *float32) {
- _, _, _ = syscall.Syscall(gpUniform4fv, 3, uintptr(location), uintptr(count), uintptr(unsafe.Pointer(value)))
-}
-
-func UniformMatrix2fv(location int32, count int32, transpose bool, value *float32) {
- _, _, _ = syscall.Syscall6(gpUniformMatrix2fv, 4, uintptr(location), uintptr(count), boolToUintptr(transpose), uintptr(unsafe.Pointer(value)), 0, 0)
-}
-
-func UniformMatrix3fv(location int32, count int32, transpose bool, value *float32) {
- _, _, _ = syscall.Syscall6(gpUniformMatrix3fv, 4, uintptr(location), uintptr(count), boolToUintptr(transpose), uintptr(unsafe.Pointer(value)), 0, 0)
-}
-
-func UniformMatrix4fv(location int32, count int32, transpose bool, value *float32) {
- _, _, _ = syscall.Syscall6(gpUniformMatrix4fv, 4, uintptr(location), uintptr(count), boolToUintptr(transpose), uintptr(unsafe.Pointer(value)), 0, 0)
-}
-
-func UseProgram(program uint32) {
- _, _, _ = syscall.Syscall(gpUseProgram, 1, uintptr(program), 0, 0)
-}
-
-func VertexAttribPointer(index uint32, size int32, xtype uint32, normalized bool, stride int32, pointer uintptr) {
- _, _, _ = syscall.Syscall6(gpVertexAttribPointer, 6, uintptr(index), uintptr(size), uintptr(xtype), boolToUintptr(normalized), uintptr(stride), uintptr(pointer))
-}
-
-func Viewport(x int32, y int32, width int32, height int32) {
- _, _, _ = syscall.Syscall6(gpViewport, 4, uintptr(x), uintptr(y), uintptr(width), uintptr(height), 0, 0)
-}
-
-// InitWithProcAddrFunc intializes the package using the specified OpenGL
-// function pointer loading function.
-//
-// For more cases Init should be used.
-func InitWithProcAddrFunc(getProcAddr func(name string) uintptr) error {
- gpActiveTexture = getProcAddr("glActiveTexture")
- if gpActiveTexture == 0 {
- return errors.New("glActiveTexture")
- }
- gpAttachShader = getProcAddr("glAttachShader")
- if gpAttachShader == 0 {
- return errors.New("glAttachShader")
- }
- gpBindAttribLocation = getProcAddr("glBindAttribLocation")
- if gpBindAttribLocation == 0 {
- return errors.New("glBindAttribLocation")
- }
- gpBindBuffer = getProcAddr("glBindBuffer")
- if gpBindBuffer == 0 {
- return errors.New("glBindBuffer")
- }
- gpBindFramebufferEXT = getProcAddr("glBindFramebufferEXT")
- gpBindRenderbufferEXT = getProcAddr("glBindRenderbufferEXT")
- gpBindTexture = getProcAddr("glBindTexture")
- if gpBindTexture == 0 {
- return errors.New("glBindTexture")
- }
- gpBlendFunc = getProcAddr("glBlendFunc")
- if gpBlendFunc == 0 {
- return errors.New("glBlendFunc")
- }
- gpBufferData = getProcAddr("glBufferData")
- if gpBufferData == 0 {
- return errors.New("glBufferData")
- }
- gpBufferSubData = getProcAddr("glBufferSubData")
- if gpBufferSubData == 0 {
- return errors.New("glBufferSubData")
- }
- gpCheckFramebufferStatusEXT = getProcAddr("glCheckFramebufferStatusEXT")
- gpClear = getProcAddr("glClear")
- if gpClear == 0 {
- return errors.New("glClear")
- }
- gpColorMask = getProcAddr("glColorMask")
- if gpColorMask == 0 {
- return errors.New("glColorMask")
- }
- gpCompileShader = getProcAddr("glCompileShader")
- if gpCompileShader == 0 {
- return errors.New("glCompileShader")
- }
- gpCreateProgram = getProcAddr("glCreateProgram")
- if gpCreateProgram == 0 {
- return errors.New("glCreateProgram")
- }
- gpCreateShader = getProcAddr("glCreateShader")
- if gpCreateShader == 0 {
- return errors.New("glCreateShader")
- }
- gpDeleteBuffers = getProcAddr("glDeleteBuffers")
- if gpDeleteBuffers == 0 {
- return errors.New("glDeleteBuffers")
- }
- gpDeleteFramebuffersEXT = getProcAddr("glDeleteFramebuffersEXT")
- gpDeleteProgram = getProcAddr("glDeleteProgram")
- if gpDeleteProgram == 0 {
- return errors.New("glDeleteProgram")
- }
- gpDeleteRenderbuffersEXT = getProcAddr("glDeleteRenderbuffersEXT")
- gpDeleteShader = getProcAddr("glDeleteShader")
- if gpDeleteShader == 0 {
- return errors.New("glDeleteShader")
- }
- gpDeleteTextures = getProcAddr("glDeleteTextures")
- if gpDeleteTextures == 0 {
- return errors.New("glDeleteTextures")
- }
- gpDisable = getProcAddr("glDisable")
- if gpDisable == 0 {
- return errors.New("glDisable")
- }
- gpDisableVertexAttribArray = getProcAddr("glDisableVertexAttribArray")
- if gpDisableVertexAttribArray == 0 {
- return errors.New("glDisableVertexAttribArray")
- }
- gpDrawElements = getProcAddr("glDrawElements")
- if gpDrawElements == 0 {
- return errors.New("glDrawElements")
- }
- gpEnable = getProcAddr("glEnable")
- if gpEnable == 0 {
- return errors.New("glEnable")
- }
- gpEnableVertexAttribArray = getProcAddr("glEnableVertexAttribArray")
- if gpEnableVertexAttribArray == 0 {
- return errors.New("glEnableVertexAttribArray")
- }
- gpFlush = getProcAddr("glFlush")
- if gpFlush == 0 {
- return errors.New("glFlush")
- }
- gpFramebufferRenderbufferEXT = getProcAddr("glFramebufferRenderbufferEXT")
- gpFramebufferTexture2DEXT = getProcAddr("glFramebufferTexture2DEXT")
- gpGenBuffers = getProcAddr("glGenBuffers")
- if gpGenBuffers == 0 {
- return errors.New("glGenBuffers")
- }
- gpGenFramebuffersEXT = getProcAddr("glGenFramebuffersEXT")
- gpGenRenderbuffersEXT = getProcAddr("glGenRenderbuffersEXT")
- gpGenTextures = getProcAddr("glGenTextures")
- if gpGenTextures == 0 {
- return errors.New("glGenTextures")
- }
- gpGetDoublei_v = getProcAddr("glGetDoublei_v")
- gpGetDoublei_vEXT = getProcAddr("glGetDoublei_vEXT")
- gpGetError = getProcAddr("glGetError")
- if gpGetError == 0 {
- return errors.New("glGetError")
- }
- gpGetFloati_v = getProcAddr("glGetFloati_v")
- gpGetFloati_vEXT = getProcAddr("glGetFloati_vEXT")
- gpGetIntegeri_v = getProcAddr("glGetIntegeri_v")
- gpGetIntegerui64i_vNV = getProcAddr("glGetIntegerui64i_vNV")
- gpGetIntegerv = getProcAddr("glGetIntegerv")
- if gpGetIntegerv == 0 {
- return errors.New("glGetIntegerv")
- }
- gpGetPointeri_vEXT = getProcAddr("glGetPointeri_vEXT")
- gpGetProgramInfoLog = getProcAddr("glGetProgramInfoLog")
- if gpGetProgramInfoLog == 0 {
- return errors.New("glGetProgramInfoLog")
- }
- gpGetProgramiv = getProcAddr("glGetProgramiv")
- if gpGetProgramiv == 0 {
- return errors.New("glGetProgramiv")
- }
- gpGetShaderInfoLog = getProcAddr("glGetShaderInfoLog")
- if gpGetShaderInfoLog == 0 {
- return errors.New("glGetShaderInfoLog")
- }
- gpGetShaderiv = getProcAddr("glGetShaderiv")
- if gpGetShaderiv == 0 {
- return errors.New("glGetShaderiv")
- }
- gpGetTransformFeedbacki64_v = getProcAddr("glGetTransformFeedbacki64_v")
- gpGetTransformFeedbacki_v = getProcAddr("glGetTransformFeedbacki_v")
- gpGetUniformLocation = getProcAddr("glGetUniformLocation")
- if gpGetUniformLocation == 0 {
- return errors.New("glGetUniformLocation")
- }
- gpGetUnsignedBytei_vEXT = getProcAddr("glGetUnsignedBytei_vEXT")
- gpGetVertexArrayIntegeri_vEXT = getProcAddr("glGetVertexArrayIntegeri_vEXT")
- gpGetVertexArrayPointeri_vEXT = getProcAddr("glGetVertexArrayPointeri_vEXT")
- gpIsFramebufferEXT = getProcAddr("glIsFramebufferEXT")
- gpIsProgram = getProcAddr("glIsProgram")
- if gpIsProgram == 0 {
- return errors.New("glIsProgram")
- }
- gpIsRenderbufferEXT = getProcAddr("glIsRenderbufferEXT")
- gpIsTexture = getProcAddr("glIsTexture")
- if gpIsTexture == 0 {
- return errors.New("glIsTexture")
- }
- gpLinkProgram = getProcAddr("glLinkProgram")
- if gpLinkProgram == 0 {
- return errors.New("glLinkProgram")
- }
- gpPixelStorei = getProcAddr("glPixelStorei")
- if gpPixelStorei == 0 {
- return errors.New("glPixelStorei")
- }
- gpReadPixels = getProcAddr("glReadPixels")
- if gpReadPixels == 0 {
- return errors.New("glReadPixels")
- }
- gpRenderbufferStorageEXT = getProcAddr("glRenderbufferStorageEXT")
- gpScissor = getProcAddr("glScissor")
- if gpScissor == 0 {
- return errors.New("glScissor")
- }
- gpShaderSource = getProcAddr("glShaderSource")
- if gpShaderSource == 0 {
- return errors.New("glShaderSource")
- }
- gpStencilFunc = getProcAddr("glStencilFunc")
- if gpStencilFunc == 0 {
- return errors.New("glStencilFunc")
- }
- gpStencilOp = getProcAddr("glStencilOp")
- if gpStencilOp == 0 {
- return errors.New("glStencilOp")
- }
- gpTexImage2D = getProcAddr("glTexImage2D")
- if gpTexImage2D == 0 {
- return errors.New("glTexImage2D")
- }
- gpTexParameteri = getProcAddr("glTexParameteri")
- if gpTexParameteri == 0 {
- return errors.New("glTexParameteri")
- }
- gpTexSubImage2D = getProcAddr("glTexSubImage2D")
- if gpTexSubImage2D == 0 {
- return errors.New("glTexSubImage2D")
- }
- gpUniform1f = getProcAddr("glUniform1f")
- if gpUniform1f == 0 {
- return errors.New("glUniform1f")
- }
- gpUniform1i = getProcAddr("glUniform1i")
- if gpUniform1i == 0 {
- return errors.New("glUniform1i")
- }
- gpUniform1fv = getProcAddr("glUniform1fv")
- if gpUniform1fv == 0 {
- return errors.New("glUniform1fv")
- }
- gpUniform2fv = getProcAddr("glUniform2fv")
- if gpUniform2fv == 0 {
- return errors.New("glUniform2fv")
- }
- gpUniform3fv = getProcAddr("glUniform3fv")
- if gpUniform3fv == 0 {
- return errors.New("glUniform3fv")
- }
- gpUniform4fv = getProcAddr("glUniform4fv")
- if gpUniform4fv == 0 {
- return errors.New("glUniform4fv")
- }
- gpUniformMatrix2fv = getProcAddr("glUniformMatrix2fv")
- if gpUniformMatrix2fv == 0 {
- return errors.New("glUniformMatrix2fv")
- }
- gpUniformMatrix3fv = getProcAddr("glUniformMatrix3fv")
- if gpUniformMatrix3fv == 0 {
- return errors.New("glUniformMatrix3fv")
- }
- gpUniformMatrix4fv = getProcAddr("glUniformMatrix4fv")
- if gpUniformMatrix4fv == 0 {
- return errors.New("glUniformMatrix4fv")
- }
- gpUseProgram = getProcAddr("glUseProgram")
- if gpUseProgram == 0 {
- return errors.New("glUseProgram")
- }
- gpVertexAttribPointer = getProcAddr("glVertexAttribPointer")
- if gpVertexAttribPointer == 0 {
- return errors.New("glVertexAttribPointer")
- }
- gpViewport = getProcAddr("glViewport")
- if gpViewport == 0 {
- return errors.New("glViewport")
- }
- return nil
-}