diff options
| author | Ray <[email protected]> | 2019-05-14 00:07:34 +0200 |
|---|---|---|
| committer | Ray <[email protected]> | 2019-05-14 00:07:34 +0200 |
| commit | 6804c2189e07a661ef975146c288619589c90731 (patch) | |
| tree | 2171f98c7f996a921e8cff3242d9ada2aa2b6136 /examples/shaders/shaders_texture_waves.c | |
| parent | a2ed65aa1461addee7093d92ca80615d607e926b (diff) | |
| download | raylib-6804c2189e07a661ef975146c288619589c90731.tar.gz raylib-6804c2189e07a661ef975146c288619589c90731.zip | |
new examples: shaders_texture_waves
Diffstat (limited to 'examples/shaders/shaders_texture_waves.c')
| -rw-r--r-- | examples/shaders/shaders_texture_waves.c | 113 |
1 files changed, 113 insertions, 0 deletions
diff --git a/examples/shaders/shaders_texture_waves.c b/examples/shaders/shaders_texture_waves.c new file mode 100644 index 00000000..03c62deb --- /dev/null +++ b/examples/shaders/shaders_texture_waves.c @@ -0,0 +1,113 @@ +/******************************************************************************************* +* +* raylib [shaders] example - Texture Waves +* +* NOTE: This example requires raylib OpenGL 3.3 or ES2 versions for shaders support, +* OpenGL 1.1 does not support shaders, recompile raylib to OpenGL 3.3 version. +* +* NOTE: Shaders used in this example are #version 330 (OpenGL 3.3), to test this example +* on OpenGL ES 2.0 platforms (Android, Raspberry Pi, HTML5), use #version 100 shaders +* raylib comes with shaders ready for both versions, check raylib/shaders install folder +* +* This example has been created using raylib 2.5 (www.raylib.com) +* raylib is licensed under an unmodified zlib/libpng license (View raylib.h for details) +* +* Copyright (c) 2019 Anata (creator) and Ramon Santamaria (review) (@raysan5) +* +********************************************************************************************/ + +#include "raylib.h" + +#if defined(PLATFORM_DESKTOP) + #define GLSL_VERSION 330 +#else // PLATFORM_RPI, PLATFORM_ANDROID, PLATFORM_WEB + #define GLSL_VERSION 100 +#endif + +// ------------------------------------------------------------------------------------------------------------- +// Main Entry point +// ------------------------------------------------------------------------------------------------------------- +int main() +{ + // Initialization + //-------------------------------------------------------------------------------------- + const int screenWidth = 800; + const int screenHeight = 450; + + InitWindow(screenWidth, screenHeight, "raylib [shaders] example - texture waves"); + + // Load space texture to apply shaders + Texture2D space = LoadTexture("resources/space.png"); + + // Load shader and setup location points and values + Shader wave = LoadShader(0, FormatText("resources/shaders/glsl%i/wave.fs", GLSL_VERSION)); + + float screenSizeLoc = GetShaderLocation(wave, "size"); + float secondsLoc = GetShaderLocation(wave, "secondes"); + float freqXLoc = GetShaderLocation(wave, "freqX"); + float freqYLoc = GetShaderLocation(wave, "freqY"); + float ampXLoc = GetShaderLocation(wave, "ampX"); + float ampYLoc = GetShaderLocation(wave, "ampY"); + float speedXLoc = GetShaderLocation(wave, "speedX"); + float speedYLoc = GetShaderLocation(wave, "speedY"); + + float screenSize[2] = { 800, 450 }; + + // Shader uniform values that can be updated at any time + float freqX = 25.0f; + float freqY = 25.0f; + float ampX = 5.0f; + float ampY = 5.0f; + float speedX = 8.0f; + float speedY = 8.0f; + + SetShaderValue(wave, screenSizeLoc, &screenSize, UNIFORM_VEC2); + SetShaderValue(wave, freqXLoc, &freqX, UNIFORM_FLOAT); + SetShaderValue(wave, freqYLoc, &freqY, UNIFORM_FLOAT); + SetShaderValue(wave, ampXLoc, &X, UNIFORM_FLOAT); + SetShaderValue(wave, ampYLoc, &Y, UNIFORM_FLOAT); + SetShaderValue(wave, speedXLoc, &speedX, UNIFORM_FLOAT); + SetShaderValue(wave, speedYLoc, &speedY, UNIFORM_FLOAT); + + float seconds = 0.0f; + + SetTargetFPS(60); + // ------------------------------------------------------------------------------------------------------------- + + // Main game loop + while (!WindowShouldClose()) // Detect window close button or ESC key + { + // Update + //---------------------------------------------------------------------------------- + seconds += GetFrameTime(); + + SetShaderValue(wave, secondsLoc, &seconds, UNIFORM_FLOAT); + //---------------------------------------------------------------------------------- + + // Draw + //---------------------------------------------------------------------------------- + BeginDrawing(); + + ClearBackground(RAYWHITE); + + BeginShaderMode(wave); + + DrawTexture(space, 0, 0, WHITE); + DrawTexture(space, space.width, 0, WHITE); + + EndShaderMode(); + + EndDrawing(); + //---------------------------------------------------------------------------------- + } + + // De-Initialization + //-------------------------------------------------------------------------------------- + UnloadShader(wave); // Unload shader + UnloadTexture(space); // Unload texture + + CloseWindow(); // Close window and OpenGL context + //-------------------------------------------------------------------------------------- + + return 0; +} |
