diff --git a/internal/gl/webgl/binding.go b/internal/gl/webgl/binding.go index 92e1035..77798b0 100644 --- a/internal/gl/webgl/binding.go +++ b/internal/gl/webgl/binding.go @@ -4,44 +4,79 @@ package webgl import ( - "syscall/js" - "vuelto.me/internal/windowing/web" -) + "syscall/js" + "vuelto.me/internal/windowing/web" +) var canvas web.Canvas = web.Document.GetElementById("vuelto") var gl web.Context = canvas.GetContext("webgl") var ( - VERTEX_SHADER = gl.Get("VERTEX_SHADER") - FRAGMENT_SHADER = gl.Get("FRAGMENT_SHADER") + VERTEX_SHADER = gl.Get("VERTEX_SHADER") + FRAGMENT_SHADER = gl.Get("FRAGMENT_SHADER") + + ARRAY_BUFFER = gl.Get("ARRAY_BUFFER") + + FLOAT = gl.Get("FLOAT") ) func CreateShader(inputType js.Value) js.Value { - return gl.Call("createShader", inputType) + return gl.Call("createShader", inputType) } func ShaderSource(shader js.Value, source string) { - gl.Call("shaderSource", shader, source) + gl.Call("shaderSource", shader, source) } func CompileShader(shader js.Value) { - gl.Call("compileShader", shader) + gl.Call("compileShader", shader) } func CreateProgram() js.Value { - return gl.Call("createProgram") + return gl.Call("createProgram") } func AttachShader(program, shaderType js.Value) { - gl.Call("attachShader", program, shaderType) + gl.Call("attachShader", program, shaderType) } func LinkProgram(program js.Value) { - gl.Call("linkProgram", program) + gl.Call("linkProgram", program) } func CreateBuffer() js.Value { - return gl.Call("createBuffer") + return gl.Call("createBuffer") +} + +func BindBuffer(target js.Value, buffer js.Value) { + gl.Call("bindBuffer", target, buffer) +} + +func BufferData(target js.Value, data []float32, usage js.Value) { + gl.Call("bufferData", target, js.TypedArrayOf(data), usage) +} + +func UseProgram(program js.Value) { + gl.Call("useProgram", program) } +func GetAttribLocation(program js.Value, name string) js.Value { + return gl.Call("getAttribLocation", program, name) +} + +func EnableVertexAttribArray(index js.Value) { + gl.Call("enableVertexAttribArray", index) +} + +func VertexAttribPointer(index js.Value, size int, typ js.Value, normalized bool, stride int, offset int) { + gl.Call("vertexAttribPointer", index, size, typ, normalized, stride, offset) +} + +func GetUniformLocation(program js.Value, name string) js.Value { + return gl.Call("getUniformLocation", program, name) +} + +func DrawArrays(mode js.Value, first int, count int) { + gl.Call("drawArrays", mode, first, count) +} diff --git a/internal/windowing/web/canvas.go b/internal/windowing/web/canvas.go index c393f8e..271709e 100644 --- a/internal/windowing/web/canvas.go +++ b/internal/windowing/web/canvas.go @@ -31,7 +31,7 @@ func (c *Canvas) IsNull() bool { } func (c *Canvas) AddEventListener(inputEvent string, inputFunc func(this js.Value, args []js.Value) any) { - js.Global().Get("window").Call("addEventListener", inputEvent, js.FuncOf(inputFunc)) + js.Global().Get("window").Call("addEventListener", inputEvent, js.FuncOf(inputFunc)) } func (c *Context) Set(inputKey string, inputValue any) { @@ -55,11 +55,11 @@ func (c *Context) DrawImage(inputImage js.Value, x, y, width, height float64) { } func (c *Context) Call(inputKey string, inputArgs ...any) js.Value { - return c.JSContext.Call(inputKey, inputArgs) + return c.JSContext.Call(inputKey, inputArgs) } func (c *Context) Get(inputKey string) js.Value { - return c.JSContext.Get(inputKey) + return c.JSContext.Get(inputKey) } func GetRGBA(color [4]int) string {