From 040d87fb7928616f705ce3341056236e88759690 Mon Sep 17 00:00:00 2001 From: Milan Nikolic Date: Tue, 7 Nov 2023 14:25:51 +0100 Subject: [PATCH] Use unsafe Slice/SliceData --- raylib/raudio.go | 11 ++--------- raylib/rlgl.go | 9 ++++----- 2 files changed, 6 insertions(+), 14 deletions(-) diff --git a/raylib/raudio.go b/raylib/raudio.go index 60f5382..1064989 100644 --- a/raylib/raudio.go +++ b/raylib/raudio.go @@ -11,7 +11,6 @@ package rl */ import "C" import ( - "reflect" "unsafe" ) @@ -228,16 +227,10 @@ func WaveCrop(wave Wave, initSample int32, finalSample int32) { // LoadWaveSamples - Get samples data from wave as a floats array func LoadWaveSamples(wave Wave) []float32 { - var data []float32 cwave := wave.cptr() ret := C.LoadWaveSamples(*cwave) - - sliceHeader := (*reflect.SliceHeader)((unsafe.Pointer(&data))) - sliceHeader.Cap = int(wave.FrameCount) - sliceHeader.Len = int(wave.FrameCount) - sliceHeader.Data = uintptr(unsafe.Pointer(ret)) - - return data + v := unsafe.Slice((*float32)(unsafe.Pointer(ret)), wave.FrameCount) + return v } // UnloadWaveSamples - Unload samples data loaded with LoadWaveSamples() diff --git a/raylib/rlgl.go b/raylib/rlgl.go index 06651f4..eddd788 100644 --- a/raylib/rlgl.go +++ b/raylib/rlgl.go @@ -7,7 +7,6 @@ package rl */ import "C" import ( - "reflect" "unsafe" ) @@ -100,19 +99,19 @@ func GetShaderLocationAttrib(shader Shader, attribName string) int32 { func SetShaderValue(shader Shader, locIndex int32, value []float32, uniformType ShaderUniformDataType) { cshader := shader.cptr() clocIndex := (C.int)(locIndex) - cvalue := unsafe.Pointer((*reflect.SliceHeader)(unsafe.Pointer(&value)).Data) + cvalue := unsafe.SliceData(value) cuniformType := (C.int)(uniformType) - C.SetShaderValue(*cshader, clocIndex, cvalue, cuniformType) + C.SetShaderValue(*cshader, clocIndex, unsafe.Pointer(cvalue), cuniformType) } // SetShaderValueV - Set shader uniform value (float) func SetShaderValueV(shader Shader, locIndex int32, value []float32, uniformType ShaderUniformDataType, count int32) { cshader := shader.cptr() clocIndex := (C.int)(locIndex) - cvalue := unsafe.Pointer((*reflect.SliceHeader)(unsafe.Pointer(&value)).Data) + cvalue := unsafe.SliceData(value) cuniformType := (C.int)(uniformType) ccount := (C.int)(count) - C.SetShaderValueV(*cshader, clocIndex, cvalue, cuniformType, ccount) + C.SetShaderValueV(*cshader, clocIndex, unsafe.Pointer(cvalue), cuniformType, ccount) } // SetShaderValueMatrix - Set shader uniform value (matrix 4x4)