From 0dda56d08d3e8b58950d9e8c30fab74fcc1eb93b Mon Sep 17 00:00:00 2001 From: unkl nik Date: Fri, 20 Oct 2023 22:01:45 +0200 Subject: [PATCH] add more textures examples --- .../cyberpunk_street_background.png | Bin 0 -> 7735 bytes .../cyberpunk_street_foreground.png | Bin 0 -> 18035 bytes .../cyberpunk_street_midground.png | Bin 0 -> 7802 bytes .../textures/background_scrolling/main.go | 67 +++++++++++++++ .../cyberpunk_street_background.png | Bin 0 -> 7735 bytes .../cyberpunk_street_foreground.png | Bin 0 -> 18035 bytes examples/textures/blend_modes/main.go | 81 ++++++++++++++++++ examples/textures/sprite_explosion/main.go | 2 +- 8 files changed, 149 insertions(+), 1 deletion(-) create mode 100644 examples/textures/background_scrolling/cyberpunk_street_background.png create mode 100644 examples/textures/background_scrolling/cyberpunk_street_foreground.png create mode 100644 examples/textures/background_scrolling/cyberpunk_street_midground.png create mode 100644 examples/textures/background_scrolling/main.go create mode 100644 examples/textures/blend_modes/cyberpunk_street_background.png create mode 100644 examples/textures/blend_modes/cyberpunk_street_foreground.png create mode 100644 examples/textures/blend_modes/main.go diff --git a/examples/textures/background_scrolling/cyberpunk_street_background.png b/examples/textures/background_scrolling/cyberpunk_street_background.png new file mode 100644 index 0000000000000000000000000000000000000000..838d08aa1af53d5f20d8e83b317f45dcf447367a GIT binary patch literal 7735 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 literal 0 HcmV?d00001 diff --git a/examples/textures/background_scrolling/cyberpunk_street_foreground.png b/examples/textures/background_scrolling/cyberpunk_street_foreground.png new file mode 100644 index 0000000000000000000000000000000000000000..528b4ae67ea5b13bd89ae8b73a728a8762dbcfc6 GIT binary patch literal 18035 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 KX_%yO!2bh8P0nBd literal 0 HcmV?d00001 diff --git a/examples/textures/background_scrolling/cyberpunk_street_midground.png b/examples/textures/background_scrolling/cyberpunk_street_midground.png new file mode 100644 index 0000000000000000000000000000000000000000..73f24fe75a1e44d3af89544b076cc6d02be66cda GIT binary patch literal 7802 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 P(X!!{tCx#(9K-()od|{Y literal 0 HcmV?d00001 diff --git a/examples/textures/background_scrolling/main.go b/examples/textures/background_scrolling/main.go new file mode 100644 index 0000000..f57efa6 --- /dev/null +++ b/examples/textures/background_scrolling/main.go @@ -0,0 +1,67 @@ +package main + +import ( + rl "github.com/gen2brain/raylib-go/raylib" +) + +var ( + screenW = int32(1280) + screenH = int32(500) +) + +func main() { + + rl.InitWindow(screenW, screenH, "raylib [textures] example - background scrolling") + + background := rl.LoadTexture("cyberpunk_street_background.png") + midground := rl.LoadTexture("cyberpunk_street_midground.png") + foreground := rl.LoadTexture("cyberpunk_street_foreground.png") + + scrollBack := float32(0) + scrollMid := float32(0) + scrollFore := float32(0) + + rl.SetTargetFPS(60) + + for !rl.WindowShouldClose() { + + scrollBack -= 0.1 + scrollMid -= 0.5 + scrollFore -= 1 + + if scrollBack <= -float32(background.Width)*2 { + scrollBack = 0 + } + + if scrollMid <= -float32(midground.Width)*2 { + scrollMid = 0 + } + + if scrollFore <= -float32(foreground.Width)*2 { + scrollFore = 0 + } + + rl.BeginDrawing() + rl.ClearBackground(rl.RayWhite) + + rl.DrawTextureEx(background, rl.NewVector2(scrollBack, 20), 0, 2, rl.White) + rl.DrawTextureEx(background, rl.NewVector2(float32(background.Width*2)+scrollBack, 20), 0, 2, rl.White) + + rl.DrawTextureEx(midground, rl.NewVector2(scrollMid, 20), 0, 2, rl.White) + rl.DrawTextureEx(midground, rl.NewVector2(float32(midground.Width*2)+scrollMid, 20), 0, 2, rl.White) + + rl.DrawTextureEx(foreground, rl.NewVector2(scrollFore, 20), 0, 2, rl.White) + rl.DrawTextureEx(foreground, rl.NewVector2(float32(foreground.Width*2)+scrollFore, 20), 0, 2, rl.White) + + txt := "BACKGROUND SCROLLING & PARALLAX" + txtlen := rl.MeasureText(txt, 20) + rl.DrawText(txt, (screenW/2)-txtlen/2, screenH-50, 20, rl.Black) + txt = "(c) Cyberpunk Street Environment by Luis Zuno (@ansimuz)" + txtlen = rl.MeasureText(txt, 10) + rl.DrawText(txt, (screenW/2)-txtlen/2, screenH-25, 10, rl.Black) + + rl.EndDrawing() + } + + rl.CloseWindow() +} diff --git a/examples/textures/blend_modes/cyberpunk_street_background.png b/examples/textures/blend_modes/cyberpunk_street_background.png new file mode 100644 index 0000000000000000000000000000000000000000..838d08aa1af53d5f20d8e83b317f45dcf447367a GIT binary patch literal 7735 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 literal 0 HcmV?d00001 diff --git a/examples/textures/blend_modes/cyberpunk_street_foreground.png b/examples/textures/blend_modes/cyberpunk_street_foreground.png new file mode 100644 index 0000000000000000000000000000000000000000..528b4ae67ea5b13bd89ae8b73a728a8762dbcfc6 GIT binary patch literal 18035 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 KX_%yO!2bh8P0nBd literal 0 HcmV?d00001 diff --git a/examples/textures/blend_modes/main.go b/examples/textures/blend_modes/main.go new file mode 100644 index 0000000..4171bad --- /dev/null +++ b/examples/textures/blend_modes/main.go @@ -0,0 +1,81 @@ +package main + +import ( + rl "github.com/gen2brain/raylib-go/raylib" +) + +var ( + screenW = int32(1280) + screenH = int32(720) + blendCountMax = 4 + blendMode = 0 +) + +func main() { + + rl.InitWindow(screenW, screenH, "raylib [textures] example - blend modes") + + bgImg := rl.LoadImage("cyberpunk_street_background.png") + bgTex := rl.LoadTextureFromImage(bgImg) + + fgImg := rl.LoadImage("cyberpunk_street_foreground.png") + fgTex := rl.LoadTextureFromImage(fgImg) + + rl.UnloadImage(bgImg) + rl.UnloadImage(fgImg) + + rl.SetTargetFPS(60) + + for !rl.WindowShouldClose() { + + if rl.IsKeyPressed(rl.KeySpace) { + if blendMode >= blendCountMax-1 { + blendMode = 0 + } else { + blendMode++ + } + + } + + rl.BeginDrawing() + rl.ClearBackground(rl.RayWhite) + + rl.DrawTexture(bgTex, screenW/2-bgTex.Width/2, screenH/2-bgTex.Height/2, rl.White) + rl.BeginBlendMode(rl.BlendMode(blendMode)) + rl.DrawTexture(fgTex, screenW/2-fgTex.Width/2, screenH/2-fgTex.Height/2, rl.White) + rl.EndBlendMode() + + txt := "Press SPACE to change blend modes" + txtlen := rl.MeasureText(txt, 20) + rl.DrawText(txt, (screenW/2)-txtlen/2, screenH-70, 20, rl.Black) + switch rl.BlendMode(blendMode) { + case rl.BlendAlpha: + txt = "Current rl.BlendAlpha" + txtlen = rl.MeasureText(txt, 20) + rl.DrawText(txt, (screenW/2)-txtlen/2, screenH-50, 20, rl.Black) + case rl.BlendAdditive: + txt = "Current rl.BlendAdditive" + txtlen = rl.MeasureText(txt, 20) + rl.DrawText(txt, (screenW/2)-txtlen/2, screenH-50, 20, rl.Black) + case rl.BlendMultiplied: + txt = "Current rl.BlendMultiplied" + txtlen = rl.MeasureText(txt, 20) + rl.DrawText(txt, (screenW/2)-txtlen/2, screenH-50, 20, rl.Black) + case rl.BlendAddColors: + txt = "Current rl.BlendAddColors" + txtlen = rl.MeasureText(txt, 20) + rl.DrawText(txt, (screenW/2)-txtlen/2, screenH-50, 20, rl.Black) + } + + txt = "(c) Cyberpunk Street Environment by Luis Zuno (@ansimuz)" + txtlen = rl.MeasureText(txt, 10) + rl.DrawText(txt, (screenW/2)-txtlen/2, screenH-25, 10, rl.Black) + + rl.EndDrawing() + } + + rl.UnloadTexture(fgTex) + rl.UnloadTexture(bgTex) + + rl.CloseWindow() +} diff --git a/examples/textures/sprite_explosion/main.go b/examples/textures/sprite_explosion/main.go index 1e71291..ecc1584 100644 --- a/examples/textures/sprite_explosion/main.go +++ b/examples/textures/sprite_explosion/main.go @@ -12,7 +12,7 @@ func main() { screenWidth := int32(1280) screenHeight := int32(720) - rl.InitWindow(screenWidth, screenHeight, "raylib [shapes] example - sprite explosion") + rl.InitWindow(screenWidth, screenHeight, "raylib [textures] example - sprite explosion") rl.InitAudioDevice() fxBoom := rl.LoadSound("boom.wav")