|
|
- /*******************************************************************************************
- *
- * raylib [others] example - Embedded files loading (Wave and Image)
- *
- * Example originally created with raylib 3.0, last time updated with raylib 2.5
- *
- * Example contributed by Kristian Holmgren (@defutura) and reviewed by Ramon Santamaria (@raysan5)
- *
- * Example licensed under an unmodified zlib/libpng license, which is an OSI-certified,
- * BSD-like license that allows static linking with closed source software
- *
- * Copyright (c) 2020-2024 Kristian Holmgren (@defutura) and Ramon Santamaria (@raysan5)
- *
- ********************************************************************************************/
-
- #include "raylib.h"
-
- #include "resources/audio_data.h" // Wave file exported with ExportWaveAsCode()
- #include "resources/image_data.h" // Image file exported with ExportImageAsCode()
-
- //------------------------------------------------------------------------------------
- // Program main entry point
- //------------------------------------------------------------------------------------
- int main(void)
- {
- // Initialization
- //--------------------------------------------------------------------------------------
- const int screenWidth = 800;
- const int screenHeight = 450;
-
- InitWindow(screenWidth, screenHeight, "raylib [others] example - embedded files loading");
-
- InitAudioDevice(); // Initialize audio device
-
- // Loaded in CPU memory (RAM) from header file (audio_data.h)
- // Same as: Wave wave = LoadWave("sound.wav");
- Wave wave = {
- .data = AUDIO_DATA,
- .frameCount = AUDIO_FRAME_COUNT,
- .sampleRate = AUDIO_SAMPLE_RATE,
- .sampleSize = AUDIO_SAMPLE_SIZE,
- .channels = AUDIO_CHANNELS
- };
-
- // Wave converted to Sound to be played
- Sound sound = LoadSoundFromWave(wave);
-
- // With a Wave loaded from file, after Sound is loaded, we can unload Wave
- // but in our case, Wave is embedded in executable, in program .data segment
- // we can not (and should not) try to free that private memory region
- //UnloadWave(wave); // Do not unload wave data!
-
- // Loaded in CPU memory (RAM) from header file (image_data.h)
- // Same as: Image image = LoadImage("raylib_logo.png");
- Image image = {
- .data = IMAGE_DATA,
- .width = IMAGE_WIDTH,
- .height = IMAGE_HEIGHT,
- .format = IMAGE_FORMAT,
- .mipmaps = 1
- };
-
- // Image converted to Texture (VRAM) to be drawn
- Texture2D texture = LoadTextureFromImage(image);
-
- // With an Image loaded from file, after Texture is loaded, we can unload Image
- // but in our case, Image is embedded in executable, in program .data segment
- // we can not (and should not) try to free that private memory region
- //UnloadImage(image); // Do not unload image data!
-
- SetTargetFPS(60); // Set our game to run at 60 frames-per-second
- //--------------------------------------------------------------------------------------
-
- // Main game loop
- while (!WindowShouldClose()) // Detect window close button or ESC key
- {
- // Update
- //----------------------------------------------------------------------------------
- if (IsKeyPressed(KEY_SPACE)) PlaySound(sound); // Play sound
- //----------------------------------------------------------------------------------
-
- // Draw
- //----------------------------------------------------------------------------------
- BeginDrawing();
-
- ClearBackground(RAYWHITE);
-
- DrawTexture(texture, screenWidth/2 - texture.width/2, 40, WHITE);
-
- DrawText("raylib logo and sound loaded from header files", 150, 320, 20, LIGHTGRAY);
- DrawText("Press SPACE to PLAY the sound!", 220, 370, 20, LIGHTGRAY);
-
- EndDrawing();
- //----------------------------------------------------------------------------------
- }
-
- // De-Initialization
- //--------------------------------------------------------------------------------------
- UnloadSound(sound); // Unload sound from VRAM
- UnloadTexture(texture); // Unload texture from VRAM
-
- CloseAudioDevice(); // Close audio device
-
- CloseWindow(); // Close window and OpenGL context
- //--------------------------------------------------------------------------------------
-
- return 0;
- }
|