From ee30ffe333811dc3c71a552a4bf63a78491f7148 Mon Sep 17 00:00:00 2001 From: Milan Nikolic Date: Thu, 26 Oct 2017 21:37:32 +0200 Subject: [PATCH] Add image_generation example --- examples/textures/image_generation/main.go | 94 ++++++++++++++++++++++ 1 file changed, 94 insertions(+) create mode 100644 examples/textures/image_generation/main.go diff --git a/examples/textures/image_generation/main.go b/examples/textures/image_generation/main.go new file mode 100644 index 0000000..55b499c --- /dev/null +++ b/examples/textures/image_generation/main.go @@ -0,0 +1,94 @@ +package main + +import ( + "github.com/gen2brain/raylib-go/raylib" +) + +const numTextures = 7 + +func main() { + screenWidth := 800 + screenHeight := 450 + + raylib.InitWindow(int32(screenWidth), int32(screenHeight), "raylib [textures] example - procedural images generation") + + verticalGradient := raylib.GenImageGradientV(screenWidth, screenHeight, raylib.Red, raylib.Blue) + horizontalGradient := raylib.GenImageGradientH(screenWidth, screenHeight, raylib.Red, raylib.Blue) + radialGradient := raylib.GenImageGradientRadial(screenWidth, screenHeight, 0, raylib.White, raylib.Black) + checked := raylib.GenImageChecked(screenWidth, screenHeight, 32, 32, raylib.Red, raylib.Blue) + whiteNoise := raylib.GenImageWhiteNoise(screenWidth, screenHeight, 0.5) + perlinNoise := raylib.GenImagePerlinNoise(screenWidth, screenHeight, 8) + cellular := raylib.GenImageCellular(screenWidth, screenHeight, 32) + + textures := make([]raylib.Texture2D, numTextures) + textures[0] = raylib.LoadTextureFromImage(verticalGradient) + textures[1] = raylib.LoadTextureFromImage(horizontalGradient) + textures[2] = raylib.LoadTextureFromImage(radialGradient) + textures[3] = raylib.LoadTextureFromImage(checked) + textures[4] = raylib.LoadTextureFromImage(whiteNoise) + textures[5] = raylib.LoadTextureFromImage(perlinNoise) + textures[6] = raylib.LoadTextureFromImage(cellular) + + // Unload image data (CPU RAM) + raylib.UnloadImage(verticalGradient) + raylib.UnloadImage(horizontalGradient) + raylib.UnloadImage(radialGradient) + raylib.UnloadImage(checked) + raylib.UnloadImage(whiteNoise) + raylib.UnloadImage(perlinNoise) + raylib.UnloadImage(cellular) + + currentTexture := 0 + + raylib.SetTargetFPS(60) + + for !raylib.WindowShouldClose() { + if raylib.IsMouseButtonPressed(raylib.MouseLeftButton) { + currentTexture = (currentTexture + 1) % numTextures // Cycle between the textures + } + + raylib.BeginDrawing() + + raylib.ClearBackground(raylib.RayWhite) + + raylib.DrawTexture(textures[currentTexture], 0, 0, raylib.White) + + raylib.DrawRectangle(30, 400, 325, 30, raylib.Fade(raylib.SkyBlue, 0.5)) + raylib.DrawRectangleLines(30, 400, 325, 30, raylib.Fade(raylib.White, 0.5)) + raylib.DrawText("MOUSE LEFT BUTTON to CYCLE PROCEDURAL TEXTURES", 40, 410, 10, raylib.White) + + switch currentTexture { + case 0: + raylib.DrawText("VERTICAL GRADIENT", 560, 10, 20, raylib.RayWhite) + break + case 1: + raylib.DrawText("HORIZONTAL GRADIENT", 540, 10, 20, raylib.RayWhite) + break + case 2: + raylib.DrawText("RADIAL GRADIENT", 580, 10, 20, raylib.LightGray) + break + case 3: + raylib.DrawText("CHECKED", 680, 10, 20, raylib.RayWhite) + break + case 4: + raylib.DrawText("WHITE NOISE", 640, 10, 20, raylib.Red) + break + case 5: + raylib.DrawText("PERLIN NOISE", 630, 10, 20, raylib.RayWhite) + break + case 6: + raylib.DrawText("CELLULAR", 670, 10, 20, raylib.RayWhite) + break + default: + break + } + + raylib.EndDrawing() + } + + for _, t := range textures { + raylib.UnloadTexture(t) + } + + raylib.CloseWindow() +}