81 lines
3.5 KiB
C++
81 lines
3.5 KiB
C++
|
/*******************************************************************************************
|
||
|
*
|
||
|
* raylib [textures] example - Image loading and drawing on it
|
||
|
*
|
||
|
* NOTE: Images are loaded in CPU memory (RAM); textures are loaded in GPU memory (VRAM)
|
||
|
*
|
||
|
* This example has been created using raylib 1.4 (www.raylib.com)
|
||
|
* raylib is licensed under an unmodified zlib/libpng license (View raylib.h for details)
|
||
|
*
|
||
|
* Copyright (c) 2016 Ramon Santamaria (@raysan5)
|
||
|
*
|
||
|
********************************************************************************************/
|
||
|
|
||
|
#include "raylib-cpp.hpp"
|
||
|
|
||
|
int main(void) {
|
||
|
// Initialization
|
||
|
//--------------------------------------------------------------------------------------
|
||
|
const int screenWidth = 800;
|
||
|
const int screenHeight = 450;
|
||
|
|
||
|
raylib::Window window(screenWidth, screenHeight, "raylib [textures] example - image drawing");
|
||
|
raylib::Color darkGray = DARKGRAY;
|
||
|
|
||
|
// NOTE: Textures MUST be loaded after Window initialization (OpenGL context is required)
|
||
|
raylib::Image cat("resources/cat.png"); // Load image in CPU memory (RAM)
|
||
|
cat.Crop(raylib::Rectangle(100, 10, 280, 380)) // Crop an image piece
|
||
|
.FlipHorizontal() // Flip cropped image horizontally
|
||
|
.Resize(150, 200); // Resize flipped-cropped image
|
||
|
|
||
|
raylib::Image parrots("resources/parrots.png"); // Load image in CPU memory (RAM)
|
||
|
|
||
|
// Draw one image over the other with a scaling of 1.5f
|
||
|
parrots
|
||
|
.Draw(cat,
|
||
|
raylib::Rectangle(0, 0, cat.GetWidth(), cat.GetHeight()),
|
||
|
raylib::Rectangle(30, 40, cat.GetWidth() * 1.5f, cat.GetHeight() * 1.5f));
|
||
|
parrots.Crop(raylib::Rectangle(0, 50, parrots.GetWidth(), parrots.GetHeight() - 100)); // Crop resulting image
|
||
|
|
||
|
// Load custom font for frawing on image
|
||
|
raylib::Font font("resources/custom_jupiter_crash.png");
|
||
|
|
||
|
// Draw over image using custom font
|
||
|
parrots.DrawText(font, "PARROTS & CAT", raylib::Vector2(300, 230), font.baseSize, -2);
|
||
|
|
||
|
raylib::Texture2D texture(parrots); // Image converted to texture, uploaded to GPU memory (VRAM)
|
||
|
|
||
|
SetTargetFPS(60);
|
||
|
//---------------------------------------------------------------------------------------
|
||
|
|
||
|
// Main game loop
|
||
|
while (!window.ShouldClose()) { // Detect window close button or ESC key
|
||
|
// Update
|
||
|
//----------------------------------------------------------------------------------
|
||
|
// Update your variables here
|
||
|
//----------------------------------------------------------------------------------
|
||
|
|
||
|
// Draw
|
||
|
//----------------------------------------------------------------------------------
|
||
|
BeginDrawing();
|
||
|
{
|
||
|
window.ClearBackground(RAYWHITE);
|
||
|
|
||
|
texture.Draw(screenWidth / 2 - texture.width / 2,
|
||
|
screenHeight / 2 - texture.height / 2 - 40);
|
||
|
darkGray.DrawRectangleLines(screenWidth / 2 - texture.width / 2,
|
||
|
screenHeight / 2 - texture.height / 2 - 40,
|
||
|
texture.width, texture.height);
|
||
|
|
||
|
darkGray.DrawText("We are drawing only one texture from various images composed!",
|
||
|
240, 350, 10);
|
||
|
darkGray.DrawText("Source images have been cropped, scaled, flipped and copied one over the other.",
|
||
|
190, 370, 10);
|
||
|
}
|
||
|
EndDrawing();
|
||
|
//----------------------------------------------------------------------------------
|
||
|
}
|
||
|
|
||
|
return 0;
|
||
|
}
|