From deaa84d28d7606e335abe323ccc4a101d025dfea Mon Sep 17 00:00:00 2001 From: Jeffery Myers Date: Thu, 3 Jun 2021 10:09:43 -0700 Subject: [PATCH] Add a split screen example showing render texture use and multiple cameras. (#1806) Co-authored-by: Jeffery Myers --- examples/Makefile | 3 +- examples/core/core_split_screen.c | 161 ++++++++ examples/core/core_split_screen.png | Bin 0 -> 37733 bytes .../VS2019/examples/core_split_screen.vcxproj | 387 ++++++++++++++++++ projects/VS2019/raylib.sln | 19 + 5 files changed, 569 insertions(+), 1 deletion(-) create mode 100644 examples/core/core_split_screen.c create mode 100644 examples/core/core_split_screen.png create mode 100644 projects/VS2019/examples/core_split_screen.vcxproj diff --git a/examples/Makefile b/examples/Makefile index 432455f18..01c30c14c 100644 --- a/examples/Makefile +++ b/examples/Makefile @@ -395,7 +395,8 @@ CORE = \ core/core_vr_simulator \ core/core_loading_thread \ core/core_quat_conversion \ - core/core_window_flags + core/core_window_flags \ + core/core_split_screen SHAPES = \ shapes/shapes_basic_shapes \ diff --git a/examples/core/core_split_screen.c b/examples/core/core_split_screen.c new file mode 100644 index 000000000..cf34a3ca6 --- /dev/null +++ b/examples/core/core_split_screen.c @@ -0,0 +1,161 @@ +/******************************************************************************************* +* +* raylib [core] example - split screen +* +* Welcome to raylib! +* +* To test examples, just press F6 and execute raylib_compile_execute script +* Note that compiled executable is placed in the same folder as .c file +* +* You can find all basic examples on C:\raylib\raylib\examples folder or +* raylib official webpage: www.raylib.com +* +* Enjoy using raylib. :) +* +* This example has been created using raylib 3.7 (www.raylib.com) +* raylib is licensed under an unmodified zlib/libpng license (View raylib.h for details) +* +* Copyright (c) 2013-2016 Ramon Santamaria (@raysan5) +* +********************************************************************************************/ + +#include "raylib.h" + +Texture2D GridTexture; +Camera Player1Camera = { 0 }; +Camera Player2Camera = { 0 }; + +void DrawScene() +{ + // grid of cube trees on a plane to make a "world" + DrawPlane((Vector3){ 0, 0, 0 }, (Vector2){ 50, 50 }, BEIGE); // simple world plane + float spacing = 4; + int count = 5; + + for (float x = -count * spacing; x <= count * spacing; x += spacing) + { + for (float z = -count * spacing; z <= count * spacing; z += spacing) + { + Vector3 pos = { x, 0.5f, z }; + + Vector3 min = { x - 0.5f,0,z - 0.5f }; + Vector3 max = { x + 0.5f,1,z + 0.5f }; + + DrawCubeTexture(GridTexture, (Vector3) { x, 1.5f, z }, 1, 1, 1, GREEN); + DrawCubeTexture(GridTexture, (Vector3) { x, 0.5f, z }, 0.25f, 1, 0.25f, BROWN); + } + } + + // draw a cube at each player's position + DrawCube(Player1Camera.position, 1, 1, 1, RED); + DrawCube(Player2Camera.position, 1, 1, 1, BLUE); +} + +int main(void) +{ + // Initialization + //-------------------------------------------------------------------------------------- + const int screenWidth = 800; + const int screenHeight = 450; + + InitWindow(screenWidth, screenHeight, "raylib [core] example - split screen"); + SetTargetFPS(60); // Set our game to run at 60 frames-per-second + + // generate a simple texture to use for trees + Image img = GenImageChecked(256, 256, 32, 32, DARKGRAY, WHITE); + GridTexture = LoadTextureFromImage(img); + UnloadImage(img); + SetTextureFilter(GridTexture, TEXTURE_FILTER_ANISOTROPIC_16X); + SetTextureWrap(GridTexture, TEXTURE_WRAP_CLAMP); + + + // setup player 1 camera and screen + Player1Camera.fovy = 45; + Player1Camera.up.y = 1; + Player1Camera.target.y = 1; + Player1Camera.position.z = -3; + Player1Camera.position.y = 1; + + RenderTexture player1Screen = LoadRenderTexture(screenWidth / 2, screenHeight); + + // setup player two camera and screen + Player2Camera.fovy = 45; + Player2Camera.up.y = 1; + Player2Camera.target.y =3; + Player2Camera.position.x = -3; + Player2Camera.position.y = 3; + + RenderTexture player2Screen = LoadRenderTexture(screenWidth / 2, screenHeight); + + // build a flipped rectangle the size of the split view to use for drawing later + Rectangle splitScreenRect = { 0,0, (float)player1Screen.texture.width, (float)-player1Screen.texture.height }; + + // Main game loop + while (!WindowShouldClose()) // Detect window close button or ESC key + { + // if anyone moves this frame, how far will they move based on the time since the last frame + // this moves thigns at 10 world units per second, regardless of the actual FPS + float offsetThisFrame = 10 * GetFrameTime(); + + + // move player 1 forward and backwards (no turning) + if (IsKeyDown(KEY_W)) + { + Player1Camera.position.z += offsetThisFrame; + Player1Camera.target.z += offsetThisFrame; + } + else if (IsKeyDown(KEY_S)) + { + Player1Camera.position.z -= offsetThisFrame; + Player1Camera.target.z -= offsetThisFrame; + } + + // move player 2 forward and backwards (no turning) + if (IsKeyDown(KEY_UP)) + { + Player2Camera.position.x += offsetThisFrame; + Player2Camera.target.x += offsetThisFrame; + } + else if (IsKeyDown(KEY_DOWN)) + { + Player2Camera.position.x -= offsetThisFrame; + Player2Camera.target.x -= offsetThisFrame; + } + + // draw player 1's view to the render texture + BeginTextureMode(player1Screen); + ClearBackground(SKYBLUE); + BeginMode3D(Player1Camera); + DrawScene(); + EndMode3D(); + DrawText("PLAYER1 W/S to move", 0, 0, 20, RED); + EndTextureMode(); + + // draw player 2's view to the render texture + BeginTextureMode(player2Screen); + ClearBackground(SKYBLUE); + BeginMode3D(Player2Camera); + DrawScene(); + EndMode3D(); + DrawText("PLAYER2 UP/DOWN to move", 0, 0, 20, BLUE); + EndTextureMode(); + + // draw both view render textures to the screen side by side + BeginDrawing(); + ClearBackground(BLACK); + DrawTextureRec(player1Screen.texture, splitScreenRect, (Vector2) { 0, 0 }, WHITE); + DrawTextureRec(player2Screen.texture, splitScreenRect, (Vector2) { screenWidth/2.0f, 0 }, WHITE); + EndDrawing(); + } + + UnloadRenderTexture(player1Screen); + UnloadRenderTexture(player2Screen); + UnloadTexture(GridTexture); + + // De-Initialization + //-------------------------------------------------------------------------------------- + CloseWindow(); // Close window and OpenGL context + //-------------------------------------------------------------------------------------- + + return 0; +} \ No newline at end of file diff --git a/examples/core/core_split_screen.png b/examples/core/core_split_screen.png new file mode 100644 index 0000000000000000000000000000000000000000..20cd2ead9dd40391ad4c1729ef9a0f2c655cebae GIT binary patch literal 37733 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 phHv199TgNC4E~0)yS_As%qvG + + + + Debug.DLL + Win32 + + + Debug.DLL + x64 + + + Debug + Win32 + + + Debug + x64 + + + Release.DLL + Win32 + + + Release.DLL + x64 + + + Release + Win32 + + + Release + x64 + + + + {946A1700-C7AA-46F0-AEF2-67C98B5722AC} + Win32Proj + core_split_screen + 10.0 + core_split_screen + + + + Application + true + $(DefaultPlatformToolset) + Unicode + + + Application + true + $(DefaultPlatformToolset) + Unicode + + + Application + true + $(DefaultPlatformToolset) + Unicode + + + Application + true + $(DefaultPlatformToolset) + Unicode + + + Application + false + $(DefaultPlatformToolset) + true + Unicode + + + Application + false + $(DefaultPlatformToolset) + true + Unicode + + + Application + false + $(DefaultPlatformToolset) + true + Unicode + + + Application + false + $(DefaultPlatformToolset) + true + Unicode + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + true + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + true + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + true + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + true + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + false + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + false + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + false + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + false + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + $(SolutionDir)..\..\examples\core + WindowsLocalDebugger + + + $(SolutionDir)..\..\examples\core + WindowsLocalDebugger + + + $(SolutionDir)..\..\examples\core + WindowsLocalDebugger + + + $(SolutionDir)..\..\examples\core + WindowsLocalDebugger + + + $(SolutionDir)..\..\examples\core + WindowsLocalDebugger + + + $(SolutionDir)..\..\examples\core + WindowsLocalDebugger + + + $(SolutionDir)..\..\examples\core + WindowsLocalDebugger + + + $(SolutionDir)..\..\examples\core + WindowsLocalDebugger + + + + + + Level3 + Disabled + WIN32;_DEBUG;_CONSOLE;PLATFORM_DESKTOP;%(PreprocessorDefinitions) + CompileAsC + $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories) + + + Console + true + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + + + + + + + Level3 + Disabled + WIN32;_DEBUG;_CONSOLE;PLATFORM_DESKTOP;%(PreprocessorDefinitions) + CompileAsC + $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories) + /FS %(AdditionalOptions) + + + Console + true + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + + + + + + + Level3 + Disabled + WIN32;_DEBUG;_CONSOLE;PLATFORM_DESKTOP;%(PreprocessorDefinitions) + CompileAsC + $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories) + + + Console + true + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + + + xcopy /y /d "$(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\raylib.dll" "$(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)" + Copy Debug DLL to output directory + + + + + + + Level3 + Disabled + WIN32;_DEBUG;_CONSOLE;PLATFORM_DESKTOP;%(PreprocessorDefinitions) + CompileAsC + $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories) + + + Console + true + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + + + xcopy /y /d "$(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\raylib.dll" "$(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)" + Copy Debug DLL to output directory + + + + + Level3 + + + MaxSpeed + true + true + WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions);PLATFORM_DESKTOP + $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories) + CompileAsC + true + + + Console + true + true + true + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + + + + + Level3 + + + MaxSpeed + true + true + WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions);PLATFORM_DESKTOP + $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories) + CompileAsC + true + + + Console + true + true + true + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + + + + + Level3 + + + MaxSpeed + true + true + WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions);PLATFORM_DESKTOP + $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories) + CompileAsC + true + + + Console + true + true + true + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + + + xcopy /y /d "$(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\raylib.dll" "$(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)" + + + Copy Release DLL to output directory + + + + + Level3 + + + MaxSpeed + true + true + WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions);PLATFORM_DESKTOP + $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories) + CompileAsC + true + + + Console + true + true + true + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + + + xcopy /y /d "$(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\raylib.dll" "$(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)" + + + Copy Release DLL to output directory + + + + + + + + {e89d61ac-55de-4482-afd4-df7242ebc859} + + + + + + \ No newline at end of file diff --git a/projects/VS2019/raylib.sln b/projects/VS2019/raylib.sln index 27ef792ba..53d2a18ad 100644 --- a/projects/VS2019/raylib.sln +++ b/projects/VS2019/raylib.sln @@ -273,6 +273,8 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "raudio_standalone", "exampl EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "rlgl_standalone", "examples\rlgl_standalone.vcxproj", "{C8765523-58F8-4C8E-9914-693396F6F0FF}" EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "core_split_screen", "examples\core_split_screen.vcxproj", "{946A1700-C7AA-46F0-AEF2-67C98B5722AC}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug.DLL|x64 = Debug.DLL|x64 @@ -2265,6 +2267,22 @@ Global {C8765523-58F8-4C8E-9914-693396F6F0FF}.Release|x64.Build.0 = Release|x64 {C8765523-58F8-4C8E-9914-693396F6F0FF}.Release|x86.ActiveCfg = Release|Win32 {C8765523-58F8-4C8E-9914-693396F6F0FF}.Release|x86.Build.0 = Release|Win32 + {946A1700-C7AA-46F0-AEF2-67C98B5722AC}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {946A1700-C7AA-46F0-AEF2-67C98B5722AC}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {946A1700-C7AA-46F0-AEF2-67C98B5722AC}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {946A1700-C7AA-46F0-AEF2-67C98B5722AC}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {946A1700-C7AA-46F0-AEF2-67C98B5722AC}.Debug|x64.ActiveCfg = Debug|x64 + {946A1700-C7AA-46F0-AEF2-67C98B5722AC}.Debug|x64.Build.0 = Debug|x64 + {946A1700-C7AA-46F0-AEF2-67C98B5722AC}.Debug|x86.ActiveCfg = Debug|Win32 + {946A1700-C7AA-46F0-AEF2-67C98B5722AC}.Debug|x86.Build.0 = Debug|Win32 + {946A1700-C7AA-46F0-AEF2-67C98B5722AC}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {946A1700-C7AA-46F0-AEF2-67C98B5722AC}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {946A1700-C7AA-46F0-AEF2-67C98B5722AC}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {946A1700-C7AA-46F0-AEF2-67C98B5722AC}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {946A1700-C7AA-46F0-AEF2-67C98B5722AC}.Release|x64.ActiveCfg = Release|x64 + {946A1700-C7AA-46F0-AEF2-67C98B5722AC}.Release|x64.Build.0 = Release|x64 + {946A1700-C7AA-46F0-AEF2-67C98B5722AC}.Release|x86.ActiveCfg = Release|Win32 + {946A1700-C7AA-46F0-AEF2-67C98B5722AC}.Release|x86.Build.0 = Release|Win32 EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE @@ -2403,6 +2421,7 @@ Global {E1B6D565-9D7C-46B7-9202-ECF54974DE50} = {E9D708A5-9C1F-4B84-A795-C5F191801762} {6237BEDE-BAAA-4A06-9C5E-8089BAA14C8B} = {E9D708A5-9C1F-4B84-A795-C5F191801762} {C8765523-58F8-4C8E-9914-693396F6F0FF} = {E9D708A5-9C1F-4B84-A795-C5F191801762} + {946A1700-C7AA-46F0-AEF2-67C98B5722AC} = {6C82BAAE-BDDF-457D-8FA8-7E2490B07035} EndGlobalSection GlobalSection(ExtensibilityGlobals) = postSolution SolutionGuid = {E926C768-6307-4423-A1EC-57E95B1FAB29}