@ -0,0 +1,74 @@ | |||
/******************************************************************************************* | |||
* | |||
* raylib [core] example - Windows drop files | |||
* | |||
* This example has been created using raylib 1.3 (www.raylib.com) | |||
* raylib is licensed under an unmodified zlib/libpng license (View raylib.h for details) | |||
* | |||
* Copyright (c) 2014 Ramon Santamaria (Ray San - raysan@raysanweb.com) | |||
* | |||
********************************************************************************************/ | |||
#include "raylib.h" | |||
int main() | |||
{ | |||
// Initialization | |||
//-------------------------------------------------------------------------------------- | |||
int screenWidth = 800; | |||
int screenHeight = 450; | |||
InitWindow(screenWidth, screenHeight, "raylib [core] example - drop files"); | |||
int count = 0; | |||
char **droppedFiles; | |||
SetTargetFPS(60); | |||
//-------------------------------------------------------------------------------------- | |||
// Main game loop | |||
while (!WindowShouldClose()) // Detect window close button or ESC key | |||
{ | |||
// Update | |||
//---------------------------------------------------------------------------------- | |||
if (IsFileDropped()) | |||
{ | |||
droppedFiles = GetDroppedFiles(&count); | |||
} | |||
//---------------------------------------------------------------------------------- | |||
// Draw | |||
//---------------------------------------------------------------------------------- | |||
BeginDrawing(); | |||
ClearBackground(RAYWHITE); | |||
if (count == 0) DrawText("Drop your files to this window!", 100, 40, 20, DARKGRAY); | |||
else | |||
{ | |||
DrawText("Dropped files:", 100, 40, 20, DARKGRAY); | |||
for (int i = 0; i < count; i++) | |||
{ | |||
if (i%2 == 0) DrawRectangle(0, 85 + 40*i, screenWidth, 40, Fade(LIGHTGRAY, 0.5f)); | |||
else DrawRectangle(0, 85 + 40*i, screenWidth, 40, Fade(LIGHTGRAY, 0.3f)); | |||
DrawText(droppedFiles[i], 120, 100 + 40*i, 10, GRAY); | |||
} | |||
DrawText("Drop new files...", 100, 110 + 40*count, 20, DARKGRAY); | |||
} | |||
EndDrawing(); | |||
//---------------------------------------------------------------------------------- | |||
} | |||
// De-Initialization | |||
//-------------------------------------------------------------------------------------- | |||
ClearDroppedFiles(); // Clear internal buffers | |||
CloseWindow(); // Close window and OpenGL context | |||
//-------------------------------------------------------------------------------------- | |||
return 0; | |||
} |
@ -0,0 +1,132 @@ | |||
/******************************************************************************************* | |||
* | |||
* raylib example - particles trail blending | |||
* | |||
* This example has been created using raylib 1.3 (www.raylib.com) | |||
* raylib is licensed under an unmodified zlib/libpng license (View raylib.h for details) | |||
* | |||
* Copyright (c) 2015 Ramon Santamaria (@raysan5) | |||
* | |||
********************************************************************************************/ | |||
#include "raylib.h" | |||
#define MAX_PARTICLES 200 | |||
typedef struct { | |||
Vector2 position; | |||
Color color; | |||
float alpha; | |||
float size; | |||
float rotation; | |||
bool active; // NOTE: Use it to activate/deactive particle | |||
} Particle; | |||
int main() | |||
{ | |||
// Initialization | |||
//-------------------------------------------------------------------------------------- | |||
int screenWidth = 800; | |||
int screenHeight = 450; | |||
InitWindow(screenWidth, screenHeight, "raylib [textures] example - particles trail blending"); | |||
// Particles pool, reuse them! | |||
Particle mouseTail[MAX_PARTICLES]; | |||
// Initialize particles | |||
for (int i = 0; i < MAX_PARTICLES; i++) | |||
{ | |||
mouseTail[i].position = (Vector2){ 0, 0 }; | |||
mouseTail[i].color = (Color){ GetRandomValue(0, 255), GetRandomValue(0, 255), GetRandomValue(0, 255), 255 }; | |||
mouseTail[i].alpha = 1.0f; | |||
mouseTail[i].size = (float)GetRandomValue(1, 30)/20; | |||
mouseTail[i].rotation = GetRandomValue(0, 360); | |||
mouseTail[i].active = false; | |||
} | |||
float gravity = 3; | |||
Texture2D smoke = LoadTexture("resources/smoke.png"); | |||
int blending = BLEND_ALPHA; | |||
SetTargetFPS(60); | |||
//-------------------------------------------------------------------------------------- | |||
// Main game loop | |||
while (!WindowShouldClose()) // Detect window close button or ESC key | |||
{ | |||
// Update | |||
//---------------------------------------------------------------------------------- | |||
// Activate one particle every frame and Update active particles | |||
// NOTE: Particles initial position should be mouse position when activated | |||
// NOTE: Particles fall down with gravity and rotation... and disappear after 2 seconds (alpha = 0) | |||
// NOTE: When a particle disappears, active = false and it can be reused. | |||
for (int i = 0; i < MAX_PARTICLES; i++) | |||
{ | |||
if (!mouseTail[i].active) | |||
{ | |||
mouseTail[i].active = true; | |||
mouseTail[i].alpha = 1.0f; | |||
mouseTail[i].position = GetMousePosition(); | |||
i = MAX_PARTICLES; | |||
} | |||
} | |||
for (int i = 0; i < MAX_PARTICLES; i++) | |||
{ | |||
if (mouseTail[i].active) | |||
{ | |||
mouseTail[i].position.y += gravity; | |||
mouseTail[i].alpha -= 0.01f; | |||
if (mouseTail[i].alpha <= 0.0f) mouseTail[i].active = false; | |||
mouseTail[i].rotation += 5; | |||
} | |||
} | |||
if (IsKeyPressed(KEY_SPACE)) | |||
{ | |||
if (blending == BLEND_ALPHA) blending = BLEND_ADDITIVE; | |||
else blending = BLEND_ALPHA; | |||
} | |||
//---------------------------------------------------------------------------------- | |||
// Draw | |||
//---------------------------------------------------------------------------------- | |||
BeginDrawing(); | |||
ClearBackground(DARKGRAY); | |||
SetBlendMode(blending); | |||
// Draw active particles | |||
for (int i = 0; i < MAX_PARTICLES; i++) | |||
{ | |||
if (mouseTail[i].active) DrawTexturePro(smoke, (Rectangle){ 0, 0, smoke.width, smoke.height }, | |||
(Rectangle){ mouseTail[i].position.x, mouseTail[i].position.y, smoke.width*mouseTail[i].size, smoke.height*mouseTail[i].size }, | |||
(Vector2){ smoke.width*mouseTail[i].size/2, smoke.height*mouseTail[i].size/2 }, mouseTail[i].rotation, | |||
Fade(mouseTail[i].color, mouseTail[i].alpha)); | |||
} | |||
DrawText("PRESS SPACE to CHANGE BLENDING MODE", 180, 20, 20, RAYWHITE); | |||
if (blending == BLEND_ALPHA) DrawText("ALPHA BLENDING", 290, screenHeight - 40, 20, RAYWHITE); | |||
else DrawText("ADDITIVE BLENDING", 280, screenHeight - 40, 20, RAYWHITE); | |||
EndDrawing(); | |||
//---------------------------------------------------------------------------------- | |||
} | |||
// De-Initialization | |||
//-------------------------------------------------------------------------------------- | |||
UnloadTexture(smoke); | |||
CloseWindow(); // Close window and OpenGL context | |||
//-------------------------------------------------------------------------------------- | |||
return 0; | |||
} |
@ -0,0 +1,68 @@ | |||
/******************************************************************************************* | |||
* | |||
* raylib [textures] example - Retrieve image data from texture: GetTextureData() | |||
* | |||
* NOTE: Images are loaded in CPU memory (RAM); textures are loaded in GPU memory (VRAM) | |||
* | |||
* This example has been created using raylib 1.1 (www.raylib.com) | |||
* raylib is licensed under an unmodified zlib/libpng license (View raylib.h for details) | |||
* | |||
* Copyright (c) 2014 Ramon Santamaria (Ray San - raysan@raysanweb.com) | |||
* | |||
********************************************************************************************/ | |||
#include "raylib.h" | |||
int main() | |||
{ | |||
// Initialization | |||
//-------------------------------------------------------------------------------------- | |||
int screenWidth = 800; | |||
int screenHeight = 450; | |||
InitWindow(screenWidth, screenHeight, "raylib [textures] example - texture to image"); | |||
// NOTE: Textures MUST be loaded after Window initialization (OpenGL context is required) | |||
Image image = LoadImage("resources/raylib_logo.png"); // Load image data into CPU memory (RAM) | |||
Texture2D texture = LoadTextureFromImage(image); // Image converted to texture, GPU memory (RAM -> VRAM) | |||
UnloadImage(image); // Unload image data from CPU memory (RAM) | |||
image = GetTextureData(texture); // Retrieve image data from GPU memory (VRAM -> RAM) | |||
UnloadTexture(texture); // Unload texture from GPU memory (VRAM) | |||
texture = LoadTextureFromImage(image); // Recreate texture from retrieved image data (RAM -> VRAM) | |||
UnloadImage(image); // Unload retrieved image data from CPU memory (RAM) | |||
//--------------------------------------------------------------------------------------- | |||
// Main game loop | |||
while (!WindowShouldClose()) // Detect window close button or ESC key | |||
{ | |||
// Update | |||
//---------------------------------------------------------------------------------- | |||
// TODO: Update your variables here | |||
//---------------------------------------------------------------------------------- | |||
// Draw | |||
//---------------------------------------------------------------------------------- | |||
BeginDrawing(); | |||
ClearBackground(RAYWHITE); | |||
DrawTexture(texture, screenWidth/2 - texture.width/2, screenHeight/2 - texture.height/2, WHITE); | |||
DrawText("this IS a texture loaded from an image!", 300, 370, 10, GRAY); | |||
EndDrawing(); | |||
//---------------------------------------------------------------------------------- | |||
} | |||
// De-Initialization | |||
//-------------------------------------------------------------------------------------- | |||
UnloadTexture(texture); // Texture unloading | |||
CloseWindow(); // Close window and OpenGL context | |||
//-------------------------------------------------------------------------------------- | |||
return 0; | |||
} |