package instanced import rl "vendor:raylib" import r3d "../r3d" INSTANCE_COUNT :: 1000 main :: proc() { // Initialize window rl.InitWindow(800, 450, "[r3d] - Instanced rendering example") defer rl.CloseWindow() rl.SetTargetFPS(60) // Initialize R3D r3d.Init(rl.GetScreenWidth(), rl.GetScreenHeight()) defer r3d.Close() // Set ambient light env := r3d.GetEnvironment() env.ambient.color = rl.DARKGRAY // Create cube mesh and default material mesh := r3d.GenMeshCube(1, 1, 1) defer r3d.UnloadMesh(mesh) material := r3d.GetDefaultMaterial() defer r3d.UnloadMaterial(material) // Generate random transforms and colors for instances instances := r3d.LoadInstanceBuffer(INSTANCE_COUNT, {.POSITION, .ROTATION, .SCALE, .COLOR}) defer r3d.UnloadInstanceBuffer(instances) positions := cast([^]rl.Vector3)r3d.MapInstances(instances, {.POSITION}) rotations := cast([^]rl.Quaternion)r3d.MapInstances(instances, {.ROTATION}) scales := cast([^]rl.Vector3)r3d.MapInstances(instances, {.SCALE}) colors := cast([^]rl.Color)r3d.MapInstances(instances, {.COLOR}) for i in 0..