Adding modding folder with a hacked build.

This commit is contained in:
ml
2026-09-26 08:53:08 +02:00
parent cdb960dc71
commit c91080aba7
755 changed files with 50424 additions and 0 deletions
+378
View File
@@ -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)
}