MultMatrix for purego added
This commit is contained in:
parent
5314a4a209
commit
86d08a7b86
3 changed files with 32 additions and 24 deletions
|
@ -1360,6 +1360,30 @@ func MatrixToFloatV(mat Matrix) [16]float32 {
|
|||
return result
|
||||
}
|
||||
|
||||
// MatrixToFloat - Converts Matrix to float32 slice
|
||||
func MatrixToFloat(mat Matrix) []float32 {
|
||||
data := make([]float32, 16)
|
||||
|
||||
data[0] = mat.M0
|
||||
data[1] = mat.M4
|
||||
data[2] = mat.M8
|
||||
data[3] = mat.M12
|
||||
data[4] = mat.M1
|
||||
data[5] = mat.M5
|
||||
data[6] = mat.M9
|
||||
data[7] = mat.M13
|
||||
data[8] = mat.M2
|
||||
data[9] = mat.M6
|
||||
data[10] = mat.M10
|
||||
data[11] = mat.M14
|
||||
data[12] = mat.M3
|
||||
data[13] = mat.M7
|
||||
data[14] = mat.M11
|
||||
data[15] = mat.M15
|
||||
|
||||
return data
|
||||
}
|
||||
|
||||
// QuaternionAdd - Add two quaternions
|
||||
func QuaternionAdd(q1 Quaternion, q2 Quaternion) Quaternion {
|
||||
var result = Quaternion{X: q1.X + q2.X, Y: q1.Y + q2.Y, Z: q1.Z + q2.Z, W: q1.W + q2.W}
|
||||
|
|
|
@ -854,30 +854,6 @@ func Vector3ToFloat(vec Vector3) []float32 {
|
|||
return data
|
||||
}
|
||||
|
||||
// MatrixToFloat - Converts Matrix to float32 slice
|
||||
func MatrixToFloat(mat Matrix) []float32 {
|
||||
data := make([]float32, 16)
|
||||
|
||||
data[0] = mat.M0
|
||||
data[1] = mat.M4
|
||||
data[2] = mat.M8
|
||||
data[3] = mat.M12
|
||||
data[4] = mat.M1
|
||||
data[5] = mat.M5
|
||||
data[6] = mat.M9
|
||||
data[7] = mat.M13
|
||||
data[8] = mat.M2
|
||||
data[9] = mat.M6
|
||||
data[10] = mat.M10
|
||||
data[11] = mat.M14
|
||||
data[12] = mat.M3
|
||||
data[13] = mat.M7
|
||||
data[14] = mat.M11
|
||||
data[15] = mat.M15
|
||||
|
||||
return data
|
||||
}
|
||||
|
||||
// GetRandomValue - Returns a random value between min and max (both included)
|
||||
func GetRandomValue(min, max int32) int32 {
|
||||
cmin := (C.int)(min)
|
||||
|
|
|
@ -16,6 +16,7 @@ var rlLoadIdentity func()
|
|||
var rlTranslatef func(x float32, y float32, z float32)
|
||||
var rlRotatef func(angle float32, x float32, y float32, z float32)
|
||||
var rlScalef func(x float32, y float32, z float32)
|
||||
var rlMultMatrixf func(matf *float32)
|
||||
var rlFrustum func(left float64, right float64, bottom float64, top float64, znear float64, zfar float64)
|
||||
var rlOrtho func(left float64, right float64, bottom float64, top float64, znear float64, zfar float64)
|
||||
var rlViewport func(x int32, y int32, width int32, height int32)
|
||||
|
@ -138,6 +139,7 @@ func initRlglPurego() {
|
|||
purego.RegisterLibFunc(&rlTranslatef, raylibDll, "rlTranslatef")
|
||||
purego.RegisterLibFunc(&rlRotatef, raylibDll, "rlRotatef")
|
||||
purego.RegisterLibFunc(&rlScalef, raylibDll, "rlScalef")
|
||||
purego.RegisterLibFunc(&rlMultMatrixf, raylibDll, "rlMultMatrixf")
|
||||
purego.RegisterLibFunc(&rlFrustum, raylibDll, "rlFrustum")
|
||||
purego.RegisterLibFunc(&rlOrtho, raylibDll, "rlOrtho")
|
||||
purego.RegisterLibFunc(&rlViewport, raylibDll, "rlViewport")
|
||||
|
@ -298,6 +300,12 @@ func Scalef(x float32, y float32, z float32) {
|
|||
rlScalef(x, y, z)
|
||||
}
|
||||
|
||||
// MultMatrix - Multiply the current matrix by another matrix
|
||||
func MultMatrix(m Matrix) {
|
||||
f := MatrixToFloat(m)
|
||||
rlMultMatrixf((*float32)(&f[0]))
|
||||
}
|
||||
|
||||
// Frustum .
|
||||
func Frustum(left float64, right float64, bottom float64, top float64, znear float64, zfar float64) {
|
||||
rlFrustum(left, right, bottom, top, znear, zfar)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue