-
-
Notifications
You must be signed in to change notification settings - Fork 2.4k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
[rtextures] Created
ImageFromChannel()
(#4105)
* created ImageFromChannel Adds the possibility to extract a specific channel from an image * naming convention * example window height * removed threshold * removed alpha channel * channel example organization * updated channel example image
- Loading branch information
Showing
4 changed files
with
309 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,106 @@ | ||
/******************************************************************************************* | ||
* | ||
* raylib [textures] example - Retrive image channel (mask) | ||
* | ||
* NOTE: Images are loaded in CPU memory (RAM); textures are loaded in GPU memory (VRAM) | ||
* | ||
* Example originally created with raylib 5.1-dev, last time updated with raylib 5.1-dev | ||
* | ||
* Example contributed by Bruno Cabral (github.com/brccabral) 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) 2024-2024 Bruno Cabral (github.com/brccabral) and Ramon Santamaria (@raysan5) | ||
* | ||
********************************************************************************************/ | ||
|
||
#include <raylib.h> | ||
|
||
//------------------------------------------------------------------------------------ | ||
// Program main entry point | ||
//------------------------------------------------------------------------------------ | ||
int main(void) | ||
{ | ||
// Initialization | ||
//-------------------------------------------------------------------------------------- | ||
|
||
const int screenWidth = 800; | ||
const int screenHeight = 450; | ||
|
||
InitWindow(screenWidth, screenHeight, "raylib [textures] example - extract channel from image"); | ||
|
||
Image fudesumiImage = LoadImage("resources/fudesumi.png"); | ||
|
||
Image imageAlpha = ImageFromChannel(fudesumiImage, 3); | ||
ImageAlphaMask(&imageAlpha, imageAlpha); | ||
|
||
Image imageRed = ImageFromChannel(fudesumiImage, 0); | ||
ImageAlphaMask(&imageRed, imageAlpha); | ||
|
||
Image imageGreen = ImageFromChannel(fudesumiImage, 1); | ||
ImageAlphaMask(&imageGreen, imageAlpha); | ||
|
||
Image imageBlue = ImageFromChannel(fudesumiImage, 2); | ||
ImageAlphaMask(&imageBlue, imageAlpha); | ||
|
||
Image backgroundImage = GenImageChecked(screenWidth, screenHeight, screenWidth/20, screenHeight/20, ORANGE, YELLOW); | ||
|
||
Texture2D fudesumiTexture = LoadTextureFromImage(fudesumiImage); | ||
Texture2D textureAlpha = LoadTextureFromImage(imageAlpha); | ||
Texture2D textureRed = LoadTextureFromImage(imageRed); | ||
Texture2D textureGreen = LoadTextureFromImage(imageGreen); | ||
Texture2D textureBlue = LoadTextureFromImage(imageBlue); | ||
Texture2D backgroundTexture = LoadTextureFromImage(backgroundImage); | ||
|
||
UnloadImage(fudesumiImage); | ||
UnloadImage(imageAlpha); | ||
UnloadImage(imageRed); | ||
UnloadImage(imageGreen); | ||
UnloadImage(imageBlue); | ||
UnloadImage(backgroundImage); | ||
|
||
SetTargetFPS(60); // Set our game to run at 60 frames-per-second | ||
|
||
Rectangle fudesumiRec = {0, 0, fudesumiImage.width, fudesumiImage.height}; | ||
|
||
Rectangle fudesumiPos = {50, 10, fudesumiImage.width*0.8f, fudesumiImage.height*0.8f}; | ||
Rectangle redPos = { 410, 10, fudesumiPos.width / 2, fudesumiPos.height / 2 }; | ||
Rectangle greenPos = { 600, 10, fudesumiPos.width / 2, fudesumiPos.height / 2 }; | ||
Rectangle bluePos = { 410, 230, fudesumiPos.width / 2, fudesumiPos.height / 2 }; | ||
Rectangle alphaPos = { 600, 230, fudesumiPos.width / 2, fudesumiPos.height / 2 }; | ||
|
||
//-------------------------------------------------------------------------------------- | ||
|
||
// Main game loop | ||
while (!WindowShouldClose()) // Detect window close button or ESC key | ||
{ | ||
// Draw | ||
//---------------------------------------------------------------------------------- | ||
BeginDrawing(); | ||
|
||
DrawTexture(backgroundTexture, 0, 0, WHITE); | ||
DrawTexturePro(fudesumiTexture, fudesumiRec, fudesumiPos, (Vector2) {0, 0}, 0, WHITE); | ||
|
||
DrawTexturePro(textureRed, fudesumiRec, redPos, (Vector2) {0, 0}, 0, RED); | ||
DrawTexturePro(textureGreen, fudesumiRec, greenPos, (Vector2) {0, 0}, 0, GREEN); | ||
DrawTexturePro(textureBlue, fudesumiRec, bluePos, (Vector2) {0, 0}, 0, BLUE); | ||
DrawTexturePro(textureAlpha, fudesumiRec, alphaPos, (Vector2) {0, 0}, 0, WHITE); | ||
|
||
EndDrawing(); | ||
//---------------------------------------------------------------------------------- | ||
} | ||
|
||
// De-Initialization | ||
//-------------------------------------------------------------------------------------- | ||
UnloadTexture(backgroundTexture); | ||
UnloadTexture(fudesumiTexture); | ||
UnloadTexture(textureRed); | ||
UnloadTexture(textureGreen); | ||
UnloadTexture(textureBlue); | ||
UnloadTexture(textureAlpha); | ||
CloseWindow(); // Close window and OpenGL context | ||
//-------------------------------------------------------------------------------------- | ||
|
||
return 0; | ||
} |
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters