mirror of
				https://github.com/raysan5/raylib.git
				synced 2025-10-26 12:27:01 +00:00 
			
		
		
		
	Add orthographic projection example
This commit is contained in:
		
							
								
								
									
										109
									
								
								examples/models/models_orthographic_projection.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										109
									
								
								examples/models/models_orthographic_projection.c
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,109 @@ | ||||
| /******************************************************************************************* | ||||
| * | ||||
| *   raylib [models] example - Show the difference between perspective and orthographic projection  | ||||
| * | ||||
| *   This program is heavily based on the geometric objects example | ||||
| * | ||||
| *   This example has been created using raylib 1.0 (www.raylib.com) | ||||
| *   raylib is licensed under an unmodified zlib/libpng license (View raylib.h for details) | ||||
| * | ||||
| *   Copyright (c) 2014 Ramon Santamaria (@raysan5) | ||||
| * | ||||
| ********************************************************************************************/ | ||||
|  | ||||
| #include "raylib.h" | ||||
|  | ||||
| int main() | ||||
| { | ||||
|     // Initialization | ||||
|     //-------------------------------------------------------------------------------------- | ||||
|     int screenWidth = 800; | ||||
|     int screenHeight = 450; | ||||
|     bool view_ortho = true; | ||||
|  | ||||
|     InitWindow(screenWidth, screenHeight, "raylib [models] example - geometric shapes"); | ||||
|  | ||||
|     // Define the camera to look into our 3d world | ||||
|     Camera camera;  | ||||
|  | ||||
|     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 | ||||
|         //---------------------------------------------------------------------------------- | ||||
|         // TODO: Update your variables here | ||||
|         //---------------------------------------------------------------------------------- | ||||
|         // | ||||
|  | ||||
|         // Input | ||||
|         //---------------------------------------------------------------------------------- | ||||
|         if(IsKeyPressed(KEY_SPACE))  | ||||
|         { | ||||
|             view_ortho = !view_ortho; | ||||
|         } | ||||
|  | ||||
|  | ||||
|         // Draw | ||||
|         //---------------------------------------------------------------------------------- | ||||
|  | ||||
|         if(view_ortho)  | ||||
|         { | ||||
|             camera = (Camera){{ 0.0f, 10.0f, 10.0f }, { 0.0f, 0.0f, 0.0f }, { 0.0f, 1.0f, 0.0f }, 10.0f, CAMERA_ORTHOGRAPHIC }; | ||||
|         }  | ||||
|         else  | ||||
|         { | ||||
|             camera = (Camera){{ 0.0f, 10.0f, 10.0f }, { 0.0f, 0.0f, 0.0f }, { 0.0f, 1.0f, 0.0f }, 45.0f, CAMERA_PERSPECTIVE }; | ||||
|         } | ||||
|  | ||||
|         BeginDrawing(); | ||||
|  | ||||
|             ClearBackground(RAYWHITE); | ||||
|  | ||||
|             Begin3dMode(camera); | ||||
|  | ||||
|                 DrawCube((Vector3){-4.0f, 0.0f, 2.0f}, 2.0f, 5.0f, 2.0f, RED); | ||||
|                 DrawCubeWires((Vector3){-4.0f, 0.0f, 2.0f}, 2.0f, 5.0f, 2.0f, GOLD); | ||||
|                 DrawCubeWires((Vector3){-4.0f, 0.0f, -2.0f}, 3.0f, 6.0f, 2.0f, MAROON); | ||||
|  | ||||
|                 DrawSphere((Vector3){-1.0f, 0.0f, -2.0f}, 1.0f, GREEN); | ||||
|                 DrawSphereWires((Vector3){1.0f, 0.0f, 2.0f}, 2.0f, 16, 16, LIME); | ||||
|  | ||||
|                 DrawCylinder((Vector3){4.0f, 0.0f, -2.0f}, 1.0f, 2.0f, 3.0f, 4, SKYBLUE); | ||||
|                 DrawCylinderWires((Vector3){4.0f, 0.0f, -2.0f}, 1.0f, 2.0f, 3.0f, 4, DARKBLUE); | ||||
|                 DrawCylinderWires((Vector3){4.5f, -1.0f, 2.0f}, 1.0f, 1.0f, 2.0f, 6, BROWN); | ||||
|  | ||||
|                 DrawCylinder((Vector3){1.0f, 0.0f, -4.0f}, 0.0f, 1.5f, 3.0f, 8, GOLD); | ||||
|                 DrawCylinderWires((Vector3){1.0f, 0.0f, -4.0f}, 0.0f, 1.5f, 3.0f, 8, PINK); | ||||
|  | ||||
|                 DrawGrid(10, 1.0f);        // Draw a grid | ||||
|  | ||||
|             End3dMode(); | ||||
|  | ||||
|             DrawFPS(10, 10); | ||||
|  | ||||
|             DrawText("Press Spacebar to switch camera type", 10, 40, 24, BLACK); | ||||
|  | ||||
|             if(view_ortho) | ||||
|             { | ||||
|                 DrawText("Orthographic", 10, 65, 24, BLACK); | ||||
|             } | ||||
|             else | ||||
|             { | ||||
|                 DrawText("Perspective", 10, 65, 24, BLACK); | ||||
|             } | ||||
|  | ||||
|  | ||||
|         EndDrawing(); | ||||
|         //---------------------------------------------------------------------------------- | ||||
|     } | ||||
|  | ||||
|     // De-Initialization | ||||
|     //-------------------------------------------------------------------------------------- | ||||
|     CloseWindow();        // Close window and OpenGL context | ||||
|     //-------------------------------------------------------------------------------------- | ||||
|  | ||||
|     return 0; | ||||
| } | ||||
		Reference in New Issue
	
	Block a user
	 Max Danielsson
					Max Danielsson