diff --git a/raylib/rlgl_cgo.go b/raylib/rlgl_cgo.go index 53f7c2d..0c51788 100644 --- a/raylib/rlgl_cgo.go +++ b/raylib/rlgl_cgo.go @@ -701,6 +701,23 @@ func GetLocationAttrib(shaderId uint32, attribName string) int32 { return int32(C.rlGetLocationAttrib(cshaderId, cattribName)) } +// SetUniform - Set shader value uniform +func SetUniform(locIndex int32, value []float32, uniformType int32) { + C.rlSetUniform(C.int(locIndex), unsafe.Pointer(unsafe.SliceData(value)), C.int(uniformType), C.int((len(value)))) +} + +// SetUniformMatrix - Set shader value matrix +func SetUniformMatrix(locIndex int32, mat Matrix) { + cmat := (*C.Matrix)(unsafe.Pointer(&mat)) + C.rlSetUniformMatrix(C.int(locIndex), *cmat) +} + +// SetUniformMatrices - Set shader value matrices +func SetUniformMatrices(locIndex int32, mat []Matrix) { + cmat := (*C.Matrix)(unsafe.Pointer(unsafe.SliceData(mat))) + C.rlSetUniformMatrices(C.int(locIndex), cmat, C.int(len(mat))) +} + // SetUniformSampler - Set shader value sampler func SetUniformSampler(locIndex int32, textureId uint32) { clocIndex := C.int(locIndex) diff --git a/raylib/rlgl_purego.go b/raylib/rlgl_purego.go index ff6bd1f..e0fd23b 100644 --- a/raylib/rlgl_purego.go +++ b/raylib/rlgl_purego.go @@ -115,6 +115,9 @@ var rlLoadShaderProgram func(vShaderId uint32, fShaderId uint32) uint32 var rlUnloadShaderProgram func(id uint32) var rlGetLocationUniform func(shaderId uint32, uniformName string) int32 var rlGetLocationAttrib func(shaderId uint32, attribName string) int32 +var rlSetUniform func(locIndex int32, value unsafe.Pointer, uniformType, count int32) +var rlSetUniformMatrix func(locIndex int32, mat uintptr) +var rlSetUniformMatrices func(locIndex int32, mat *Matrix, count int32) var rlSetUniformSampler func(locIndex int32, textureId uint32) var rlLoadComputeShaderProgram func(shaderID uint32) uint32 var rlComputeShaderDispatch func(groupX uint32, groupY uint32, groupZ uint32) @@ -245,6 +248,9 @@ func initRlglPurego() { purego.RegisterLibFunc(&rlUnloadShaderProgram, raylibDll, "rlUnloadShaderProgram") purego.RegisterLibFunc(&rlGetLocationUniform, raylibDll, "rlGetLocationUniform") purego.RegisterLibFunc(&rlGetLocationAttrib, raylibDll, "rlGetLocationAttrib") + purego.RegisterLibFunc(&rlSetUniform, raylibDll, "rlSetUniform") + purego.RegisterLibFunc(&rlSetUniformMatrix, raylibDll, "rlSetUniformMatrix") + purego.RegisterLibFunc(&rlSetUniformMatrices, raylibDll, "rlSetUniformMatrices") purego.RegisterLibFunc(&rlSetUniformSampler, raylibDll, "rlSetUniformSampler") purego.RegisterLibFunc(&rlLoadComputeShaderProgram, raylibDll, "rlLoadComputeShaderProgram") purego.RegisterLibFunc(&rlComputeShaderDispatch, raylibDll, "rlComputeShaderDispatch") @@ -812,6 +818,21 @@ func GetLocationAttrib(shaderId uint32, attribName string) int32 { return rlGetLocationAttrib(shaderId, attribName) } +// SetUniform - Set shader value uniform +func SetUniform(locIndex int32, value []float32, uniformType int32) { + rlSetUniform(locIndex, unsafe.Pointer(unsafe.SliceData(value)), uniformType, int32(len(value))) +} + +// SetUniformMatrix - Set shader value matrix +func SetUniformMatrix(locIndex int32, mat Matrix) { + rlSetUniformMatrix(locIndex, uintptr(unsafe.Pointer(&mat))) +} + +// SetUniformMatrices - Set shader value matrices +func SetUniformMatrices(locIndex int32, mat []Matrix) { + rlSetUniformMatrices(locIndex, unsafe.SliceData(mat), int32(len(mat))) +} + // SetUniformSampler - Set shader value sampler func SetUniformSampler(locIndex int32, textureId uint32) { rlSetUniformSampler(locIndex, textureId)