Adding modding folder with a hacked build.
This commit is contained in:
@@ -0,0 +1,378 @@
|
||||
package native
|
||||
|
||||
import (
|
||||
"strings"
|
||||
"unsafe"
|
||||
|
||||
"github.com/go-gl/gl/v3.2-core/gl"
|
||||
)
|
||||
|
||||
// OpenGL wraps the native GL API into a common interface.
|
||||
type OpenGL struct {
|
||||
}
|
||||
|
||||
// NewOpenGL initializes the Gl bindings and returns an OpenGL instance.
|
||||
func NewOpenGL() *OpenGL {
|
||||
opengl := &OpenGL{}
|
||||
|
||||
if err := gl.Init(); err != nil {
|
||||
panic(err)
|
||||
}
|
||||
|
||||
return opengl
|
||||
}
|
||||
|
||||
// ActiveTexture implements the opengl.OpenGL interface.
|
||||
func (native *OpenGL) ActiveTexture(texture uint32) {
|
||||
gl.ActiveTexture(texture)
|
||||
}
|
||||
|
||||
// AttachShader implements the opengl.OpenGL interface.
|
||||
func (native *OpenGL) AttachShader(program uint32, shader uint32) {
|
||||
gl.AttachShader(program, shader)
|
||||
}
|
||||
|
||||
// BindAttribLocation implements the opengl.OpenGL interface.
|
||||
func (native *OpenGL) BindAttribLocation(program uint32, index uint32, name string) {
|
||||
gl.BindAttribLocation(program, index, gl.Str(name+"\x00"))
|
||||
}
|
||||
|
||||
// BindBuffer implements the opengl.OpenGL interface.
|
||||
func (native *OpenGL) BindBuffer(target uint32, buffer uint32) {
|
||||
gl.BindBuffer(target, buffer)
|
||||
}
|
||||
|
||||
// BindFramebuffer implements the opengl.OpenGL interface.
|
||||
func (native *OpenGL) BindFramebuffer(target uint32, buffer uint32) {
|
||||
gl.BindFramebuffer(target, buffer)
|
||||
}
|
||||
|
||||
// BindRenderbuffer implements the opengl.OpenGL interface.
|
||||
func (native *OpenGL) BindRenderbuffer(target uint32, buffer uint32) {
|
||||
gl.BindRenderbuffer(target, buffer)
|
||||
}
|
||||
|
||||
// BindSampler implements the opengl.OpenGL interface.
|
||||
func (native *OpenGL) BindSampler(unit uint32, sampler uint32) {
|
||||
gl.BindSampler(unit, sampler)
|
||||
}
|
||||
|
||||
// BindTexture implements the opengl.OpenGL interface.
|
||||
func (native *OpenGL) BindTexture(target uint32, texture uint32) {
|
||||
gl.BindTexture(target, texture)
|
||||
}
|
||||
|
||||
// BindVertexArray implements the opengl.OpenGL interface.
|
||||
func (native *OpenGL) BindVertexArray(array uint32) {
|
||||
gl.BindVertexArray(array)
|
||||
}
|
||||
|
||||
// BlendEquation implements the opengl.OpenGL interface.
|
||||
func (native *OpenGL) BlendEquation(mode uint32) {
|
||||
gl.BlendEquation(mode)
|
||||
}
|
||||
|
||||
// BlendEquationSeparate implements the opengl.OpenGL interface.
|
||||
func (native *OpenGL) BlendEquationSeparate(modeRGB uint32, modeAlpha uint32) {
|
||||
gl.BlendEquationSeparate(modeRGB, modeAlpha)
|
||||
}
|
||||
|
||||
// BlendFunc implements the opengl.OpenGL interface.
|
||||
func (native *OpenGL) BlendFunc(sfactor uint32, dfactor uint32) {
|
||||
gl.BlendFunc(sfactor, dfactor)
|
||||
}
|
||||
|
||||
// BlendFuncSeparate implements the opengl.OpenGL interface.
|
||||
func (native *OpenGL) BlendFuncSeparate(srcRGB uint32, dstRGB uint32, srcAlpha uint32, dstAlpha uint32) {
|
||||
gl.BlendFuncSeparate(srcRGB, dstRGB, srcAlpha, dstAlpha)
|
||||
}
|
||||
|
||||
// BufferData implements the opengl.OpenGL interface.
|
||||
func (native *OpenGL) BufferData(target uint32, size int, data interface{}, usage uint32) {
|
||||
dataPtr, isPtr := data.(unsafe.Pointer)
|
||||
if isPtr {
|
||||
gl.BufferData(target, size, dataPtr, usage)
|
||||
} else {
|
||||
gl.BufferData(target, size, gl.Ptr(data), usage)
|
||||
}
|
||||
}
|
||||
|
||||
// CheckFramebufferStatus implements the opengl.OpenGL interface.
|
||||
func (native *OpenGL) CheckFramebufferStatus(target uint32) uint32 {
|
||||
return gl.CheckFramebufferStatus(target)
|
||||
}
|
||||
|
||||
// Clear implements the opengl.OpenGL interface.
|
||||
func (native *OpenGL) Clear(mask uint32) {
|
||||
gl.Clear(mask)
|
||||
}
|
||||
|
||||
// ClearColor implements the opengl.OpenGL interface.
|
||||
func (native *OpenGL) ClearColor(red float32, green float32, blue float32, alpha float32) {
|
||||
gl.ClearColor(red, green, blue, alpha)
|
||||
}
|
||||
|
||||
// CompileShader implements the opengl.OpenGL interface.
|
||||
func (native *OpenGL) CompileShader(shader uint32) {
|
||||
gl.CompileShader(shader)
|
||||
}
|
||||
|
||||
// CreateProgram implements the opengl.OpenGL interface.
|
||||
func (native *OpenGL) CreateProgram() uint32 {
|
||||
return gl.CreateProgram()
|
||||
}
|
||||
|
||||
// CreateShader implements the opengl.OpenGL interface.
|
||||
func (native *OpenGL) CreateShader(shaderType uint32) uint32 {
|
||||
return gl.CreateShader(shaderType)
|
||||
}
|
||||
|
||||
// DeleteBuffers implements the opengl.OpenGL interface.
|
||||
func (native *OpenGL) DeleteBuffers(buffers []uint32) {
|
||||
gl.DeleteBuffers(int32(len(buffers)), &buffers[0])
|
||||
}
|
||||
|
||||
// DeleteFramebuffers implements the opengl.OpenGL interface.
|
||||
func (native *OpenGL) DeleteFramebuffers(buffers []uint32) {
|
||||
gl.DeleteFramebuffers(int32(len(buffers)), &buffers[0])
|
||||
}
|
||||
|
||||
// DeleteProgram implements the opengl.OpenGL interface.
|
||||
func (native *OpenGL) DeleteProgram(program uint32) {
|
||||
gl.DeleteProgram(program)
|
||||
}
|
||||
|
||||
// DeleteShader implements the opengl.OpenGL interface.
|
||||
func (native *OpenGL) DeleteShader(shader uint32) {
|
||||
gl.DeleteShader(shader)
|
||||
}
|
||||
|
||||
// DeleteTextures implements the opengl.OpenGL interface.
|
||||
func (native *OpenGL) DeleteTextures(textures []uint32) {
|
||||
gl.DeleteTextures(int32(len(textures)), &textures[0])
|
||||
}
|
||||
|
||||
// DeleteVertexArrays implements the opengl.OpenGL interface.
|
||||
func (native *OpenGL) DeleteVertexArrays(arrays []uint32) {
|
||||
gl.DeleteVertexArrays(int32(len(arrays)), &arrays[0])
|
||||
}
|
||||
|
||||
// Disable implements the opengl.OpenGL interface.
|
||||
func (native *OpenGL) Disable(capability uint32) {
|
||||
gl.Disable(capability)
|
||||
}
|
||||
|
||||
// DrawArrays implements the opengl.OpenGL interface.
|
||||
func (native *OpenGL) DrawArrays(mode uint32, first int32, count int32) {
|
||||
gl.DrawArrays(mode, first, count)
|
||||
}
|
||||
|
||||
// DrawBuffers implements the opengl.OpenGL interface.
|
||||
func (native *OpenGL) DrawBuffers(buffers []uint32) {
|
||||
gl.DrawBuffers(int32(len(buffers)), &buffers[0])
|
||||
}
|
||||
|
||||
// DrawElements implements the opengl.OpenGL interface.
|
||||
func (native *OpenGL) DrawElements(mode uint32, count int32, elementType uint32, indices uintptr) {
|
||||
gl.DrawElements(mode, count, elementType, unsafe.Pointer(indices)) // nolint: govet,gas
|
||||
}
|
||||
|
||||
// Enable implements the opengl.OpenGL interface.
|
||||
func (native *OpenGL) Enable(capability uint32) {
|
||||
gl.Enable(capability)
|
||||
}
|
||||
|
||||
// EnableVertexAttribArray implements the opengl.OpenGL interface.
|
||||
func (native *OpenGL) EnableVertexAttribArray(index uint32) {
|
||||
gl.EnableVertexAttribArray(index)
|
||||
}
|
||||
|
||||
// FramebufferRenderbuffer implements the opengl.OpenGL interface.
|
||||
func (native *OpenGL) FramebufferRenderbuffer(target uint32, attachment uint32, renderbuffertarget uint32, renderbuffer uint32) {
|
||||
gl.FramebufferRenderbuffer(target, attachment, renderbuffertarget, renderbuffer)
|
||||
}
|
||||
|
||||
// FramebufferTexture implements the opengl.OpenGL interface.
|
||||
func (native *OpenGL) FramebufferTexture(target uint32, attachment uint32, texture uint32, level int32) {
|
||||
gl.FramebufferTexture(target, attachment, texture, level)
|
||||
}
|
||||
|
||||
// GenerateMipmap implements the opengl.OpenGL interface.
|
||||
func (native *OpenGL) GenerateMipmap(target uint32) {
|
||||
gl.GenerateMipmap(target)
|
||||
}
|
||||
|
||||
// GenBuffers implements the opengl.OpenGL interface.
|
||||
func (native *OpenGL) GenBuffers(n int32) []uint32 {
|
||||
buffers := make([]uint32, n)
|
||||
gl.GenBuffers(n, &buffers[0])
|
||||
return buffers
|
||||
}
|
||||
|
||||
// GenFramebuffers implements the opengl.OpenGL interface.
|
||||
func (native *OpenGL) GenFramebuffers(n int32) []uint32 {
|
||||
buffers := make([]uint32, n)
|
||||
gl.GenFramebuffers(n, &buffers[0])
|
||||
return buffers
|
||||
}
|
||||
|
||||
// GenRenderbuffers implements the opengl.OpenGL interface.
|
||||
func (native *OpenGL) GenRenderbuffers(n int32) []uint32 {
|
||||
buffers := make([]uint32, n)
|
||||
gl.GenRenderbuffers(n, &buffers[0])
|
||||
return buffers
|
||||
}
|
||||
|
||||
// GenTextures implements the opengl.OpenGL interface.
|
||||
func (native *OpenGL) GenTextures(n int32) []uint32 {
|
||||
ids := make([]uint32, n)
|
||||
gl.GenTextures(n, &ids[0])
|
||||
return ids
|
||||
}
|
||||
|
||||
// GenVertexArrays implements the opengl.OpenGL interface.
|
||||
func (native *OpenGL) GenVertexArrays(n int32) []uint32 {
|
||||
ids := make([]uint32, n)
|
||||
gl.GenVertexArrays(n, &ids[0])
|
||||
return ids
|
||||
}
|
||||
|
||||
// GetAttribLocation implements the opengl.OpenGL interface.
|
||||
func (native *OpenGL) GetAttribLocation(program uint32, name string) int32 {
|
||||
return gl.GetAttribLocation(program, gl.Str(name+"\x00"))
|
||||
}
|
||||
|
||||
// GetError implements the opengl.OpenGL interface.
|
||||
func (native *OpenGL) GetError() uint32 {
|
||||
return gl.GetError()
|
||||
}
|
||||
|
||||
// GetIntegerv implements the opengl.OpenGL interface.
|
||||
func (native *OpenGL) GetIntegerv(name uint32, data *int32) {
|
||||
gl.GetIntegerv(name, data)
|
||||
}
|
||||
|
||||
// GetProgramInfoLog implements the opengl.OpenGL interface.
|
||||
func (native *OpenGL) GetProgramInfoLog(program uint32) string {
|
||||
logLength := native.GetProgramParameter(program, gl.INFO_LOG_LENGTH)
|
||||
log := strings.Repeat("\x00", int(logLength+1))
|
||||
gl.GetProgramInfoLog(program, logLength, nil, gl.Str(log))
|
||||
return log
|
||||
}
|
||||
|
||||
// GetProgramParameter implements the opengl.OpenGL interface.
|
||||
func (native *OpenGL) GetProgramParameter(program uint32, param uint32) int32 {
|
||||
result := int32(0)
|
||||
gl.GetProgramiv(program, param, &result)
|
||||
return result
|
||||
}
|
||||
|
||||
// GetShaderInfoLog implements the opengl.OpenGL interface.
|
||||
func (native *OpenGL) GetShaderInfoLog(shader uint32) string {
|
||||
logLength := native.GetShaderParameter(shader, gl.INFO_LOG_LENGTH)
|
||||
log := strings.Repeat("\x00", int(logLength+1))
|
||||
gl.GetShaderInfoLog(shader, logLength, nil, gl.Str(log))
|
||||
return log
|
||||
}
|
||||
|
||||
// GetShaderParameter implements the opengl.OpenGL interface.
|
||||
func (native *OpenGL) GetShaderParameter(shader uint32, param uint32) int32 {
|
||||
result := int32(0)
|
||||
gl.GetShaderiv(shader, param, &result)
|
||||
return result
|
||||
}
|
||||
|
||||
// GetUniformLocation implements the opengl.OpenGL interface.
|
||||
func (native *OpenGL) GetUniformLocation(program uint32, name string) int32 {
|
||||
return gl.GetUniformLocation(program, gl.Str(name+"\x00"))
|
||||
}
|
||||
|
||||
// IsEnabled implements the OpenGL interface.
|
||||
func (native *OpenGL) IsEnabled(capability uint32) bool {
|
||||
return gl.IsEnabled(capability)
|
||||
}
|
||||
|
||||
// LinkProgram implements the opengl.OpenGL interface.
|
||||
func (native *OpenGL) LinkProgram(program uint32) {
|
||||
gl.LinkProgram(program)
|
||||
}
|
||||
|
||||
// PixelStorei implements the OpenGL interface.
|
||||
func (native *OpenGL) PixelStorei(name uint32, param int32) {
|
||||
gl.PixelStorei(name, param)
|
||||
}
|
||||
|
||||
// PolygonMode implements the opengl.OpenGL interface.
|
||||
func (native *OpenGL) PolygonMode(face uint32, mode uint32) {
|
||||
gl.PolygonMode(face, mode)
|
||||
}
|
||||
|
||||
// ReadPixels implements the opengl.OpenGL interface.
|
||||
func (native *OpenGL) ReadPixels(x int32, y int32, width int32, height int32, format uint32, pixelType uint32, pixels interface{}) {
|
||||
gl.ReadPixels(x, y, width, height, format, pixelType, gl.Ptr(pixels))
|
||||
}
|
||||
|
||||
// RenderbufferStorage implements the opengl.OpenGL interface.
|
||||
func (native *OpenGL) RenderbufferStorage(target uint32, internalFormat uint32, width int32, height int32) {
|
||||
gl.RenderbufferStorage(target, internalFormat, width, height)
|
||||
}
|
||||
|
||||
// Scissor implements the opengl.OpenGL interface.
|
||||
func (native *OpenGL) Scissor(x, y int32, width, height int32) {
|
||||
gl.Scissor(x, y, width, height)
|
||||
}
|
||||
|
||||
// ShaderSource implements the opengl.OpenGL interface.
|
||||
func (native *OpenGL) ShaderSource(shader uint32, source string) {
|
||||
csources, free := gl.Strs(source + "\x00")
|
||||
defer free()
|
||||
|
||||
gl.ShaderSource(shader, 1, csources, nil)
|
||||
}
|
||||
|
||||
// TexImage2D implements the opengl.OpenGL interface.
|
||||
func (native *OpenGL) TexImage2D(target uint32, level int32, internalFormat uint32, width int32, height int32,
|
||||
border int32, format uint32, xtype uint32, pixels interface{}) {
|
||||
ptr, isPointer := pixels.(unsafe.Pointer)
|
||||
if isPointer {
|
||||
gl.TexImage2D(target, level, int32(internalFormat), width, height, border, format, xtype, ptr)
|
||||
} else {
|
||||
gl.TexImage2D(target, level, int32(internalFormat), width, height, border, format, xtype, gl.Ptr(pixels))
|
||||
}
|
||||
}
|
||||
|
||||
// TexParameteri implements the opengl.OpenGL interface.
|
||||
func (native *OpenGL) TexParameteri(target uint32, pname uint32, param int32) {
|
||||
gl.TexParameteri(target, pname, param)
|
||||
}
|
||||
|
||||
// Uniform1i implements the opengl.OpenGL interface.
|
||||
func (native *OpenGL) Uniform1i(location int32, value int32) {
|
||||
gl.Uniform1i(location, value)
|
||||
}
|
||||
|
||||
// Uniform4fv implements the opengl.OpenGL interface.
|
||||
func (native *OpenGL) Uniform4fv(location int32, value *[4]float32) {
|
||||
gl.Uniform4fv(location, 1, &value[0])
|
||||
}
|
||||
|
||||
// UniformMatrix4fv implements the opengl.OpenGL interface.
|
||||
func (native *OpenGL) UniformMatrix4fv(location int32, transpose bool, value *[16]float32) {
|
||||
count := int32(1)
|
||||
gl.UniformMatrix4fv(location, count, transpose, &value[0])
|
||||
}
|
||||
|
||||
// UseProgram implements the opengl.OpenGL interface.
|
||||
func (native *OpenGL) UseProgram(program uint32) {
|
||||
gl.UseProgram(program)
|
||||
}
|
||||
|
||||
// VertexAttribOffset implements the opengl.OpenGL interface.
|
||||
func (native *OpenGL) VertexAttribOffset(index uint32, size int32, attribType uint32, normalized bool, stride int32, offset int) {
|
||||
gl.VertexAttribPointer(index, size, attribType, normalized, stride, gl.PtrOffset(offset))
|
||||
}
|
||||
|
||||
// Viewport implements the opengl.OpenGL interface.
|
||||
func (native *OpenGL) Viewport(x int32, y int32, width int32, height int32) {
|
||||
gl.Viewport(x, y, width, height)
|
||||
}
|
||||
Reference in New Issue
Block a user