Skip to content

Commit

Permalink
Finished webgl bindings
Browse files Browse the repository at this point in the history
  • Loading branch information
dimkauzh committed Apr 29, 2024
1 parent 750e3a2 commit 2416b3e
Show file tree
Hide file tree
Showing 2 changed files with 50 additions and 15 deletions.
59 changes: 47 additions & 12 deletions internal/gl/webgl/binding.go
Original file line number Diff line number Diff line change
Expand Up @@ -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)
}
6 changes: 3 additions & 3 deletions internal/windowing/web/canvas.go
Original file line number Diff line number Diff line change
Expand Up @@ -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) {
Expand All @@ -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 {
Expand Down

0 comments on commit 2416b3e

Please sign in to comment.