diff options
| author | Ray <[email protected]> | 2019-05-18 01:27:54 +0200 |
|---|---|---|
| committer | Ray <[email protected]> | 2019-05-18 01:27:54 +0200 |
| commit | 210d5ec72bbc4ba426b21f69e6f65b6d75923d05 (patch) | |
| tree | c01f6e14d673504534602c7ae9609b3dff248806 /examples/web/shaders/shaders_texture_waves.c | |
| parent | 85b11a6baf64a2b4e02c81d4d47b15eb578dc074 (diff) | |
| download | raylib.com-210d5ec72bbc4ba426b21f69e6f65b6d75923d05.tar.gz raylib.com-210d5ec72bbc4ba426b21f69e6f65b6d75923d05.zip | |
Update examples to raylib 2.5 -WIP-
Remove old examples
Diffstat (limited to 'examples/web/shaders/shaders_texture_waves.c')
| -rw-r--r-- | examples/web/shaders/shaders_texture_waves.c | 151 |
1 files changed, 151 insertions, 0 deletions
diff --git a/examples/web/shaders/shaders_texture_waves.c b/examples/web/shaders/shaders_texture_waves.c new file mode 100644 index 0000000..af8130a --- /dev/null +++ b/examples/web/shaders/shaders_texture_waves.c @@ -0,0 +1,151 @@ +/******************************************************************************************* +* +* 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) +* +* Example contributed by Anata (@anatagawa) and reviewed by Ramon Santamaria (@raysan5) +* +* Copyright (c) 2019 Anata (@anatagawa) and Ramon Santamaria (@raysan5) +* +********************************************************************************************/ + +#include "raylib.h" + +#if defined(PLATFORM_WEB) + #include <emscripten/emscripten.h> +#endif + +#if defined(PLATFORM_DESKTOP) + #define GLSL_VERSION 330 +#else // PLATFORM_RPI, PLATFORM_ANDROID, PLATFORM_WEB + #define GLSL_VERSION 100 +#endif + +//---------------------------------------------------------------------------------- +// Global Variables Definition +//---------------------------------------------------------------------------------- +int screenWidth = 800; +int screenHeight = 450; + +// NOTE: Textures MUST be loaded after Window initialization (OpenGL context is required) + +Texture2D texture = { 0 }; +Shader shader = { 0 }; + +int secondsLoc = 0; +int freqXLoc = 0; +int freqYLoc = 0; +int ampXLoc = 0; +int ampYLoc = 0; +int speedXLoc = 0; +int speedYLoc = 0; + +// 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; + +float seconds = 0.0f; + +//---------------------------------------------------------------------------------- +// Module Functions Declaration +//---------------------------------------------------------------------------------- +void UpdateDrawFrame(void); // Update and Draw one frame + +//---------------------------------------------------------------------------------- +// Main Enry Point +//---------------------------------------------------------------------------------- +int main() +{ + // Initialization + //-------------------------------------------------------------------------------------- + InitWindow(screenWidth, screenHeight, "raylib [shaders] example - texture waves"); + + // Load space texture to apply shaders + texture = LoadTexture("resources/space.png"); + + // Load shader and setup location points and values + shader = LoadShader(0, FormatText("resources/shaders/glsl%i/wave.fs", GLSL_VERSION)); + + secondsLoc = GetShaderLocation(shader, "secondes"); + freqXLoc = GetShaderLocation(shader, "freqX"); + freqYLoc = GetShaderLocation(shader, "freqY"); + ampXLoc = GetShaderLocation(shader, "ampX"); + ampYLoc = GetShaderLocation(shader, "ampY"); + speedXLoc = GetShaderLocation(shader, "speedX"); + speedYLoc = GetShaderLocation(shader, "speedY"); + + float screenSize[2] = { (float)GetScreenWidth(), (float)GetScreenHeight() }; + SetShaderValue(shader, GetShaderLocation(shader, "size"), &screenSize, UNIFORM_VEC2); + SetShaderValue(shader, freqXLoc, &freqX, UNIFORM_FLOAT); + SetShaderValue(shader, freqYLoc, &freqY, UNIFORM_FLOAT); + SetShaderValue(shader, ampXLoc, &X, UNIFORM_FLOAT); + SetShaderValue(shader, ampYLoc, &Y, UNIFORM_FLOAT); + SetShaderValue(shader, speedXLoc, &speedX, UNIFORM_FLOAT); + SetShaderValue(shader, speedYLoc, &speedY, UNIFORM_FLOAT); + +#if defined(PLATFORM_WEB) + emscripten_set_main_loop(UpdateDrawFrame, 0, 1); +#else + SetTargetFPS(60); // Set our game to run at 60 frames-per-second + //-------------------------------------------------------------------------------------- + + // Main game loop + while (!WindowShouldClose()) // Detect window close button or ESC key + { + UpdateDrawFrame(); + } +#endif + + // De-Initialization + //-------------------------------------------------------------------------------------- + UnloadShader(shader); // Unload shader + UnloadTexture(texture); // Unload texture + + CloseWindow(); // Close window and OpenGL context + //-------------------------------------------------------------------------------------- + + return 0; +} + +//---------------------------------------------------------------------------------- +// Module Functions Definition +//---------------------------------------------------------------------------------- +void UpdateDrawFrame(void) +{ + // Update + //---------------------------------------------------------------------------------- + seconds += GetFrameTime(); + + SetShaderValue(shader, secondsLoc, &seconds, UNIFORM_FLOAT); + //---------------------------------------------------------------------------------- + + // Draw + //---------------------------------------------------------------------------------- + BeginDrawing(); + + ClearBackground(RAYWHITE); + + BeginShaderMode(shader); + + DrawTexture(texture, 0, 0, WHITE); + DrawTexture(texture, texture.width, 0, WHITE); + + EndShaderMode(); + + EndDrawing(); + //---------------------------------------------------------------------------------- +} + |
