Move functions
This commit is contained in:
parent
9f257fc589
commit
f953e65a3a
6 changed files with 184 additions and 215 deletions
|
@ -40,20 +40,73 @@ func internalAudioStreamCallbackGo(data unsafe.Pointer, frames C.int) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// newWaveFromPointer - Returns new Wave from pointer
|
||||||
|
func newWaveFromPointer(ptr unsafe.Pointer) Wave {
|
||||||
|
return *(*Wave)(ptr)
|
||||||
|
}
|
||||||
|
|
||||||
// cptr returns C pointer
|
// cptr returns C pointer
|
||||||
func (w *Wave) cptr() *C.Wave {
|
func (w *Wave) cptr() *C.Wave {
|
||||||
return (*C.Wave)(unsafe.Pointer(w))
|
return (*C.Wave)(unsafe.Pointer(w))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// newSoundFromPointer - Returns new Sound from pointer
|
||||||
|
func newSoundFromPointer(ptr unsafe.Pointer) Sound {
|
||||||
|
return *(*Sound)(ptr)
|
||||||
|
}
|
||||||
|
|
||||||
func (s *Sound) cptr() *C.Sound {
|
func (s *Sound) cptr() *C.Sound {
|
||||||
return (*C.Sound)(unsafe.Pointer(s))
|
return (*C.Sound)(unsafe.Pointer(s))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// newAudioStreamFromPointer - Returns new AudioStream from pointer
|
||||||
|
func newAudioStreamFromPointer(ptr unsafe.Pointer) AudioStream {
|
||||||
|
return *(*AudioStream)(ptr)
|
||||||
|
}
|
||||||
|
|
||||||
// cptr returns C pointer
|
// cptr returns C pointer
|
||||||
func (a *AudioStream) cptr() *C.AudioStream {
|
func (a *AudioStream) cptr() *C.AudioStream {
|
||||||
return (*C.AudioStream)(unsafe.Pointer(a))
|
return (*C.AudioStream)(unsafe.Pointer(a))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// newMusicFromPointer - Returns new Music from pointer
|
||||||
|
func newMusicFromPointer(ptr unsafe.Pointer) Music {
|
||||||
|
return *(*Music)(ptr)
|
||||||
|
}
|
||||||
|
|
||||||
|
// Sound source type
|
||||||
|
type Sound struct {
|
||||||
|
Stream AudioStream
|
||||||
|
FrameCount uint32
|
||||||
|
_ [4]byte
|
||||||
|
}
|
||||||
|
|
||||||
|
// Music type (file streaming from memory)
|
||||||
|
// NOTE: Anything longer than ~10 seconds should be streamed
|
||||||
|
type Music struct {
|
||||||
|
Stream AudioStream
|
||||||
|
FrameCount uint32
|
||||||
|
Looping bool
|
||||||
|
CtxType int32
|
||||||
|
CtxData unsafe.Pointer
|
||||||
|
}
|
||||||
|
|
||||||
|
// AudioStream type
|
||||||
|
// NOTE: Useful to create custom audio streams not bound to a specific file
|
||||||
|
type AudioStream struct {
|
||||||
|
// Buffer
|
||||||
|
Buffer *C.rAudioBuffer
|
||||||
|
// Processor
|
||||||
|
Processor *C.rAudioProcessor
|
||||||
|
// Frequency (samples per second)
|
||||||
|
SampleRate uint32
|
||||||
|
// Bit depth (bits per sample): 8, 16, 32 (24 not supported)
|
||||||
|
SampleSize uint32
|
||||||
|
// Number of channels (1-mono, 2-stereo)
|
||||||
|
Channels uint32
|
||||||
|
_ [4]byte
|
||||||
|
}
|
||||||
|
|
||||||
// InitAudioDevice - Initialize audio device and context
|
// InitAudioDevice - Initialize audio device and context
|
||||||
func InitAudioDevice() {
|
func InitAudioDevice() {
|
||||||
C.InitAudioDevice()
|
C.InitAudioDevice()
|
||||||
|
|
216
raylib/raylib.go
216
raylib/raylib.go
|
@ -1,45 +1,14 @@
|
||||||
/*
|
/*
|
||||||
Package raylib - Go bindings for raylib, a simple and easy-to-use library to learn videogames programming.
|
Package raylib - Go bindings for raylib, a simple and easy-to-use library to enjoy videogames programming.
|
||||||
|
|
||||||
raylib is highly inspired by Borland BGI graphics lib and by XNA framework.
|
raylib is highly inspired by Borland BGI graphics lib and by XNA framework.
|
||||||
|
|
||||||
raylib could be useful for prototyping, tools development, graphic applications, embedded systems and education.
|
raylib could be useful for prototyping, tools development, graphic applications, embedded systems and education.
|
||||||
|
|
||||||
NOTE for ADVENTURERS: raylib is a programming library to learn videogames programming; no fancy interface, no visual helpers, no auto-debugging... just coding in the most pure spartan-programmers way.
|
NOTE for ADVENTURERS: raylib is a programming library to learn videogames programming; no fancy interface, no visual helpers, no auto-debugging... just coding in the most pure spartan-programmers way.
|
||||||
|
|
||||||
Example:
|
|
||||||
|
|
||||||
package main
|
|
||||||
|
|
||||||
import "github.com/gen2brain/raylib-go/raylib"
|
|
||||||
|
|
||||||
func main() {
|
|
||||||
rl.InitWindow(800, 450, "raylib [core] example - basic window")
|
|
||||||
|
|
||||||
rl.SetTargetFPS(60)
|
|
||||||
|
|
||||||
for !rl.WindowShouldClose() {
|
|
||||||
rl.BeginDrawing()
|
|
||||||
|
|
||||||
rl.ClearBackground(rl.RayWhite)
|
|
||||||
|
|
||||||
rl.DrawText("Congrats! You created your first window!", 190, 200, 20, rl.LightGray)
|
|
||||||
|
|
||||||
rl.EndDrawing()
|
|
||||||
}
|
|
||||||
|
|
||||||
rl.CloseWindow()
|
|
||||||
}
|
|
||||||
*/
|
*/
|
||||||
package rl
|
package rl
|
||||||
|
|
||||||
/*
|
|
||||||
#include "raylib.h"
|
|
||||||
#include <stdlib.h>
|
|
||||||
*/
|
|
||||||
import "C"
|
|
||||||
import (
|
import (
|
||||||
"image"
|
|
||||||
"image/color"
|
"image/color"
|
||||||
"io"
|
"io"
|
||||||
"runtime"
|
"runtime"
|
||||||
|
@ -71,59 +40,6 @@ func NewWave(sampleCount, sampleRate, sampleSize, channels uint32, data []byte)
|
||||||
return Wave{sampleCount, sampleRate, sampleSize, channels, d}
|
return Wave{sampleCount, sampleRate, sampleSize, channels, d}
|
||||||
}
|
}
|
||||||
|
|
||||||
// newWaveFromPointer - Returns new Wave from pointer
|
|
||||||
func newWaveFromPointer(ptr unsafe.Pointer) Wave {
|
|
||||||
return *(*Wave)(ptr)
|
|
||||||
}
|
|
||||||
|
|
||||||
// Sound source type
|
|
||||||
type Sound struct {
|
|
||||||
Stream AudioStream
|
|
||||||
FrameCount uint32
|
|
||||||
_ [4]byte
|
|
||||||
}
|
|
||||||
|
|
||||||
// newSoundFromPointer - Returns new Sound from pointer
|
|
||||||
func newSoundFromPointer(ptr unsafe.Pointer) Sound {
|
|
||||||
return *(*Sound)(ptr)
|
|
||||||
}
|
|
||||||
|
|
||||||
// Music type (file streaming from memory)
|
|
||||||
// NOTE: Anything longer than ~10 seconds should be streamed
|
|
||||||
type Music struct {
|
|
||||||
Stream AudioStream
|
|
||||||
FrameCount uint32
|
|
||||||
Looping bool
|
|
||||||
CtxType int32
|
|
||||||
CtxData unsafe.Pointer
|
|
||||||
}
|
|
||||||
|
|
||||||
// newMusicFromPointer - Returns new Music from pointer
|
|
||||||
func newMusicFromPointer(ptr unsafe.Pointer) Music {
|
|
||||||
return *(*Music)(ptr)
|
|
||||||
}
|
|
||||||
|
|
||||||
// AudioStream type
|
|
||||||
// NOTE: Useful to create custom audio streams not bound to a specific file
|
|
||||||
type AudioStream struct {
|
|
||||||
// Buffer
|
|
||||||
Buffer *C.rAudioBuffer
|
|
||||||
// Processor
|
|
||||||
Processor *C.rAudioProcessor
|
|
||||||
// Frequency (samples per second)
|
|
||||||
SampleRate uint32
|
|
||||||
// Bit depth (bits per sample): 8, 16, 32 (24 not supported)
|
|
||||||
SampleSize uint32
|
|
||||||
// Number of channels (1-mono, 2-stereo)
|
|
||||||
Channels uint32
|
|
||||||
_ [4]byte
|
|
||||||
}
|
|
||||||
|
|
||||||
// newAudioStreamFromPointer - Returns new AudioStream from pointer
|
|
||||||
func newAudioStreamFromPointer(ptr unsafe.Pointer) AudioStream {
|
|
||||||
return *(*AudioStream)(ptr)
|
|
||||||
}
|
|
||||||
|
|
||||||
// CameraMode type
|
// CameraMode type
|
||||||
type CameraMode int32
|
type CameraMode int32
|
||||||
|
|
||||||
|
@ -483,11 +399,6 @@ func NewVector2(x, y float32) Vector2 {
|
||||||
return Vector2{x, y}
|
return Vector2{x, y}
|
||||||
}
|
}
|
||||||
|
|
||||||
// newVector2FromPointer - Returns new Vector2 from pointer
|
|
||||||
func newVector2FromPointer(ptr unsafe.Pointer) Vector2 {
|
|
||||||
return *(*Vector2)(ptr)
|
|
||||||
}
|
|
||||||
|
|
||||||
// Vector3 type
|
// Vector3 type
|
||||||
type Vector3 struct {
|
type Vector3 struct {
|
||||||
X float32
|
X float32
|
||||||
|
@ -500,11 +411,6 @@ func NewVector3(X, Y, Z float32) Vector3 {
|
||||||
return Vector3{X, Y, Z}
|
return Vector3{X, Y, Z}
|
||||||
}
|
}
|
||||||
|
|
||||||
// newVector3FromPointer - Returns new Vector3 from pointer
|
|
||||||
func newVector3FromPointer(ptr unsafe.Pointer) Vector3 {
|
|
||||||
return *(*Vector3)(ptr)
|
|
||||||
}
|
|
||||||
|
|
||||||
// Vector4 type
|
// Vector4 type
|
||||||
type Vector4 struct {
|
type Vector4 struct {
|
||||||
X float32
|
X float32
|
||||||
|
@ -518,11 +424,6 @@ func NewVector4(X, Y, Z, W float32) Vector4 {
|
||||||
return Vector4{X, Y, Z, W}
|
return Vector4{X, Y, Z, W}
|
||||||
}
|
}
|
||||||
|
|
||||||
// newVector4FromPointer - Returns new Vector4 from pointer
|
|
||||||
func newVector4FromPointer(ptr unsafe.Pointer) Vector4 {
|
|
||||||
return *(*Vector4)(ptr)
|
|
||||||
}
|
|
||||||
|
|
||||||
// Matrix type (OpenGL style 4x4 - right handed, column major)
|
// Matrix type (OpenGL style 4x4 - right handed, column major)
|
||||||
type Matrix struct {
|
type Matrix struct {
|
||||||
M0, M4, M8, M12 float32
|
M0, M4, M8, M12 float32
|
||||||
|
@ -536,11 +437,6 @@ func NewMatrix(m0, m4, m8, m12, m1, m5, m9, m13, m2, m6, m10, m14, m3, m7, m11,
|
||||||
return Matrix{m0, m4, m8, m12, m1, m5, m9, m13, m2, m6, m10, m14, m3, m7, m11, m15}
|
return Matrix{m0, m4, m8, m12, m1, m5, m9, m13, m2, m6, m10, m14, m3, m7, m11, m15}
|
||||||
}
|
}
|
||||||
|
|
||||||
// newMatrixFromPointer - Returns new Matrix from pointer
|
|
||||||
func newMatrixFromPointer(ptr unsafe.Pointer) Matrix {
|
|
||||||
return *(*Matrix)(ptr)
|
|
||||||
}
|
|
||||||
|
|
||||||
// Mat2 type (used for polygon shape rotation matrix)
|
// Mat2 type (used for polygon shape rotation matrix)
|
||||||
type Mat2 struct {
|
type Mat2 struct {
|
||||||
M00 float32
|
M00 float32
|
||||||
|
@ -576,11 +472,6 @@ func NewColor(r, g, b, a uint8) color.RGBA {
|
||||||
return color.RGBA{r, g, b, a}
|
return color.RGBA{r, g, b, a}
|
||||||
}
|
}
|
||||||
|
|
||||||
// newColorFromPointer - Returns new Color from pointer
|
|
||||||
func newColorFromPointer(ptr unsafe.Pointer) color.RGBA {
|
|
||||||
return *(*color.RGBA)(ptr)
|
|
||||||
}
|
|
||||||
|
|
||||||
// Rectangle type
|
// Rectangle type
|
||||||
type Rectangle struct {
|
type Rectangle struct {
|
||||||
X float32
|
X float32
|
||||||
|
@ -594,11 +485,6 @@ func NewRectangle(x, y, width, height float32) Rectangle {
|
||||||
return Rectangle{x, y, width, height}
|
return Rectangle{x, y, width, height}
|
||||||
}
|
}
|
||||||
|
|
||||||
// newRectangleFromPointer - Returns new Rectangle from pointer
|
|
||||||
func newRectangleFromPointer(ptr unsafe.Pointer) Rectangle {
|
|
||||||
return *(*Rectangle)(ptr)
|
|
||||||
}
|
|
||||||
|
|
||||||
// ToInt32 converts rectangle to int32 variant
|
// ToInt32 converts rectangle to int32 variant
|
||||||
func (r *Rectangle) ToInt32() RectangleInt32 {
|
func (r *Rectangle) ToInt32() RectangleInt32 {
|
||||||
rect := RectangleInt32{}
|
rect := RectangleInt32{}
|
||||||
|
@ -651,11 +537,6 @@ func NewCamera3D(pos, target, up Vector3, fovy float32, ct CameraProjection) Cam
|
||||||
return Camera3D{pos, target, up, fovy, ct}
|
return Camera3D{pos, target, up, fovy, ct}
|
||||||
}
|
}
|
||||||
|
|
||||||
// newCamera3DFromPointer - Returns new Camera3D from pointer
|
|
||||||
func newCamera3DFromPointer(ptr unsafe.Pointer) Camera3D {
|
|
||||||
return *(*Camera3D)(ptr)
|
|
||||||
}
|
|
||||||
|
|
||||||
// Camera2D type, defines a 2d camera
|
// Camera2D type, defines a 2d camera
|
||||||
type Camera2D struct {
|
type Camera2D struct {
|
||||||
// Camera offset (displacement from target)
|
// Camera offset (displacement from target)
|
||||||
|
@ -673,11 +554,6 @@ func NewCamera2D(offset, target Vector2, rotation, zoom float32) Camera2D {
|
||||||
return Camera2D{offset, target, rotation, zoom}
|
return Camera2D{offset, target, rotation, zoom}
|
||||||
}
|
}
|
||||||
|
|
||||||
// newCamera2DFromPointer - Returns new Camera2D from pointer
|
|
||||||
func newCamera2DFromPointer(ptr unsafe.Pointer) Camera2D {
|
|
||||||
return *(*Camera2D)(ptr)
|
|
||||||
}
|
|
||||||
|
|
||||||
// BoundingBox type
|
// BoundingBox type
|
||||||
type BoundingBox struct {
|
type BoundingBox struct {
|
||||||
// Minimum vertex box-corner
|
// Minimum vertex box-corner
|
||||||
|
@ -691,11 +567,6 @@ func NewBoundingBox(min, max Vector3) BoundingBox {
|
||||||
return BoundingBox{min, max}
|
return BoundingBox{min, max}
|
||||||
}
|
}
|
||||||
|
|
||||||
// newBoundingBoxFromPointer - Returns new BoundingBox from pointer
|
|
||||||
func newBoundingBoxFromPointer(ptr unsafe.Pointer) BoundingBox {
|
|
||||||
return *(*BoundingBox)(ptr)
|
|
||||||
}
|
|
||||||
|
|
||||||
// Asset file
|
// Asset file
|
||||||
type Asset interface {
|
type Asset interface {
|
||||||
io.ReadSeeker
|
io.ReadSeeker
|
||||||
|
@ -816,11 +687,6 @@ type Mesh struct {
|
||||||
VboID *uint32
|
VboID *uint32
|
||||||
}
|
}
|
||||||
|
|
||||||
// newMeshFromPointer - Returns new Mesh from pointer
|
|
||||||
func newMeshFromPointer(ptr unsafe.Pointer) Mesh {
|
|
||||||
return *(*Mesh)(ptr)
|
|
||||||
}
|
|
||||||
|
|
||||||
// Material type
|
// Material type
|
||||||
type Material struct {
|
type Material struct {
|
||||||
// Shader
|
// Shader
|
||||||
|
@ -831,11 +697,6 @@ type Material struct {
|
||||||
Params [4]float32
|
Params [4]float32
|
||||||
}
|
}
|
||||||
|
|
||||||
// newMaterialFromPointer - Returns new Material from pointer
|
|
||||||
func newMaterialFromPointer(ptr unsafe.Pointer) Material {
|
|
||||||
return *(*Material)(ptr)
|
|
||||||
}
|
|
||||||
|
|
||||||
// GetMap - Get pointer to MaterialMap by map type
|
// GetMap - Get pointer to MaterialMap by map type
|
||||||
func (mt Material) GetMap(index int32) *MaterialMap {
|
func (mt Material) GetMap(index int32) *MaterialMap {
|
||||||
return (*MaterialMap)(unsafe.Pointer(uintptr(unsafe.Pointer(mt.Maps)) + uintptr(index)*uintptr(unsafe.Sizeof(MaterialMap{}))))
|
return (*MaterialMap)(unsafe.Pointer(uintptr(unsafe.Pointer(mt.Maps)) + uintptr(index)*uintptr(unsafe.Sizeof(MaterialMap{}))))
|
||||||
|
@ -901,11 +762,6 @@ func (m Model) GetBindPose() []Transform {
|
||||||
return unsafe.Slice(m.BindPose, m.BoneCount)
|
return unsafe.Slice(m.BindPose, m.BoneCount)
|
||||||
}
|
}
|
||||||
|
|
||||||
// newModelFromPointer - Returns new Model from pointer
|
|
||||||
func newModelFromPointer(ptr unsafe.Pointer) Model {
|
|
||||||
return *(*Model)(ptr)
|
|
||||||
}
|
|
||||||
|
|
||||||
// BoneInfo type
|
// BoneInfo type
|
||||||
type BoneInfo struct {
|
type BoneInfo struct {
|
||||||
Name [32]int8
|
Name [32]int8
|
||||||
|
@ -932,11 +788,6 @@ func NewRay(position, direction Vector3) Ray {
|
||||||
return Ray{position, direction}
|
return Ray{position, direction}
|
||||||
}
|
}
|
||||||
|
|
||||||
// newRayFromPointer - Returns new Ray from pointer
|
|
||||||
func newRayFromPointer(ptr unsafe.Pointer) Ray {
|
|
||||||
return *(*Ray)(ptr)
|
|
||||||
}
|
|
||||||
|
|
||||||
// ModelAnimation type
|
// ModelAnimation type
|
||||||
type ModelAnimation struct {
|
type ModelAnimation struct {
|
||||||
BoneCount int32
|
BoneCount int32
|
||||||
|
@ -946,11 +797,6 @@ type ModelAnimation struct {
|
||||||
Name [32]int8
|
Name [32]int8
|
||||||
}
|
}
|
||||||
|
|
||||||
// newModelAnimationFromPointer - Returns new ModelAnimation from pointer
|
|
||||||
func newModelAnimationFromPointer(ptr unsafe.Pointer) ModelAnimation {
|
|
||||||
return *(*ModelAnimation)(ptr)
|
|
||||||
}
|
|
||||||
|
|
||||||
// RayCollision type - ray hit information
|
// RayCollision type - ray hit information
|
||||||
type RayCollision struct {
|
type RayCollision struct {
|
||||||
Hit bool
|
Hit bool
|
||||||
|
@ -964,11 +810,6 @@ func NewRayCollision(hit bool, distance float32, point, normal Vector3) RayColli
|
||||||
return RayCollision{hit, distance, point, normal}
|
return RayCollision{hit, distance, point, normal}
|
||||||
}
|
}
|
||||||
|
|
||||||
// newRayCollisionFromPointer - Returns new RayCollision from pointer
|
|
||||||
func newRayCollisionFromPointer(ptr unsafe.Pointer) RayCollision {
|
|
||||||
return *(*RayCollision)(ptr)
|
|
||||||
}
|
|
||||||
|
|
||||||
// BlendMode type
|
// BlendMode type
|
||||||
type BlendMode int32
|
type BlendMode int32
|
||||||
|
|
||||||
|
@ -997,11 +838,6 @@ func NewShader(id uint32, locs *int32) Shader {
|
||||||
return Shader{id, locs}
|
return Shader{id, locs}
|
||||||
}
|
}
|
||||||
|
|
||||||
// newShaderFromPointer - Returns new Shader from pointer
|
|
||||||
func newShaderFromPointer(ptr unsafe.Pointer) Shader {
|
|
||||||
return *(*Shader)(ptr)
|
|
||||||
}
|
|
||||||
|
|
||||||
// GetLocation - Get shader value's location
|
// GetLocation - Get shader value's location
|
||||||
func (sh Shader) GetLocation(index int32) int32 {
|
func (sh Shader) GetLocation(index int32) int32 {
|
||||||
return *(*int32)(unsafe.Pointer(uintptr(unsafe.Pointer(sh.Locs)) + uintptr(index*4)))
|
return *(*int32)(unsafe.Pointer(uintptr(unsafe.Pointer(sh.Locs)) + uintptr(index*4)))
|
||||||
|
@ -1031,11 +867,6 @@ func NewGlyphInfo(value int32, offsetX, offsetY, advanceX int32, image Image) Gl
|
||||||
return GlyphInfo{value, offsetX, offsetY, advanceX, image}
|
return GlyphInfo{value, offsetX, offsetY, advanceX, image}
|
||||||
}
|
}
|
||||||
|
|
||||||
// newGlyphInfoFromPointer - Returns new GlyphInfo from pointer
|
|
||||||
func newGlyphInfoFromPointer(ptr unsafe.Pointer) GlyphInfo {
|
|
||||||
return *(*GlyphInfo)(ptr)
|
|
||||||
}
|
|
||||||
|
|
||||||
// Font type, includes texture and charSet array data
|
// Font type, includes texture and charSet array data
|
||||||
type Font struct {
|
type Font struct {
|
||||||
// Base size (default chars height)
|
// Base size (default chars height)
|
||||||
|
@ -1052,11 +883,6 @@ type Font struct {
|
||||||
Chars *GlyphInfo
|
Chars *GlyphInfo
|
||||||
}
|
}
|
||||||
|
|
||||||
// newFontFromPointer - Returns new Font from pointer
|
|
||||||
func newFontFromPointer(ptr unsafe.Pointer) Font {
|
|
||||||
return *(*Font)(ptr)
|
|
||||||
}
|
|
||||||
|
|
||||||
// PixelFormat - Texture format
|
// PixelFormat - Texture format
|
||||||
type PixelFormat int32
|
type PixelFormat int32
|
||||||
|
|
||||||
|
@ -1160,36 +986,6 @@ func NewImage(data []byte, width, height, mipmaps int32, format PixelFormat) *Im
|
||||||
return &Image{d, width, height, mipmaps, format}
|
return &Image{d, width, height, mipmaps, format}
|
||||||
}
|
}
|
||||||
|
|
||||||
// newImageFromPointer - Returns new Image from pointer
|
|
||||||
func newImageFromPointer(ptr unsafe.Pointer) *Image {
|
|
||||||
return (*Image)(ptr)
|
|
||||||
}
|
|
||||||
|
|
||||||
// NewImageFromImage - Returns new Image from Go image.Image
|
|
||||||
func NewImageFromImage(img image.Image) *Image {
|
|
||||||
size := img.Bounds().Size()
|
|
||||||
|
|
||||||
cx := (C.int)(size.X)
|
|
||||||
cy := (C.int)(size.Y)
|
|
||||||
ccolor := colorCptr(White)
|
|
||||||
ret := C.GenImageColor(cx, cy, *ccolor)
|
|
||||||
|
|
||||||
for y := 0; y < size.Y; y++ {
|
|
||||||
for x := 0; x < size.X; x++ {
|
|
||||||
color := img.At(x, y)
|
|
||||||
r, g, b, a := color.RGBA()
|
|
||||||
rcolor := NewColor(uint8(r), uint8(g), uint8(b), uint8(a))
|
|
||||||
ccolor = colorCptr(rcolor)
|
|
||||||
|
|
||||||
cx = (C.int)(x)
|
|
||||||
cy = (C.int)(y)
|
|
||||||
C.ImageDrawPixel(&ret, cx, cy, *ccolor)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
v := newImageFromPointer(unsafe.Pointer(&ret))
|
|
||||||
return v
|
|
||||||
}
|
|
||||||
|
|
||||||
// Texture2D type, bpp always RGBA (32bit)
|
// Texture2D type, bpp always RGBA (32bit)
|
||||||
// NOTE: Data stored in GPU memory
|
// NOTE: Data stored in GPU memory
|
||||||
type Texture2D struct {
|
type Texture2D struct {
|
||||||
|
@ -1210,11 +1006,6 @@ func NewTexture2D(id uint32, width, height, mipmaps int32, format PixelFormat) T
|
||||||
return Texture2D{id, width, height, mipmaps, format}
|
return Texture2D{id, width, height, mipmaps, format}
|
||||||
}
|
}
|
||||||
|
|
||||||
// newTexture2DFromPointer - Returns new Texture2D from pointer
|
|
||||||
func newTexture2DFromPointer(ptr unsafe.Pointer) Texture2D {
|
|
||||||
return *(*Texture2D)(ptr)
|
|
||||||
}
|
|
||||||
|
|
||||||
// RenderTexture2D type, for texture rendering
|
// RenderTexture2D type, for texture rendering
|
||||||
type RenderTexture2D struct {
|
type RenderTexture2D struct {
|
||||||
// Render texture (fbo) id
|
// Render texture (fbo) id
|
||||||
|
@ -1230,11 +1021,6 @@ func NewRenderTexture2D(id uint32, texture, depth Texture2D) RenderTexture2D {
|
||||||
return RenderTexture2D{id, texture, depth}
|
return RenderTexture2D{id, texture, depth}
|
||||||
}
|
}
|
||||||
|
|
||||||
// newRenderTexture2DFromPointer - Returns new RenderTexture2D from pointer
|
|
||||||
func newRenderTexture2DFromPointer(ptr unsafe.Pointer) RenderTexture2D {
|
|
||||||
return *(*RenderTexture2D)(ptr)
|
|
||||||
}
|
|
||||||
|
|
||||||
// TraceLogLevel parameter of trace log message
|
// TraceLogLevel parameter of trace log message
|
||||||
type TraceLogLevel int
|
type TraceLogLevel int
|
||||||
|
|
||||||
|
|
|
@ -11,51 +11,101 @@ import (
|
||||||
"unsafe"
|
"unsafe"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
// newVector2FromPointer - Returns new Vector2 from pointer
|
||||||
|
func newVector2FromPointer(ptr unsafe.Pointer) Vector2 {
|
||||||
|
return *(*Vector2)(ptr)
|
||||||
|
}
|
||||||
|
|
||||||
// cptr returns C pointer
|
// cptr returns C pointer
|
||||||
func (v *Vector2) cptr() *C.Vector2 {
|
func (v *Vector2) cptr() *C.Vector2 {
|
||||||
return (*C.Vector2)(unsafe.Pointer(v))
|
return (*C.Vector2)(unsafe.Pointer(v))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// newVector3FromPointer - Returns new Vector3 from pointer
|
||||||
|
func newVector3FromPointer(ptr unsafe.Pointer) Vector3 {
|
||||||
|
return *(*Vector3)(ptr)
|
||||||
|
}
|
||||||
|
|
||||||
// cptr returns C pointer
|
// cptr returns C pointer
|
||||||
func (v *Vector3) cptr() *C.Vector3 {
|
func (v *Vector3) cptr() *C.Vector3 {
|
||||||
return (*C.Vector3)(unsafe.Pointer(v))
|
return (*C.Vector3)(unsafe.Pointer(v))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// newVector4FromPointer - Returns new Vector4 from pointer
|
||||||
|
func newVector4FromPointer(ptr unsafe.Pointer) Vector4 {
|
||||||
|
return *(*Vector4)(ptr)
|
||||||
|
}
|
||||||
|
|
||||||
// cptr returns C pointer
|
// cptr returns C pointer
|
||||||
func (v *Vector4) cptr() *C.Vector4 {
|
func (v *Vector4) cptr() *C.Vector4 {
|
||||||
return (*C.Vector4)(unsafe.Pointer(v))
|
return (*C.Vector4)(unsafe.Pointer(v))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// newMatrixFromPointer - Returns new Matrix from pointer
|
||||||
|
func newMatrixFromPointer(ptr unsafe.Pointer) Matrix {
|
||||||
|
return *(*Matrix)(ptr)
|
||||||
|
}
|
||||||
|
|
||||||
// cptr returns C pointer
|
// cptr returns C pointer
|
||||||
func (m *Matrix) cptr() *C.Matrix {
|
func (m *Matrix) cptr() *C.Matrix {
|
||||||
return (*C.Matrix)(unsafe.Pointer(m))
|
return (*C.Matrix)(unsafe.Pointer(m))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// newColorFromPointer - Returns new Color from pointer
|
||||||
|
func newColorFromPointer(ptr unsafe.Pointer) color.RGBA {
|
||||||
|
return *(*color.RGBA)(ptr)
|
||||||
|
}
|
||||||
|
|
||||||
// colorCptr returns color C pointer
|
// colorCptr returns color C pointer
|
||||||
func colorCptr(col color.RGBA) *C.Color {
|
func colorCptr(col color.RGBA) *C.Color {
|
||||||
return (*C.Color)(unsafe.Pointer(&col))
|
return (*C.Color)(unsafe.Pointer(&col))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// newRectangleFromPointer - Returns new Rectangle from pointer
|
||||||
|
func newRectangleFromPointer(ptr unsafe.Pointer) Rectangle {
|
||||||
|
return *(*Rectangle)(ptr)
|
||||||
|
}
|
||||||
|
|
||||||
// cptr returns C pointer
|
// cptr returns C pointer
|
||||||
func (r *Rectangle) cptr() *C.Rectangle {
|
func (r *Rectangle) cptr() *C.Rectangle {
|
||||||
return (*C.Rectangle)(unsafe.Pointer(r))
|
return (*C.Rectangle)(unsafe.Pointer(r))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// newCamera3DFromPointer - Returns new Camera3D from pointer
|
||||||
|
func newCamera3DFromPointer(ptr unsafe.Pointer) Camera3D {
|
||||||
|
return *(*Camera3D)(ptr)
|
||||||
|
}
|
||||||
|
|
||||||
// cptr returns C pointer
|
// cptr returns C pointer
|
||||||
func (c *Camera) cptr() *C.Camera {
|
func (c *Camera) cptr() *C.Camera {
|
||||||
return (*C.Camera)(unsafe.Pointer(c))
|
return (*C.Camera)(unsafe.Pointer(c))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// newCamera2DFromPointer - Returns new Camera2D from pointer
|
||||||
|
func newCamera2DFromPointer(ptr unsafe.Pointer) Camera2D {
|
||||||
|
return *(*Camera2D)(ptr)
|
||||||
|
}
|
||||||
|
|
||||||
// cptr returns C pointer
|
// cptr returns C pointer
|
||||||
func (c *Camera2D) cptr() *C.Camera2D {
|
func (c *Camera2D) cptr() *C.Camera2D {
|
||||||
return (*C.Camera2D)(unsafe.Pointer(c))
|
return (*C.Camera2D)(unsafe.Pointer(c))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// newBoundingBoxFromPointer - Returns new BoundingBox from pointer
|
||||||
|
func newBoundingBoxFromPointer(ptr unsafe.Pointer) BoundingBox {
|
||||||
|
return *(*BoundingBox)(ptr)
|
||||||
|
}
|
||||||
|
|
||||||
// cptr returns C pointer
|
// cptr returns C pointer
|
||||||
func (b *BoundingBox) cptr() *C.BoundingBox {
|
func (b *BoundingBox) cptr() *C.BoundingBox {
|
||||||
return (*C.BoundingBox)(unsafe.Pointer(b))
|
return (*C.BoundingBox)(unsafe.Pointer(b))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// newShaderFromPointer - Returns new Shader from pointer
|
||||||
|
func newShaderFromPointer(ptr unsafe.Pointer) Shader {
|
||||||
|
return *(*Shader)(ptr)
|
||||||
|
}
|
||||||
|
|
||||||
// cptr returns C pointer
|
// cptr returns C pointer
|
||||||
func (s *Shader) cptr() *C.Shader {
|
func (s *Shader) cptr() *C.Shader {
|
||||||
return (*C.Shader)(unsafe.Pointer(s))
|
return (*C.Shader)(unsafe.Pointer(s))
|
||||||
|
|
|
@ -14,31 +14,61 @@ import (
|
||||||
"unsafe"
|
"unsafe"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
// newMeshFromPointer - Returns new Mesh from pointer
|
||||||
|
func newMeshFromPointer(ptr unsafe.Pointer) Mesh {
|
||||||
|
return *(*Mesh)(ptr)
|
||||||
|
}
|
||||||
|
|
||||||
// cptr returns C pointer
|
// cptr returns C pointer
|
||||||
func (m *Mesh) cptr() *C.Mesh {
|
func (m *Mesh) cptr() *C.Mesh {
|
||||||
return (*C.Mesh)(unsafe.Pointer(m))
|
return (*C.Mesh)(unsafe.Pointer(m))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// newMaterialFromPointer - Returns new Material from pointer
|
||||||
|
func newMaterialFromPointer(ptr unsafe.Pointer) Material {
|
||||||
|
return *(*Material)(ptr)
|
||||||
|
}
|
||||||
|
|
||||||
// cptr returns C pointer
|
// cptr returns C pointer
|
||||||
func (m *Material) cptr() *C.Material {
|
func (m *Material) cptr() *C.Material {
|
||||||
return (*C.Material)(unsafe.Pointer(m))
|
return (*C.Material)(unsafe.Pointer(m))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// newModelFromPointer - Returns new Model from pointer
|
||||||
|
func newModelFromPointer(ptr unsafe.Pointer) Model {
|
||||||
|
return *(*Model)(ptr)
|
||||||
|
}
|
||||||
|
|
||||||
// cptr returns C pointer
|
// cptr returns C pointer
|
||||||
func (m *Model) cptr() *C.Model {
|
func (m *Model) cptr() *C.Model {
|
||||||
return (*C.Model)(unsafe.Pointer(m))
|
return (*C.Model)(unsafe.Pointer(m))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// newRayFromPointer - Returns new Ray from pointer
|
||||||
|
func newRayFromPointer(ptr unsafe.Pointer) Ray {
|
||||||
|
return *(*Ray)(ptr)
|
||||||
|
}
|
||||||
|
|
||||||
// cptr returns C pointer
|
// cptr returns C pointer
|
||||||
func (r *Ray) cptr() *C.Ray {
|
func (r *Ray) cptr() *C.Ray {
|
||||||
return (*C.Ray)(unsafe.Pointer(r))
|
return (*C.Ray)(unsafe.Pointer(r))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// newModelAnimationFromPointer - Returns new ModelAnimation from pointer
|
||||||
|
func newModelAnimationFromPointer(ptr unsafe.Pointer) ModelAnimation {
|
||||||
|
return *(*ModelAnimation)(ptr)
|
||||||
|
}
|
||||||
|
|
||||||
// cptr returns C pointer
|
// cptr returns C pointer
|
||||||
func (r *ModelAnimation) cptr() *C.ModelAnimation {
|
func (r *ModelAnimation) cptr() *C.ModelAnimation {
|
||||||
return (*C.ModelAnimation)(unsafe.Pointer(r))
|
return (*C.ModelAnimation)(unsafe.Pointer(r))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// newRayCollisionFromPointer - Returns new RayCollision from pointer
|
||||||
|
func newRayCollisionFromPointer(ptr unsafe.Pointer) RayCollision {
|
||||||
|
return *(*RayCollision)(ptr)
|
||||||
|
}
|
||||||
|
|
||||||
// DrawLine3D - Draw a line in 3D world space
|
// DrawLine3D - Draw a line in 3D world space
|
||||||
func DrawLine3D(startPos Vector3, endPos Vector3, col color.RGBA) {
|
func DrawLine3D(startPos Vector3, endPos Vector3, col color.RGBA) {
|
||||||
cstartPos := startPos.cptr()
|
cstartPos := startPos.cptr()
|
||||||
|
|
|
@ -10,11 +10,21 @@ import (
|
||||||
"unsafe"
|
"unsafe"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
// newGlyphInfoFromPointer - Returns new GlyphInfo from pointer
|
||||||
|
func newGlyphInfoFromPointer(ptr unsafe.Pointer) GlyphInfo {
|
||||||
|
return *(*GlyphInfo)(ptr)
|
||||||
|
}
|
||||||
|
|
||||||
// cptr returns C pointer
|
// cptr returns C pointer
|
||||||
func (c *GlyphInfo) cptr() *C.GlyphInfo {
|
func (c *GlyphInfo) cptr() *C.GlyphInfo {
|
||||||
return (*C.GlyphInfo)(unsafe.Pointer(c))
|
return (*C.GlyphInfo)(unsafe.Pointer(c))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// newFontFromPointer - Returns new Font from pointer
|
||||||
|
func newFontFromPointer(ptr unsafe.Pointer) Font {
|
||||||
|
return *(*Font)(ptr)
|
||||||
|
}
|
||||||
|
|
||||||
// cptr returns C pointer
|
// cptr returns C pointer
|
||||||
func (s *Font) cptr() *C.Font {
|
func (s *Font) cptr() *C.Font {
|
||||||
return (*C.Font)(unsafe.Pointer(s))
|
return (*C.Font)(unsafe.Pointer(s))
|
||||||
|
|
|
@ -12,6 +12,11 @@ import (
|
||||||
"unsafe"
|
"unsafe"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
// newImageFromPointer - Returns new Image from pointer
|
||||||
|
func newImageFromPointer(ptr unsafe.Pointer) *Image {
|
||||||
|
return (*Image)(ptr)
|
||||||
|
}
|
||||||
|
|
||||||
// cptr returns C pointer
|
// cptr returns C pointer
|
||||||
func (i *Image) cptr() *C.Image {
|
func (i *Image) cptr() *C.Image {
|
||||||
return (*C.Image)(unsafe.Pointer(i))
|
return (*C.Image)(unsafe.Pointer(i))
|
||||||
|
@ -31,16 +36,51 @@ func (i *Image) ToImage() image.Image {
|
||||||
return img
|
return img
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// newTexture2DFromPointer - Returns new Texture2D from pointer
|
||||||
|
func newTexture2DFromPointer(ptr unsafe.Pointer) Texture2D {
|
||||||
|
return *(*Texture2D)(ptr)
|
||||||
|
}
|
||||||
|
|
||||||
// cptr returns C pointer
|
// cptr returns C pointer
|
||||||
func (t *Texture2D) cptr() *C.Texture2D {
|
func (t *Texture2D) cptr() *C.Texture2D {
|
||||||
return (*C.Texture2D)(unsafe.Pointer(t))
|
return (*C.Texture2D)(unsafe.Pointer(t))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// newRenderTexture2DFromPointer - Returns new RenderTexture2D from pointer
|
||||||
|
func newRenderTexture2DFromPointer(ptr unsafe.Pointer) RenderTexture2D {
|
||||||
|
return *(*RenderTexture2D)(ptr)
|
||||||
|
}
|
||||||
|
|
||||||
// cptr returns C pointer
|
// cptr returns C pointer
|
||||||
func (r *RenderTexture2D) cptr() *C.RenderTexture2D {
|
func (r *RenderTexture2D) cptr() *C.RenderTexture2D {
|
||||||
return (*C.RenderTexture2D)(unsafe.Pointer(r))
|
return (*C.RenderTexture2D)(unsafe.Pointer(r))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// NewImageFromImage - Returns new Image from Go image.Image
|
||||||
|
func NewImageFromImage(img image.Image) *Image {
|
||||||
|
size := img.Bounds().Size()
|
||||||
|
|
||||||
|
cx := (C.int)(size.X)
|
||||||
|
cy := (C.int)(size.Y)
|
||||||
|
ccolor := colorCptr(White)
|
||||||
|
ret := C.GenImageColor(cx, cy, *ccolor)
|
||||||
|
|
||||||
|
for y := 0; y < size.Y; y++ {
|
||||||
|
for x := 0; x < size.X; x++ {
|
||||||
|
color := img.At(x, y)
|
||||||
|
r, g, b, a := color.RGBA()
|
||||||
|
rcolor := NewColor(uint8(r), uint8(g), uint8(b), uint8(a))
|
||||||
|
ccolor = colorCptr(rcolor)
|
||||||
|
|
||||||
|
cx = (C.int)(x)
|
||||||
|
cy = (C.int)(y)
|
||||||
|
C.ImageDrawPixel(&ret, cx, cy, *ccolor)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
v := newImageFromPointer(unsafe.Pointer(&ret))
|
||||||
|
return v
|
||||||
|
}
|
||||||
|
|
||||||
// LoadImage - Load an image into CPU memory (RAM)
|
// LoadImage - Load an image into CPU memory (RAM)
|
||||||
func LoadImage(fileName string) *Image {
|
func LoadImage(fileName string) *Image {
|
||||||
cfileName := C.CString(fileName)
|
cfileName := C.CString(fileName)
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue