mirror of
				https://github.com/raylib-cs/raylib-cs
				synced 2025-10-31 06:04:58 -04:00 
			
		
		
		
	
		
			
				
	
	
		
			118 lines
		
	
	
		
			4.4 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
			
		
		
	
	
			118 lines
		
	
	
		
			4.4 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
| /*******************************************************************************************
 | |
| *
 | |
| *   raylib [textures] example - blend modes
 | |
| *
 | |
| *   NOTE: Images are loaded in CPU memory (RAM); textures are loaded in GPU memory (VRAM)
 | |
| *
 | |
| *   This example has been created using raylib 3.5 (www.raylib.com)
 | |
| *   raylib is licensed under an unmodified zlib/libpng license (View raylib.h for details)
 | |
| *
 | |
| *   Example contributed by Karlo Licudine (@accidentalrebel) and reviewed by Ramon Santamaria (@raysan5)
 | |
| *
 | |
| *   Copyright (c) 2020 Karlo Licudine (@accidentalrebel)
 | |
| *
 | |
| ********************************************************************************************/
 | |
| 
 | |
| using static Raylib_cs.Raylib;
 | |
| 
 | |
| namespace Examples.Textures;
 | |
| 
 | |
| public class BlendModes
 | |
| {
 | |
|     public static int Main()
 | |
|     {
 | |
|         // Initialization
 | |
|         //--------------------------------------------------------------------------------------
 | |
|         const int screenWidth = 800;
 | |
|         const int screenHeight = 450;
 | |
| 
 | |
|         InitWindow(screenWidth, screenHeight, "raylib [textures] example - blend modes");
 | |
| 
 | |
|         // NOTE: Textures MUST be loaded after Window initialization (OpenGL context is required)
 | |
|         Image bgImage = LoadImage("resources/cyberpunk_street_background.png");
 | |
|         Texture2D bgTexture = LoadTextureFromImage(bgImage);
 | |
| 
 | |
|         Image fgImage = LoadImage("resources/cyberpunk_street_foreground.png");
 | |
|         Texture2D fgTexture = LoadTextureFromImage(fgImage);
 | |
| 
 | |
|         // Once image has been converted to texture and uploaded to VRAM, it can be unloaded from RAM
 | |
|         UnloadImage(bgImage);
 | |
|         UnloadImage(fgImage);
 | |
| 
 | |
|         const int blendCountMax = 4;
 | |
|         BlendMode blendMode = 0;
 | |
| 
 | |
|         // Main game loop
 | |
|         while (!WindowShouldClose())
 | |
|         {
 | |
|             // Update
 | |
|             //----------------------------------------------------------------------------------
 | |
|             if (IsKeyPressed(KeyboardKey.Space))
 | |
|             {
 | |
|                 if ((int)blendMode >= (blendCountMax - 1))
 | |
|                 {
 | |
|                     blendMode = 0;
 | |
|                 }
 | |
|                 else
 | |
|                 {
 | |
|                     blendMode++;
 | |
|                 }
 | |
|             }
 | |
|             //----------------------------------------------------------------------------------
 | |
| 
 | |
|             // Draw
 | |
|             //----------------------------------------------------------------------------------
 | |
|             BeginDrawing();
 | |
|             ClearBackground(Color.RayWhite);
 | |
| 
 | |
|             int bgX = screenWidth / 2 - bgTexture.Width / 2;
 | |
|             int bgY = screenHeight / 2 - bgTexture.Height / 2;
 | |
|             DrawTexture(bgTexture, bgX, bgY, Color.White);
 | |
| 
 | |
|             // Apply the blend mode and then draw the foreground texture
 | |
|             BeginBlendMode(blendMode);
 | |
|             int fgX = screenWidth / 2 - fgTexture.Width / 2;
 | |
|             int fgY = screenHeight / 2 - fgTexture.Height / 2;
 | |
|             DrawTexture(fgTexture, fgX, fgY, Color.White);
 | |
|             EndBlendMode();
 | |
| 
 | |
|             // Draw the texts
 | |
|             DrawText("Press SPACE to change blend modes.", 310, 350, 10, Color.Gray);
 | |
| 
 | |
|             switch (blendMode)
 | |
|             {
 | |
|                 case BlendMode.Alpha:
 | |
|                     DrawText("Current: BLEND_ALPHA", (screenWidth / 2) - 60, 370, 10, Color.Gray);
 | |
|                     break;
 | |
|                 case BlendMode.Additive:
 | |
|                     DrawText("Current: BLEND_ADDITIVE", (screenWidth / 2) - 60, 370, 10, Color.Gray);
 | |
|                     break;
 | |
|                 case BlendMode.Multiplied:
 | |
|                     DrawText("Current: BLEND_MULTIPLIED", (screenWidth / 2) - 60, 370, 10, Color.Gray);
 | |
|                     break;
 | |
|                 case BlendMode.AddColors:
 | |
|                     DrawText("Current: BLEND_ADD_COLORS", (screenWidth / 2) - 60, 370, 10, Color.Gray);
 | |
|                     break;
 | |
|                 default:
 | |
|                     break;
 | |
|             }
 | |
| 
 | |
|             string text = "(c) Cyberpunk Street Environment by Luis Zuno (@ansimuz)";
 | |
|             DrawText(text, screenWidth - 330, screenHeight - 20, 10, Color.Gray);
 | |
| 
 | |
|             EndDrawing();
 | |
|             //----------------------------------------------------------------------------------
 | |
|         }
 | |
| 
 | |
|         // De-Initialization
 | |
|         //--------------------------------------------------------------------------------------
 | |
|         UnloadTexture(fgTexture);
 | |
|         UnloadTexture(bgTexture);
 | |
| 
 | |
|         CloseWindow();
 | |
|         //--------------------------------------------------------------------------------------
 | |
| 
 | |
|         return 0;
 | |
|     }
 | |
| }
 |