Merge pull request #409 from JupiterRider/shaderfix

Some fixes for purego-version
This commit is contained in:
Milan Nikolic 2024-08-26 13:34:25 +02:00 committed by GitHub
commit 287f319ecb
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -11,6 +11,7 @@ import (
"unsafe" "unsafe"
"github.com/ebitengine/purego" "github.com/ebitengine/purego"
"golang.org/x/sys/windows"
) )
var ( var (
@ -91,8 +92,8 @@ var beginVrStereoMode func(config uintptr)
var endVrStereoMode func() var endVrStereoMode func()
var loadVrStereoConfig func(config uintptr, device uintptr) var loadVrStereoConfig func(config uintptr, device uintptr)
var unloadVrStereoConfig func(config uintptr) var unloadVrStereoConfig func(config uintptr)
var loadShader func(shader uintptr, vsFileName string, fsFileName string) var loadShader func(shader uintptr, vsFileName uintptr, fsFileName uintptr)
var loadShaderFromMemory func(shader uintptr, vsCode string, fsCode string) var loadShaderFromMemory func(shader uintptr, vsCode uintptr, fsCode uintptr)
var isShaderReady func(shader uintptr) bool var isShaderReady func(shader uintptr) bool
var getShaderLocation func(shader uintptr, uniformName string) int32 var getShaderLocation func(shader uintptr, uniformName string) int32
var getShaderLocationAttrib func(shader uintptr, attribName string) int32 var getShaderLocationAttrib func(shader uintptr, attribName string) int32
@ -1328,7 +1329,7 @@ func EndTextureMode() {
// BeginShaderMode - Begin custom shader drawing // BeginShaderMode - Begin custom shader drawing
func BeginShaderMode(shader Shader) { func BeginShaderMode(shader Shader) {
beginShaderMode(*(*uintptr)(unsafe.Pointer(&shader))) beginShaderMode(uintptr(unsafe.Pointer(&shader)))
} }
// EndShaderMode - End custom shader drawing (use default shader) // EndShaderMode - End custom shader drawing (use default shader)
@ -1377,14 +1378,44 @@ func UnloadVrStereoConfig(config VrStereoConfig) {
// LoadShader - Load shader from files and bind default locations // LoadShader - Load shader from files and bind default locations
func LoadShader(vsFileName string, fsFileName string) Shader { func LoadShader(vsFileName string, fsFileName string) Shader {
var shader Shader var shader Shader
loadShader(uintptr(unsafe.Pointer(&shader)), vsFileName, fsFileName) var cvsFileName, cfsFileName *byte
if vsFileName != "" {
var err error
cvsFileName, err = windows.BytePtrFromString(vsFileName)
if err != nil {
panic(err)
}
}
if fsFileName != "" {
var err error
cfsFileName, err = windows.BytePtrFromString(fsFileName)
if err != nil {
panic(err)
}
}
loadShader(uintptr(unsafe.Pointer(&shader)), uintptr(unsafe.Pointer(cvsFileName)), uintptr(unsafe.Pointer(cfsFileName)))
return shader return shader
} }
// LoadShaderFromMemory - Load shader from code strings and bind default locations // LoadShaderFromMemory - Load shader from code strings and bind default locations
func LoadShaderFromMemory(vsCode string, fsCode string) Shader { func LoadShaderFromMemory(vsCode string, fsCode string) Shader {
var shader Shader var shader Shader
loadShaderFromMemory(uintptr(unsafe.Pointer(&shader)), vsCode, fsCode) var cvsCode, cfsCode *byte
if vsCode != "" {
var err error
cvsCode, err = windows.BytePtrFromString(vsCode)
if err != nil {
panic(err)
}
}
if fsCode != "" {
var err error
cfsCode, err = windows.BytePtrFromString(fsCode)
if err != nil {
panic(err)
}
}
loadShaderFromMemory(uintptr(unsafe.Pointer(&shader)), uintptr(unsafe.Pointer(cvsCode)), uintptr(unsafe.Pointer(cfsCode)))
return shader return shader
} }