go-raylib is a simple and easy-to-use library to enjoy videogames programming.
Header | Supported |
---|---|
raylib.h | ✔️ |
raymath.h | ✔️ |
physac.h | ✔️ |
raygui.h | ✔️ |
ricons.h | ✔️ |
easings.h | ✔️ |
rres.h | ✔️ |
OS | Supported |
---|---|
Mac | ✔️ |
Linux | ✔️ |
Windows | ✔️ |
go-raylib binding raylib C 3.5 release version
High performance, same with the raylib C version.
For example
multext := rl.NewMultiText([]string{"Hello World!"})
The method will check if memory is requested through cgo.
If it detects, panic Cgo memory alloced, please use func AllocMultiText.
Rewrite.
multext, men := rl.AllocMultiText([]string{"Hello World!"})
multext.GC(mem)
Don't forget, call GC() for register, it can be automated management.
There are some differences between the processing in Go and C.
In C
char multiTextBoxText[256] = "Multi text box";
In Go
multiTextBoxText := rl.NewBytes("Multi text box", 256)
In C
const char *listViewExList[8] = { "This", "is", "a", "list view", "with", "disable", "elements", "amazing!" };
In Go
listViewExList, mem := rl.AllocMultiText([]string{"This", "is", "a", "list view", "with", "disable", "elements", "amazing!"})
listViewExList.GC(mem)
In C
int dropsCount = 0;
char **droppedFiles = GetDroppedFiles(&dropsCount);
const char *droppedFilePath = droppedFiles[0];
In Go
dropsCount := int32(0)
droppedFiles := rl.GetDroppedFiles(&dropsCount)
droppedFilePath := rl.ToString(droppedFiles, 0)
In C
Texture2D texture = LoadTexture("resources/cubicmap_atlas.png");
model.materials[0].maps[MAP_DIFFUSE].texture = texture;
In Go
texture := rl.LoadTexture("../models/resources/cubicmap_atlas.png")
model.Materialser(0).Mapser(rl.MAP_DIFFUSE).Texture = texture
go get -u github.com/chunqian/go-raylib
package main
import (
rl "github.com/chunqian/go-raylib/raylib"
"runtime"
)
func init() {
runtime.LockOSThread()
}
func main() {
screenWidth := int32(800)
screenHeight := int32(450)
rl.InitWindow(screenWidth, screenHeight, "raylib [core] example - basic window")
defer rl.CloseWindow()
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()
}
}
Macos Linux
export GO111MODULE="on"
export CGO_ENABLED=1
go mod init github.com/chunqian/go-raylib-example
go build
Windows
set GO111MODULE=on
set CGO_ENABLED=1
set GOARCH=386
go mod init github.com/chunqian/go-raylib-example
go build
MacOS
On MacOS you need Xcode or Command Line Tools for Xcode.
Windows
On Windows you need C compiler, like Mingw-w64 or TDM-GCC. You can also build binary in MSYS2 shell.
Ubuntu
sudo apt-get install libasound2-dev mesa-common-dev libx11-dev libxrandr-dev libxi-dev xorg-dev libgl1-mesa-dev libglu1-mesa-dev
Complete with +60 code examples!
Category | Example | Supported |
---|---|---|
audio | module_playing | ✔️ |
audio | multichannel_sound | ✔️ |
audio | music_stream | ✔️ |
audio | raw_stream | ✔️ |
audio | sound_loading | ✔️ |
core | 2d_camera | ✔️ |
core | 2d_camera_platformer | ✔️ |
core | 3d_camera_first_person | ✔️ |
core | 3d_camera_free | ✔️ |
core | 3d_camera_mode | ✔️ |
core | 3d_picking | ✔️ |
core | basic_window | ✔️ |
core | drop_files | ✔️ |
core | input_gestures | ✔️ |
core | input_keys | ✔️ |
core | input_mouse | ✔️ |
core | input_mouse_wheel | ✔️ |
core | input_multitouch | ✔️ |
core | random_values | ✔️ |
core | scissor | ✔️ |
core | storage_values | ✔️ |
core | vr_simulator | ✔️ |
core | window_letterbox | ✔️ |
core | world_screen | ✔️ |
gui | controls_test_suite | ✔️ |
gui | scroll_panel | ✔️ |
models | animation | ✔️ |
models | billboard | ✔️ |
models | box_collisions | ✔️ |
models | cubicmap | ✔️ |
models | first_person_maze | ✔️ |
models | loading | ✔️ |
models | material_pbr | ✔️ |
models | mesh_generation | ✔️ |
models | mesh_picking | ✔️ |
models | orthographic_projection | ✔️ |
models | skybox | ✔️ |
models | waving_cubes | ✔️ |
models | yaw_pitch_roll | ✔️ |
physac | demo | ✔️ |
physac | friction | ✔️ |
shaders | postprocessing | ✔️ |
shaders | basic_lighting | ✔️ |
shaders | eratosthenes | ✔️ |
shaders | fog | ✔️ |
shaders | julia_set | ✔️ |
shaders | model_shader | ✔️ |
shaders | palette_switch | ✔️ |
text | font_filters | ✔️ |
text | font_loading | ✔️ |
text | font_sdf | ✔️ |
text | font_spritefont | ✔️ |
text | format_text | ✔️ |
text | input_box | ✔️ |
text | raylib_fonts | ✔️ |
text | rectangle_bounds | ✔️ |
text | unicode | ✔️ |
text | writing_anim | ✔️ |
textures | bunnymark | ✔️ |
textures | rectangle | ✔️ |
go-raylib is licensed under an unmodified zlib/libpng license, which is an OSI-certified, BSD-like license that allows static linking with closed source software. Check LICENSE for further details.