Browse Source

RenderTarget2D updated to SDK and MG 3.8.*

CartBlanche 2 weeks ago
parent
commit
9d46217041
35 changed files with 863 additions and 863 deletions
  1. 49 0
      RenderTarget2DSample/.vscode/launch.json
  2. 76 0
      RenderTarget2DSample/.vscode/tasks.json
  3. 0 28
      RenderTarget2DSample/Activity1.cs
  4. 0 0
      RenderTarget2DSample/Core/Content/Background.png
  5. 0 0
      RenderTarget2DSample/Core/Content/Game.ico
  6. 0 0
      RenderTarget2DSample/Core/Content/GameThumbnail.png
  7. 0 0
      RenderTarget2DSample/Core/Core.csproj
  8. 273 276
      RenderTarget2DSample/Core/Game1.cs
  9. 12 0
      RenderTarget2DSample/Core/RenderTarget2D.Core.csproj
  10. 0 16
      RenderTarget2DSample/Info.plist
  11. 23 0
      RenderTarget2DSample/Platforms/Android/AndroidManifest.xml
  12. 30 0
      RenderTarget2DSample/Platforms/Android/MainActivity.cs
  13. 40 0
      RenderTarget2DSample/Platforms/Android/RenderTarget2D.Android.csproj
  14. 0 0
      RenderTarget2DSample/Platforms/Android/Resources/AboutResources.txt
  15. 0 0
      RenderTarget2DSample/Platforms/Android/Resources/Resource.designer.cs
  16. 0 0
      RenderTarget2DSample/Platforms/Android/Resources/drawable/Icon.png
  17. 0 0
      RenderTarget2DSample/Platforms/Android/Resources/drawable/Splash.png
  18. 0 0
      RenderTarget2DSample/Platforms/Android/Resources/values/Styles.xml
  19. 20 0
      RenderTarget2DSample/Platforms/Desktop/Program.cs
  20. 33 0
      RenderTarget2DSample/Platforms/Desktop/RenderTarget2D.DesktopGL.csproj
  21. 20 0
      RenderTarget2DSample/Platforms/Windows/Program.cs
  22. 34 0
      RenderTarget2DSample/Platforms/Windows/RenderTarget2D.Windows.csproj
  23. 41 0
      RenderTarget2DSample/Platforms/iOS/Info.plist
  24. 32 0
      RenderTarget2DSample/Platforms/iOS/Program.cs
  25. 36 0
      RenderTarget2DSample/Platforms/iOS/RenderTarget2D.iOS.csproj
  26. 0 83
      RenderTarget2DSample/Program.cs
  27. 0 6
      RenderTarget2DSample/Properties/AndroidManifest.xml
  28. 0 27
      RenderTarget2DSample/Properties/AssemblyInfo.cs
  29. 118 0
      RenderTarget2DSample/README.md
  30. 0 91
      RenderTarget2DSample/RenderTarget2D.Android.csproj
  31. 0 79
      RenderTarget2DSample/RenderTarget2D.Windows.csproj
  32. 0 94
      RenderTarget2DSample/RenderTarget2D.iOS.csproj
  33. 0 63
      RenderTarget2DSample/RenderTarget2DSample.Linux.csproj
  34. 0 87
      RenderTarget2DSample/RenderTarget2DSample.MacOS.csproj
  35. 26 13
      RenderTarget2DSample/RenderTarget2DSample.sln

+ 49 - 0
RenderTarget2DSample/.vscode/launch.json

@@ -0,0 +1,49 @@
+{
+    "version": "0.2.0",
+    "configurations": [
+        {
+            "name": "Launch Windows",
+            "type": "coreclr",
+            "request": "launch",
+            "preLaunchTask": "build-windows",
+            "program": "${workspaceFolder}/Platforms/Windows/bin/Debug/net8.0-windows/RenderTarget2D.Windows.exe",
+            "args": [],
+            "cwd": "${workspaceFolder}/Platforms/Windows",
+            "console": "internalConsole",
+            "stopAtEntry": false
+        },
+        {
+            "name": "Launch DesktopGL",
+            "type": "coreclr",
+            "request": "launch",
+            "preLaunchTask": "build-desktopgl",
+            "program": "${workspaceFolder}/Platforms/Desktop/bin/Debug/net8.0/RenderTarget2D.DesktopGL.exe",
+            "args": [],
+            "cwd": "${workspaceFolder}/Platforms/Desktop",
+            "console": "internalConsole",
+            "stopAtEntry": false
+        },
+        {
+            "name": "Launch Android",
+            "type": "coreclr",
+            "request": "launch",
+            "preLaunchTask": "build-android",
+            "program": "${workspaceFolder}/Platforms/Android/bin/Debug/net8.0-android/RenderTarget2D.Android.dll",
+            "args": [],
+            "cwd": "${workspaceFolder}/Platforms/Android",
+            "console": "internalConsole",
+            "stopAtEntry": false
+        },
+        {
+            "name": "Launch iOS",
+            "type": "coreclr",
+            "request": "launch",
+            "preLaunchTask": "build-ios",
+            "program": "${workspaceFolder}/Platforms/iOS/bin/Debug/net8.0-ios/RenderTarget2D.iOS.dll",
+            "args": [],
+            "cwd": "${workspaceFolder}/Platforms/iOS",
+            "console": "internalConsole",
+            "stopAtEntry": false
+        }
+    ]
+}

+ 76 - 0
RenderTarget2DSample/.vscode/tasks.json

@@ -0,0 +1,76 @@
+{
+    "version": "2.0.0",
+    "tasks": [
+        {
+            "label": "build-windows",
+            "type": "shell",
+            "command": "dotnet",
+            "args": ["build", "Platforms/Windows/RenderTarget2D.Windows.csproj"],
+            "group": "build",
+            "problemMatcher": ["$msCompile"]
+        },
+        {
+            "label": "build-desktopgl",
+            "type": "shell",
+            "command": "dotnet",
+            "args": ["build", "Platforms/Desktop/RenderTarget2D.DesktopGL.csproj"],
+            "group": "build",
+            "problemMatcher": ["$msCompile"]
+        },
+        {
+            "label": "build-android",
+            "type": "shell",
+            "command": "dotnet",
+            "args": ["build", "Platforms/Android/RenderTarget2D.Android.csproj"],
+            "group": "build",
+            "problemMatcher": ["$msCompile"]
+        },
+        {
+            "label": "build-ios",
+            "type": "shell",
+            "command": "dotnet",
+            "args": ["build", "Platforms/iOS/RenderTarget2D.iOS.csproj"],
+            "group": "build",
+            "problemMatcher": ["$msCompile"]
+        },
+        {
+            "label": "run-windows",
+            "type": "shell",
+            "command": "dotnet",
+            "args": ["run", "--project", "Platforms/Windows/RenderTarget2D.Windows.csproj"],
+            "group": "test",
+            "dependsOn": "build-windows"
+        },
+        {
+            "label": "run-desktopgl",
+            "type": "shell",
+            "command": "dotnet",
+            "args": ["run", "--project", "Platforms/Desktop/RenderTarget2D.DesktopGL.csproj"],
+            "group": "test",
+            "dependsOn": "build-desktopgl"
+        },
+        {
+            "label": "run-android",
+            "type": "shell",
+            "command": "dotnet",
+            "args": ["run", "--project", "Platforms/Android/RenderTarget2D.Android.csproj"],
+            "group": "test",
+            "dependsOn": "build-android"
+        },
+        {
+            "label": "run-ios",
+            "type": "shell",
+            "command": "dotnet",
+            "args": ["run", "--project", "Platforms/iOS/RenderTarget2D.iOS.csproj"],
+            "group": "test",
+            "dependsOn": "build-ios"
+        },
+        {
+            "label": "clean",
+            "type": "shell",
+            "command": "dotnet",
+            "args": ["clean"],
+            "group": "build"
+        }
+    ]
+}

+ 0 - 28
RenderTarget2DSample/Activity1.cs

@@ -1,28 +0,0 @@
-using System;
-
-using Android.App;
-using Android.Content;
-using Android.Content.PM;
-using Android.Runtime;
-using Android.Views;
-using Android.Widget;
-using Android.OS;
-
-namespace RenderTarget2DSample
-{
-    [Activity(Label = "RenderTarget2D", MainLauncher = true, Icon = "@drawable/icon"
-        , Theme = "@style/Theme.Splash",ConfigurationChanges=ConfigChanges.Orientation|ConfigChanges.Keyboard|ConfigChanges.KeyboardHidden)]
-	public class Activity1 : Microsoft.Xna.Framework.AndroidGameActivity
-	{
-		protected override void OnCreate (Bundle bundle)
-		{
-			base.OnCreate (bundle);
-            Game1.Activity = this;
-			var g = new Game1();
-            SetContentView(g.Window);
-            g.Run();
-		}
-	}
-}
-
-

+ 0 - 0
RenderTarget2DSample/Background.png → RenderTarget2DSample/Core/Content/Background.png


+ 0 - 0
RenderTarget2DSample/Game.ico → RenderTarget2DSample/Core/Content/Game.ico


+ 0 - 0
RenderTarget2DSample/GameThumbnail.png → RenderTarget2DSample/Core/Content/GameThumbnail.png


+ 0 - 0
RenderTarget2DSample/Core/Core.csproj


+ 273 - 276
RenderTarget2DSample/Game1.cs → RenderTarget2DSample/Core/Game1.cs

@@ -1,276 +1,273 @@
-using System;
-using System.Collections.Generic;
-using System.Linq;
-
-#if ANDROID
-using Android.App;
-#endif
-
-using Microsoft.Xna.Framework;
-using Microsoft.Xna.Framework.Audio;
-using Microsoft.Xna.Framework.Content;
-using Microsoft.Xna.Framework.GamerServices;
-using Microsoft.Xna.Framework.Graphics;
-using Microsoft.Xna.Framework.Input;
-using Microsoft.Xna.Framework.Media;
-
-namespace RenderTarget2DSample
-{
-	/// <summary>
-	/// This is the main type for your game
-	/// </summary>
-	public class Game1 : Microsoft.Xna.Framework.Game
-	{
-		/// <summary>
-		/// The GraphicsDeviceManager is what creates and automagically manages the game's GraphicsDevice.
-		/// </summary>
-		GraphicsDeviceManager graphics;
-
-		/// <summary>
-		/// We use SpriteBatch to draw all of our 2D graphics.
-		/// </summary>
-		SpriteBatch spriteBatch;
-
-		/// <summary>
-		/// This is the rendertarget we'll be drawing to.
-		/// </summary>
-		RenderTarget2D renderTarget;
-
-		/// <summary>
-		/// This is a texture we'll be using to load a picture of Seamus the dog.
-		/// </summary>
-		Texture2D logo;
-
-		/// <summary>
-		/// This is a texture we'll be using to load a picture of a tileable wood surface.
-		/// </summary>
-		Texture2D checker;
-		bool oneTimeOnly = true;
-
-		/// <summary>
-		/// The constructor for our Game1 class.
-		/// </summary>
-        public Game1 ()  
-		{
-			// Create the GraphicsDeviceManager for our game.
-			graphics = new GraphicsDeviceManager (this);
-
-#if ANDROID || IPHONE
-            graphics.IsFullScreen = true;
-#else
-			graphics.PreferredBackBufferWidth = 800;
-			graphics.PreferredBackBufferHeight = 600;
-			graphics.IsFullScreen = false;
-#endif
-
-			// Set the root directory of the game's ContentManager to the "Content" folder.
-			Content.RootDirectory = "Content";
-		}
-
-		/// <summary>
-		/// Allows the game to perform any initialization it needs to before starting to run.
-		/// This is where it can query for any required services and load any non-graphic
-		/// related content.  Calling base.Initialize will enumerate through any components
-		/// and initialize them as well.
-		/// </summary>
-		protected override void Initialize ()
-		{
-			// We don't have anything to initialize.
-
-			base.Initialize ();
-		}
-
-		/// <summary>
-		/// LoadContent will be called once per game and is the place to load
-		/// all of your content.
-		/// </summary>
-		protected override void LoadContent ()
-		{           
-			// Create a new SpriteBatch, which can be used to draw textures.
-			spriteBatch = new SpriteBatch (GraphicsDevice);
-
-			// Create a rendertarget that matches the back buffer's dimensions, does not generate mipmaps automatically
-			// (the Reach profile requires power of 2 sizing in order to do that), uses an RGBA color format, and
-			// has no depth buffer or stencil buffer.
-			renderTarget = new RenderTarget2D (GraphicsDevice, GraphicsDevice.PresentationParameters.BackBufferWidth,
-				GraphicsDevice.PresentationParameters.BackBufferHeight, false, SurfaceFormat.Color, DepthFormat.None);
-            
-			// Load in our wood tile.
-			checker = Content.Load<Texture2D> ("checker");
-			
-			// Load in the picture of Seamus.
-			logo = Content.Load<Texture2D> ("logo");
-
-			
-		}
-
-		/// <summary>
-		/// UnloadContent will be called once per game and is the place to unload
-		/// all content.
-		/// </summary>
-		protected override void UnloadContent ()
-		{
-			// While not strictly necessary, you should always dispose of assets you create
-			// (excluding those you load the the ContentManager) when those assets implement
-			// IDisposable. RenderTarget2D is one such asset type, so we dispose of it properly.
-			if (renderTarget != null) {
-				// We put this in a try-catch block. The reason is that if for some odd reason this failed
-				// (e.g. we were using threading and nulled out renderTarget on some other thread),
-				// then none of the rest of the UnloadContent method would run. Here it doesn't make a
-				// difference, but it's good practice nonethless.
-				try {
-					renderTarget.Dispose ();
-					renderTarget = null;
-				} catch {
-				}
-			}
-		}
-
-		/// <summary>
-		/// Allows the game to run logic such as updating the world,
-		/// checking for collisions, gathering input, and playing audio.
-		/// </summary>
-		/// <param name="gameTime">Provides a snapshot of timing values.</param>
-		protected override void Update (GameTime gameTime)
-		{
-			// Allows the game to exit. If this is a Windows version, I also like to check for an Esc key press. I put
-			// it within an #if WINDOWS .. #endif block since that way it won't run on other platforms.
-			if (GamePad.GetState (PlayerIndex.One).Buttons.Back == ButtonState.Pressed
-			//#if WINDOWS
- || Keyboard.GetState ().IsKeyDown (Keys.Escape)
-//#endif
-) {
-				this.Exit ();
-			}
-
-			// We don't have any update logic since this is just an example usage of RenderTarget2D
-
-			base.Update (gameTime);
-		}
-
-		/// <summary>
-		/// This is called when the game should draw itself.
-		/// </summary>
-		/// <param name="gameTime">Provides a snapshot of timing values.</param>
-		protected override void Draw (GameTime gameTime)
-		{
-			
-			// A one time only flag to help test for memory leaks
-			
-			if (oneTimeOnly) 
-			{				
-				oneTimeOnly = false;
-
-				// Set renderTarget as the surface to draw to instead of the back buffer
-				GraphicsDevice.SetRenderTarget (renderTarget);
-			 
-				// Clear the renderTarget. By default it's all a bright purple color. I like to use Color.Transparent to
-				// enable easy alpha blending.
-				GraphicsDevice.Clear (Color.Transparent);
-				Vector2 woodPosition = Vector2.Zero;
-
-				// Begin drawing
-				spriteBatch.Begin ();
-
-				int xBlank = 0;
-				int yBlank = 0;
-
-				// Use nested do-whiles to fill the rendertarget with tiles. We use some trickery to draw every other tile
-				do {
-					do {
-						// We use the modulus operator to get the remainder of dividing xBlank by 2. If xBlank is odd, it'll
-						// return 1 and the spriteBatch.Draw call gets skipped. If it's even, it'll return 0 so
-						// spriteBatch.Draw will get called and it'll draw a tile there.
-						if (xBlank % 2 == 0) {
-							spriteBatch.Draw (checker, woodPosition, Color.White);
-						}
-						// Increment xBlank by one so that every other tile will get drawn.
-						xBlank++;
-						// Increase the X coordinate of where we'll draw the wood tile in order to progressively draw
-						// each column of tiles.
-						woodPosition.X += checker.Width;
-
-						// We draw so long as woodPosition.X is less than our renderTarget's width
-					} while (woodPosition.X < renderTarget.Width);
-
-					// We increment yBlank by one. Why is explained below.
-					yBlank++;
-
-					// We use the modulus operater to get the remainder of dividing yBlank by 2. If yBlank is odd, we reset
-					// xBlank to 1. If it's even, we reset xBlank to 0. This way each row shifts by one so that the tiles
-					// are drawn in a checkered pattern rather than in columns.
-					if (yBlank % 2 == 0) {
-						xBlank = 0;
-					} else {
-						xBlank = 1;
-					}
-
-					// Reset woodPosition.X to zero so that we start drawing from the beginning of the next row.
-					woodPosition.X = 0;
-
-					// Increase the Y coord of where we'll draw the wood tile in order to progressively draw each
-					// row of tiles.
-					woodPosition.Y += checker.Height;
-
-					// We draw so long as woodPosition.Y is less than our renderTarget's width
-				} while (woodPosition.Y < renderTarget.Height);
-
-				// Now that we've drawn the wood tiles, we draw Moo the Merciless. We draw him centered in the rendertarget.
-				spriteBatch.Draw (logo, 
-				new Vector2 ((renderTarget.Width / 2f) - (logo.Width / 2f), (renderTarget.Height / 2f) - (logo.Height / 2f)), 
-				Color.White);
-
-				// End the spriteBatch draw.
-				spriteBatch.End ();
-				 								
-				// Switch back to drawing onto the back buffer
-				GraphicsDevice.SetRenderTarget (null);
-				
-				//GrabScreenshot(renderTarget);
-			}
-			// Now that we're back to drawing onto the back buffer, we want to clear it. If we had done so earlier
-			// then when we switched to drawing to the render target, the old back buffer would've just be filled with
-			// that bright purple color when we came back to it.
-			GraphicsDevice.Clear (Color.CornflowerBlue);
-
-			// Ok. At this point we have everything we drew in renderTarget, which we can use just like a regular Texture2D.
-			// To make it look more interesting, we're going to scale up and down based on total elapsed time.
-			float scale = 1.0f;
-
-			if (gameTime.TotalGameTime.TotalSeconds % 10 < 5.0) {
-				// We're running on a ten second scale timer. For the first five second we scale down from 1f to
-				// no less than 0.01f.
-				scale = MathHelper.Clamp (1f - (((float)gameTime.TotalGameTime.TotalSeconds % 5) / 5f), 0.01f, 1f);
-			} else {
-				// For the second five seconds, we scale up from no less than 0.01f up to 1f.
-				scale = MathHelper.Clamp (((float)gameTime.TotalGameTime.TotalSeconds % 5) / 5f, 0.01f, 1f);
-			}
-
-			// Start spriteBatch again (this time drawing to the back buffer)
-			spriteBatch.Begin ();
-
-			// Now we draw our render target to the back buffer so that it will get displayed on the screen. We
-			// position it in the center of the screen, but we make the origin be the center of the render target
-			// such that it actually gets drawn centered (as opposed to shrinking and exanding with the left corner
-			// in the center). We use our scale computation, and specify no SpriteEffects and an unused 0f for layer
-			// depth
-			spriteBatch.Draw (renderTarget, 
-				new Vector2 (GraphicsDevice.PresentationParameters.BackBufferWidth / 2, GraphicsDevice.PresentationParameters.BackBufferHeight / 2), 
-				null, Color.White, 0f, new Vector2 (renderTarget.Width / 2, renderTarget.Height / 2), scale, 
-				SpriteEffects.None, 0f);
-
-			// End our spriteBatch call.
-			spriteBatch.End ();
-
-			base.Draw (gameTime);
-		}
-		
-		public static void GrabScreenshot(RenderTarget2D rendertarget)
-        {
-			Color[] data = new Color[(rendertarget.Width * rendertarget.Height) * 3];
-            //OpenTK.Graphics.ES11.GL.ReadPixels(0, 0, rendertarget.Width, rendertarget.Height, OpenTK.Graphics.ES11.All.Rgb, OpenTK.Graphics.ES11.All.UnsignedByte, ref data);            
-			rendertarget.GetData<Color>(data);
-        }
-
-	}
-}
+using System;
+using System.Collections.Generic;
+using System.Linq;
+
+#if ANDROID
+using Android.App;
+#endif
+
+using Microsoft.Xna.Framework;
+using Microsoft.Xna.Framework.Audio;
+using Microsoft.Xna.Framework.Content;
+using Microsoft.Xna.Framework.Graphics;
+using Microsoft.Xna.Framework.Input;
+using Microsoft.Xna.Framework.Media;
+
+namespace RenderTarget2DSample
+{
+	/// <summary>
+	/// This is the main type for your game
+	/// </summary>
+	public class RenderTarget2DSampleGame : Game
+	{
+		/// <summary>
+		/// The GraphicsDeviceManager is what creates and automagically manages the game's GraphicsDevice.
+		/// </summary>
+		GraphicsDeviceManager graphics;
+
+		/// <summary>
+		/// We use SpriteBatch to draw all of our 2D graphics.
+		/// </summary>
+		SpriteBatch spriteBatch;
+
+		/// <summary>
+		/// This is the rendertarget we'll be drawing to.
+		/// </summary>
+		RenderTarget2D renderTarget;
+
+		/// <summary>
+		/// This is a texture we'll be using to load a picture of Seamus the dog.
+		/// </summary>
+		Texture2D logo;
+
+		/// <summary>
+		/// This is a texture we'll be using to load a picture of a tileable wood surface.
+		/// </summary>
+		Texture2D checker;
+		bool oneTimeOnly = true;
+
+		/// <summary>
+		/// The constructor for our RenderTarget2DSampleGame class.
+		/// </summary>
+		public RenderTarget2DSampleGame ()  
+		{
+			// Create the GraphicsDeviceManager for our game.
+			graphics = new GraphicsDeviceManager (this);
+
+			graphics.PreferredBackBufferWidth = 800;
+			graphics.PreferredBackBufferHeight = 600;
+#if MOBILE
+			graphics.IsFullScreen = true;
+#endif
+
+			// Set the root directory of the game's ContentManager to the "Content" folder.
+			Content.RootDirectory = "Content";
+		}
+
+		/// <summary>
+		/// Allows the game to perform any initialization it needs to before starting to run.
+		/// This is where it can query for any required services and load any non-graphic
+		/// related content.  Calling base.Initialize will enumerate through any components
+		/// and initialize them as well.
+		/// </summary>
+		protected override void Initialize ()
+		{
+			// We don't have anything to initialize.
+
+			base.Initialize ();
+		}
+
+		/// <summary>
+		/// LoadContent will be called once per game and is the place to load
+		/// all of your content.
+		/// </summary>
+		protected override void LoadContent ()
+		{           
+			// Create a new SpriteBatch, which can be used to draw textures.
+			spriteBatch = new SpriteBatch (GraphicsDevice);
+
+			// Create a rendertarget that matches the back buffer's dimensions, does not generate mipmaps automatically
+			// (the Reach profile requires power of 2 sizing in order to do that), uses an RGBA color format, and
+			// has no depth buffer or stencil buffer.
+			renderTarget = new RenderTarget2D (GraphicsDevice, GraphicsDevice.PresentationParameters.BackBufferWidth,
+				GraphicsDevice.PresentationParameters.BackBufferHeight, false, SurfaceFormat.Color, DepthFormat.None);
+			
+			// Load in our wood tile.
+			checker = Content.Load<Texture2D> ("checker");
+			
+			// Load in the picture of Seamus.
+			logo = Content.Load<Texture2D> ("logo");
+
+			
+		}
+
+		/// <summary>
+		/// UnloadContent will be called once per game and is the place to unload
+		/// all content.
+		/// </summary>
+		protected override void UnloadContent ()
+		{
+			// While not strictly necessary, you should always dispose of assets you create
+			// (excluding those you load the the ContentManager) when those assets implement
+			// IDisposable. RenderTarget2D is one such asset type, so we dispose of it properly.
+			if (renderTarget != null) {
+				// We put this in a try-catch block. The reason is that if for some odd reason this failed
+				// (e.g. we were using threading and nulled out renderTarget on some other thread),
+				// then none of the rest of the UnloadContent method would run. Here it doesn't make a
+				// difference, but it's good practice nonethless.
+				try {
+					renderTarget.Dispose ();
+					renderTarget = null;
+				} catch {
+				}
+			}
+		}
+
+		/// <summary>
+		/// Allows the game to run logic such as updating the world,
+		/// checking for collisions, gathering input, and playing audio.
+		/// </summary>
+		/// <param name="gameTime">Provides a snapshot of timing values.</param>
+		protected override void Update (GameTime gameTime)
+		{
+			// Allows the game to exit. If this is a Windows version, I also like to check for an Esc key press. I put
+			// it within an #if WINDOWS .. #endif block since that way it won't run on other platforms.
+			if (GamePad.GetState (PlayerIndex.One).Buttons.Back == ButtonState.Pressed
+			//#if WINDOWS
+ || Keyboard.GetState ().IsKeyDown (Keys.Escape)
+//#endif
+) {
+				this.Exit ();
+			}
+
+			// We don't have any update logic since this is just an example usage of RenderTarget2D
+
+			base.Update (gameTime);
+		}
+
+		/// <summary>
+		/// This is called when the game should draw itself.
+		/// </summary>
+		/// <param name="gameTime">Provides a snapshot of timing values.</param>
+		protected override void Draw (GameTime gameTime)
+		{
+			
+			// A one time only flag to help test for memory leaks
+			
+			if (oneTimeOnly) 
+			{				
+				oneTimeOnly = false;
+
+				// Set renderTarget as the surface to draw to instead of the back buffer
+				GraphicsDevice.SetRenderTarget (renderTarget);
+			 
+				// Clear the renderTarget. By default it's all a bright purple color. I like to use Color.Transparent to
+				// enable easy alpha blending.
+				GraphicsDevice.Clear (Color.Transparent);
+				Vector2 woodPosition = Vector2.Zero;
+
+				// Begin drawing
+				spriteBatch.Begin ();
+
+				int xBlank = 0;
+				int yBlank = 0;
+
+				// Use nested do-whiles to fill the rendertarget with tiles. We use some trickery to draw every other tile
+				do {
+					do {
+						// We use the modulus operator to get the remainder of dividing xBlank by 2. If xBlank is odd, it'll
+						// return 1 and the spriteBatch.Draw call gets skipped. If it's even, it'll return 0 so
+						// spriteBatch.Draw will get called and it'll draw a tile there.
+						if (xBlank % 2 == 0) {
+							spriteBatch.Draw (checker, woodPosition, Color.White);
+						}
+						// Increment xBlank by one so that every other tile will get drawn.
+						xBlank++;
+						// Increase the X coordinate of where we'll draw the wood tile in order to progressively draw
+						// each column of tiles.
+						woodPosition.X += checker.Width;
+
+						// We draw so long as woodPosition.X is less than our renderTarget's width
+					} while (woodPosition.X < renderTarget.Width);
+
+					// We increment yBlank by one. Why is explained below.
+					yBlank++;
+
+					// We use the modulus operater to get the remainder of dividing yBlank by 2. If yBlank is odd, we reset
+					// xBlank to 1. If it's even, we reset xBlank to 0. This way each row shifts by one so that the tiles
+					// are drawn in a checkered pattern rather than in columns.
+					if (yBlank % 2 == 0) {
+						xBlank = 0;
+					} else {
+						xBlank = 1;
+					}
+
+					// Reset woodPosition.X to zero so that we start drawing from the beginning of the next row.
+					woodPosition.X = 0;
+
+					// Increase the Y coord of where we'll draw the wood tile in order to progressively draw each
+					// row of tiles.
+					woodPosition.Y += checker.Height;
+
+					// We draw so long as woodPosition.Y is less than our renderTarget's width
+				} while (woodPosition.Y < renderTarget.Height);
+
+				// Now that we've drawn the wood tiles, we draw Moo the Merciless. We draw him centered in the rendertarget.
+				spriteBatch.Draw (logo, 
+				new Vector2 ((renderTarget.Width / 2f) - (logo.Width / 2f), (renderTarget.Height / 2f) - (logo.Height / 2f)), 
+				Color.White);
+
+				// End the spriteBatch draw.
+				spriteBatch.End ();
+												
+				// Switch back to drawing onto the back buffer
+				GraphicsDevice.SetRenderTarget (null);
+				
+				//GrabScreenshot(renderTarget);
+			}
+			// Now that we're back to drawing onto the back buffer, we want to clear it. If we had done so earlier
+			// then when we switched to drawing to the render target, the old back buffer would've just be filled with
+			// that bright purple color when we came back to it.
+			GraphicsDevice.Clear (Color.CornflowerBlue);
+
+			// Ok. At this point we have everything we drew in renderTarget, which we can use just like a regular Texture2D.
+			// To make it look more interesting, we're going to scale up and down based on total elapsed time.
+			float scale = 1.0f;
+
+			if (gameTime.TotalGameTime.TotalSeconds % 10 < 5.0) {
+				// We're running on a ten second scale timer. For the first five second we scale down from 1f to
+				// no less than 0.01f.
+				scale = MathHelper.Clamp (1f - (((float)gameTime.TotalGameTime.TotalSeconds % 5) / 5f), 0.01f, 1f);
+			} else {
+				// For the second five seconds, we scale up from no less than 0.01f up to 1f.
+				scale = MathHelper.Clamp (((float)gameTime.TotalGameTime.TotalSeconds % 5) / 5f, 0.01f, 1f);
+			}
+
+			// Start spriteBatch again (this time drawing to the back buffer)
+			spriteBatch.Begin ();
+
+			// Now we draw our render target to the back buffer so that it will get displayed on the screen. We
+			// position it in the center of the screen, but we make the origin be the center of the render target
+			// such that it actually gets drawn centered (as opposed to shrinking and exanding with the left corner
+			// in the center). We use our scale computation, and specify no SpriteEffects and an unused 0f for layer
+			// depth
+			spriteBatch.Draw (renderTarget, 
+				new Vector2 (GraphicsDevice.PresentationParameters.BackBufferWidth / 2, GraphicsDevice.PresentationParameters.BackBufferHeight / 2), 
+				null, Color.White, 0f, new Vector2 (renderTarget.Width / 2, renderTarget.Height / 2), scale, 
+				SpriteEffects.None, 0f);
+
+			// End our spriteBatch call.
+			spriteBatch.End ();
+
+			base.Draw (gameTime);
+		}
+		
+		public static void GrabScreenshot(RenderTarget2D rendertarget)
+		{
+			Color[] data = new Color[(rendertarget.Width * rendertarget.Height) * 3];
+			//OpenTK.Graphics.ES11.GL.ReadPixels(0, 0, rendertarget.Width, rendertarget.Height, OpenTK.Graphics.ES11.All.Rgb, OpenTK.Graphics.ES11.All.UnsignedByte, ref data);            
+			rendertarget.GetData<Color>(data);
+		}
+
+	}
+}

+ 12 - 0
RenderTarget2DSample/Core/RenderTarget2D.Core.csproj

@@ -0,0 +1,12 @@
+<Project Sdk="Microsoft.NET.Sdk">
+  <PropertyGroup>
+    <TargetFramework>net8.0</TargetFramework>
+    <AssemblyName>RenderTarget2D.Core</AssemblyName>
+    <RootNamespace>RenderTarget2DSample</RootNamespace>
+    <GenerateAssemblyInfo>false</GenerateAssemblyInfo>
+  </PropertyGroup>
+  
+  <ItemGroup>
+    <PackageReference Include="MonoGame.Framework.DesktopGL" Version="3.8.*" />
+  </ItemGroup>
+</Project>

+ 0 - 16
RenderTarget2DSample/Info.plist

@@ -1,16 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
-<plist version="1.0">
-<dict>
-	<key>CFBundleIdentifier</key>
-	<string>com.yourcompany.RemderTarget2DSample</string>
-	<key>CFBundleName</key>
-	<string>RemderTarget2DSample</string>
-	<key>CFBundleVersion</key>
-	<string>1</string>
-	<key>LSMinimumSystemVersion</key>
-	<string>10.6</string>
-	<key>NSPrincipalClass</key>
-	<string>NSApplication</string>
-</dict>
-</plist>

+ 23 - 0
RenderTarget2DSample/Platforms/Android/AndroidManifest.xml

@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8"?>
+<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
+          package="com.monogame.rendertarget2d" 
+          android:versionCode="1" 
+          android:versionName="1.0">
+  
+  <uses-sdk android:minSdkVersion="21" android:targetSdkVersion="34" />
+  
+  <uses-permission android:name="android.permission.WAKE_LOCK" />
+  
+  <application android:label="RenderTarget2D"
+               android:icon="@drawable/icon"
+               android:theme="@style/Theme.Splash">
+    <activity android:name="Activity1"
+              android:label="RenderTarget2D"
+              android:mainLauncher="true"
+              android:icon="@drawable/icon"
+              android:theme="@style/Theme.Splash"
+              android:configChanges="orientation|keyboard|keyboardHidden|screenSize"
+              android:screenOrientation="landscape" />
+  </application>
+  
+</manifest>

+ 30 - 0
RenderTarget2DSample/Platforms/Android/MainActivity.cs

@@ -0,0 +1,30 @@
+using System;
+using Android.App;
+using Android.Content.PM;
+using Android.OS;
+using Android.Views;
+using Microsoft.Xna.Framework;
+
+namespace RenderTarget2DSample.Android
+{
+    [Activity(Label = "RenderTarget2D", MainLauncher = true, Icon = "@drawable/icon",
+        Theme = "@style/Theme.Splash", ConfigurationChanges = ConfigChanges.Orientation | ConfigChanges.Keyboard | ConfigChanges.KeyboardHidden)]
+    public class MainActivity : AndroidGameActivity
+    {
+        private RenderTarget2DSampleGame _game;
+        private View _view;
+
+        protected override void OnCreate(Bundle bundle)
+        {
+            base.OnCreate(bundle);
+            
+            _game = new RenderTarget2DSampleGame();
+            _view = _game.Services.GetService(typeof(View)) as View;
+            
+            SetContentView(_view);
+            _game.Run();
+        }
+    }
+}
+
+

+ 40 - 0
RenderTarget2DSample/Platforms/Android/RenderTarget2D.Android.csproj

@@ -0,0 +1,40 @@
+<Project Sdk="Microsoft.NET.Sdk">
+
+  <PropertyGroup>
+    <TargetFramework>net8.0-android</TargetFramework>
+    <OutputType>Exe</OutputType>
+    <ApplicationId>com.monogame.rendertarget2d</ApplicationId>
+    <ApplicationDisplayVersion>1.0</ApplicationDisplayVersion>
+    <ApplicationVersion>1</ApplicationVersion>
+    <AssemblyName>RenderTarget2D.Android</AssemblyName>
+    <RootNamespace>RenderTarget2DSample</RootNamespace>
+    <AndroidApplication>true</AndroidApplication>
+    <AndroidResgenClass>Resource</AndroidResgenClass>
+    <AndroidResgenFile>Resources\Resource.designer.cs</AndroidResgenFile>
+    <AndroidUseSharedRuntime>false</AndroidUseSharedRuntime>
+    <AndroidLinkMode>SdkOnly</AndroidLinkMode>
+    <DefineConstants>ANDROID</DefineConstants>
+    <GenerateAssemblyInfo>false</GenerateAssemblyInfo>
+  </PropertyGroup>
+
+  <ItemGroup>
+    <PackageReference Include="MonoGame.Framework.Android" Version="3.8.*" />
+    <PackageReference Include="MonoGame.Content.Builder.Task" Version="3.8.*" />
+  </ItemGroup>
+
+  <ItemGroup>
+    <ProjectReference Include="..\..\Core\RenderTarget2D.Core.csproj" />
+  </ItemGroup>
+
+  <ItemGroup>
+    <Content Include="..\..\..\CompiledContent\Android\Content\Textures\checker.xnb">
+      <Link>Content\checker.xnb</Link>
+      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+    </Content>
+    <Content Include="..\..\..\CompiledContent\Android\Content\Textures\logo.xnb">
+      <Link>Content\logo.xnb</Link>
+      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+    </Content>
+  </ItemGroup>
+
+</Project>

+ 0 - 0
RenderTarget2DSample/Resources/AboutResources.txt → RenderTarget2DSample/Platforms/Android/Resources/AboutResources.txt


+ 0 - 0
RenderTarget2DSample/Resources/Resource.designer.cs → RenderTarget2DSample/Platforms/Android/Resources/Resource.designer.cs


+ 0 - 0
RenderTarget2DSample/Resources/drawable/Icon.png → RenderTarget2DSample/Platforms/Android/Resources/drawable/Icon.png


+ 0 - 0
RenderTarget2DSample/Resources/drawable/Splash.png → RenderTarget2DSample/Platforms/Android/Resources/drawable/Splash.png


+ 0 - 0
RenderTarget2DSample/Resources/values/Styles.xml → RenderTarget2DSample/Platforms/Android/Resources/values/Styles.xml


+ 20 - 0
RenderTarget2DSample/Platforms/Desktop/Program.cs

@@ -0,0 +1,20 @@
+using System;
+
+namespace RenderTarget2DSample.Windows
+{
+    /// <summary>
+    /// The main class.
+    /// </summary>
+    public static class Program
+    {
+        /// <summary>
+        /// The main entry point for the application.
+        /// </summary>
+        [STAThread]
+        static void Main()
+        {
+            using var game = new RenderTarget2DSampleGame();
+            game.Run();
+        }
+    }
+}

+ 33 - 0
RenderTarget2DSample/Platforms/Desktop/RenderTarget2D.DesktopGL.csproj

@@ -0,0 +1,33 @@
+<Project Sdk="Microsoft.NET.Sdk">
+
+  <PropertyGroup>
+    <TargetFramework>net8.0</TargetFramework>
+    <OutputType>Exe</OutputType>
+    <ApplicationIcon>..\..\Core\Content\Game.ico</ApplicationIcon>
+    <AssemblyName>RenderTarget2D.DesktopGL</AssemblyName>
+    <RootNamespace>RenderTarget2DSample</RootNamespace>
+    <DefineConstants>DESKTOPGL</DefineConstants>
+    <GenerateAssemblyInfo>false</GenerateAssemblyInfo>
+  </PropertyGroup>
+
+  <ItemGroup>
+    <PackageReference Include="MonoGame.Framework.DesktopGL" Version="3.8.*" />
+    <PackageReference Include="MonoGame.Content.Builder.Task" Version="3.8.*" />
+  </ItemGroup>
+
+  <ItemGroup>
+    <ProjectReference Include="..\..\Core\RenderTarget2D.Core.csproj" />
+  </ItemGroup>
+
+  <ItemGroup>
+    <Content Include="..\..\..\CompiledContent\Windows\Content\Textures\checker.xnb">
+      <Link>Content\checker.xnb</Link>
+      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+    </Content>
+    <Content Include="..\..\..\CompiledContent\Windows\Content\Textures\logo.xnb">
+      <Link>Content\logo.xnb</Link>
+      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+    </Content>
+  </ItemGroup>
+
+</Project>

+ 20 - 0
RenderTarget2DSample/Platforms/Windows/Program.cs

@@ -0,0 +1,20 @@
+using System;
+
+namespace RenderTarget2DSample.Windows
+{
+    /// <summary>
+    /// The main class.
+    /// </summary>
+    public static class Program
+    {
+        /// <summary>
+        /// The main entry point for the application.
+        /// </summary>
+        [STAThread]
+        static void Main()
+        {
+            using var game = new RenderTarget2DSampleGame();
+            game.Run();
+        }
+    }
+}

+ 34 - 0
RenderTarget2DSample/Platforms/Windows/RenderTarget2D.Windows.csproj

@@ -0,0 +1,34 @@
+<Project Sdk="Microsoft.NET.Sdk">
+
+  <PropertyGroup>
+    <TargetFramework>net8.0-windows</TargetFramework>
+    <OutputType>WinExe</OutputType>
+    <UseWindowsForms>true</UseWindowsForms>
+    <ApplicationIcon>..\..\Core\Content\Game.ico</ApplicationIcon>
+    <AssemblyName>RenderTarget2D.Windows</AssemblyName>
+    <RootNamespace>RenderTarget2DSample</RootNamespace>
+    <DefineConstants>WINDOWS</DefineConstants>
+    <GenerateAssemblyInfo>false</GenerateAssemblyInfo>
+  </PropertyGroup>
+
+  <ItemGroup>
+    <PackageReference Include="MonoGame.Framework.WindowsDX" Version="3.8.*" />
+    <PackageReference Include="MonoGame.Content.Builder.Task" Version="3.8.*" />
+  </ItemGroup>
+
+  <ItemGroup>
+    <ProjectReference Include="..\..\Core\RenderTarget2D.Core.csproj" />
+  </ItemGroup>
+
+  <ItemGroup>
+    <Content Include="..\..\..\CompiledContent\Windows\Content\Textures\checker.xnb">
+      <Link>Content\checker.xnb</Link>
+      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+    </Content>
+    <Content Include="..\..\..\CompiledContent\Windows\Content\Textures\logo.xnb">
+      <Link>Content\logo.xnb</Link>
+      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+    </Content>
+  </ItemGroup>
+
+</Project>

+ 41 - 0
RenderTarget2DSample/Platforms/iOS/Info.plist

@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+	<key>CFBundleDisplayName</key>
+	<string>RenderTarget2D</string>
+	<key>CFBundleIdentifier</key>
+	<string>com.monogame.rendertarget2d</string>
+	<key>CFBundleName</key>
+	<string>RenderTarget2D</string>
+	<key>CFBundleShortVersionString</key>
+	<string>1.0</string>
+	<key>CFBundleVersion</key>
+	<string>1</string>
+	<key>LSRequiresIPhoneOS</key>
+	<true/>
+	<key>MinimumOSVersion</key>
+	<string>11.0</string>
+	<key>UIDeviceFamily</key>
+	<array>
+		<integer>1</integer>
+		<integer>2</integer>
+	</array>
+	<key>UILaunchStoryboardName</key>
+	<string>LaunchScreen</string>
+	<key>UIRequiredDeviceCapabilities</key>
+	<array>
+		<string>armv7</string>
+	</array>
+	<key>UISupportedInterfaceOrientations</key>
+	<array>
+		<string>UIInterfaceOrientationLandscapeLeft</string>
+		<string>UIInterfaceOrientationLandscapeRight</string>
+	</array>
+	<key>UISupportedInterfaceOrientations~ipad</key>
+	<array>
+		<string>UIInterfaceOrientationLandscapeLeft</string>
+		<string>UIInterfaceOrientationLandscapeRight</string>
+	</array>
+</dict>
+</plist>

+ 32 - 0
RenderTarget2DSample/Platforms/iOS/Program.cs

@@ -0,0 +1,32 @@
+using Foundation;
+using UIKit;
+
+namespace RenderTarget2DSample.iOS
+{
+
+    [Register("AppDelegate")]
+    class AppDelegate : UIApplicationDelegate
+    {
+        private static RenderTarget2DSampleGame game;
+
+        internal static void RunGame()
+        {
+            game = new RenderTarget2DSampleGame();
+            game.Run();
+        }
+
+        /// <summary>
+        /// The main entry point for the application.
+        /// </summary>
+        static void Main(string[] args)
+        {
+            UIApplication.Main(args, null, typeof(AppDelegate));
+        }
+
+        public override void FinishedLaunching(UIApplication app)
+        {
+            RunGame();
+        }
+    }
+}
+

+ 36 - 0
RenderTarget2DSample/Platforms/iOS/RenderTarget2D.iOS.csproj

@@ -0,0 +1,36 @@
+<Project Sdk="Microsoft.NET.Sdk">
+
+  <PropertyGroup>
+    <TargetFramework>net8.0-ios</TargetFramework>
+    <OutputType>Exe</OutputType>
+    <ApplicationId>com.monogame.rendertarget2d</ApplicationId>
+    <ApplicationDisplayVersion>1.0</ApplicationDisplayVersion>
+    <ApplicationVersion>1</ApplicationVersion>
+    <AssemblyName>RenderTarget2D.iOS</AssemblyName>
+    <RootNamespace>RenderTarget2DSample</RootNamespace>
+    <SupportedOSPlatformVersion>11.0</SupportedOSPlatformVersion>
+    <DefineConstants>IOS</DefineConstants>
+    <GenerateAssemblyInfo>false</GenerateAssemblyInfo>
+  </PropertyGroup>
+
+  <ItemGroup>
+    <PackageReference Include="MonoGame.Framework.iOS" Version="3.8.*" />
+    <PackageReference Include="MonoGame.Content.Builder.Task" Version="3.8.*" />
+  </ItemGroup>
+
+  <ItemGroup>
+    <ProjectReference Include="..\..\Core\RenderTarget2D.Core.csproj" />
+  </ItemGroup>
+
+  <ItemGroup>
+    <Content Include="..\..\..\CompiledContent\iOS\Content\Textures\checker.xnb">
+      <Link>Content\checker.xnb</Link>
+      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+    </Content>
+    <Content Include="..\..\..\CompiledContent\iOS\Content\Textures\logo.xnb">
+      <Link>Content\logo.xnb</Link>
+      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+    </Content>
+  </ItemGroup>
+
+</Project>

+ 0 - 83
RenderTarget2DSample/Program.cs

@@ -1,83 +0,0 @@
-#if MONOMAC
-using MonoMac.AppKit;
-using MonoMac.Foundation;
-#elif IPHONE
-using MonoTouch.Foundation;
-using MonoTouch.UIKit;
-#endif
-
-namespace RenderTarget2DSample
-{
-	#region Entry Point
-#if MONOMAC
-	static class Program
-	{
-		/// <summary>
-		/// The main entry point for the application.
-		/// </summary>
-		static void Main (string[] args)
-		{
-			NSApplication.Init ();
-			
-			using (var p = new NSAutoreleasePool ()) {
-				NSApplication.SharedApplication.Delegate = new AppDelegate();
-				NSApplication.Main(args);
-			}
-
-
-		}
-	}
-	
-	class AppDelegate : NSApplicationDelegate
-	{
-		Game1 game;
-		public override void FinishedLaunching (MonoMac.Foundation.NSObject notification)
-		{
-			game = new Game1 ();
-			game.Run ();
-
-		}
-		
-		public override bool ApplicationShouldTerminateAfterLastWindowClosed (NSApplication sender)
-		{
-			return true;
-		}
-	}	
-#elif IPHONE
-    [Register("AppDelegate")]
-    class Program : UIApplicationDelegate
-    {
-        Game1 game;
-        public override void FinishedLaunching(UIApplication app)
-        {
-            // Fun begins..
-            game = new Game1();
-            game.Run();
-        }
-
-        /// <summary>
-        /// The main entry point for the application.
-        /// </summary>
-        static void Main(string[] args)
-        {
-            UIApplication.Main(args, null, "AppDelegate");
-        }
-    }
-#else
-	static class Program
-	{
-		/// <summary>
-		/// The main entry point for the application.
-		/// </summary>
-		static void Main(string[] args)
-		{
-			using (Game1 game = new Game1())
-			{
-				game.Run();
-			}
-		}
-	}
-#endif
-    #endregion
-}
-

+ 0 - 6
RenderTarget2DSample/Properties/AndroidManifest.xml

@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<manifest xmlns:android="http://schemas.android.com/apk/res/android">
-  <application>
-  </application>
-  <uses-sdk android:minSdkVersion="4" />
-</manifest>

+ 0 - 27
RenderTarget2DSample/Properties/AssemblyInfo.cs

@@ -1,27 +0,0 @@
-using System.Reflection;
-using System.Runtime.CompilerServices;
-
-// Information about this assembly is defined by the following attributes. 
-// Change them to the values specific to your project.
-
-[assembly: AssemblyTitle("MonoGame.Samples.RenderTarget2D")]
-[assembly: AssemblyDescription("")]
-[assembly: AssemblyConfiguration("")]
-[assembly: AssemblyCompany("")]
-[assembly: AssemblyProduct("")]
-[assembly: AssemblyCopyright("savagesoftware")]
-[assembly: AssemblyTrademark("")]
-[assembly: AssemblyCulture("")]
-
-// The assembly version has the format "{Major}.{Minor}.{Build}.{Revision}".
-// The form "{Major}.{Minor}.*" will automatically update the build and revision,
-// and "{Major}.{Minor}.{Build}.*" will update just the revision.
-
-[assembly: AssemblyVersion("1.0.*")]
-
-// The following attributes are used to specify the signing key for the assembly, 
-// if desired. See the Mono documentation for more information about signing.
-
-//[assembly: AssemblyDelaySign(false)]
-//[assembly: AssemblyKeyFile("")]
-

+ 118 - 0
RenderTarget2DSample/README.md

@@ -0,0 +1,118 @@
+# RenderTarget2D Sample
+
+This is a MonoGame 3.8 sample that demonstrates how to use RenderTarget2D to render graphics to a texture and then manipulate that texture before drawing it to the screen. This sample showcases render-to-texture techniques that are commonly used for post-processing effects, screen capture, and dynamic texture generation.
+
+## Project Overview
+
+The RenderTarget2D sample creates a scene with textures (checker pattern and logo), renders them to a render target, and then displays the result on the screen with various transformations and effects.
+
+## Supported Platforms
+
+This project has been modernized to use .NET 8.0 and MonoGame 3.8.* with support for the following platforms:
+
+- **Windows** (`net8.0-windows`) - DirectX backend
+- **DesktopGL** (`net8.0`) - OpenGL backend for cross-platform desktop
+- **Android** (`net8.0-android`) - Mobile Android devices
+- **iOS** (`net8.0-ios`) - Mobile iOS devices
+
+## Prerequisites
+
+- [.NET 8.0 SDK](https://dotnet.microsoft.com/download/dotnet/8.0) or later
+- For Android development: Android SDK with API Level 21+ (Android 5.0)
+- For iOS development: Xcode and iOS 11.0+ support
+- Visual Studio 2022 or Visual Studio Code with C# extension
+
+## Building and Running
+
+### Using Visual Studio
+
+1. Open `RenderTarget2DSample.sln` in Visual Studio 2022
+2. Select your target platform project as the startup project
+3. Build and run (F5)
+
+### Using Visual Studio Code
+
+1. Open the project folder in VS Code
+2. Use the Command Palette (Ctrl+Shift+P) and run "Tasks: Run Task"
+3. Choose from available tasks:
+   - `build-windows` - Build Windows version
+   - `build-desktopgl` - Build DesktopGL version
+   - `build-android` - Build Android version
+   - `run-windows` - Build and run Windows version
+   - `run-desktopgl` - Build and run DesktopGL version
+
+### Using Command Line
+
+#### Windows DirectX Version
+```bash
+dotnet build RenderTarget2D.Windows.csproj
+dotnet run --project RenderTarget2D.Windows.csproj
+```
+
+#### DesktopGL Version (Cross-platform)
+```bash
+dotnet build RenderTarget2D.DesktopGL.csproj
+dotnet run --project RenderTarget2D.DesktopGL.csproj
+```
+
+#### Android Version
+```bash
+dotnet build RenderTarget2D.Android.csproj
+# Deploy to connected Android device/emulator
+dotnet publish RenderTarget2D.Android.csproj -f net8.0-android
+```
+
+#### iOS Version
+```bash
+dotnet build RenderTarget2D.iOS.csproj
+# Requires Xcode and Mac for deployment
+```
+
+## Project Structure
+
+- `Game1.cs` - Main game class with render target logic
+- `Program.cs` - Entry points for different platforms
+- `Activity1.cs` - Android-specific activity
+- `Content/` - Game assets (.xnb files)
+- `Properties/` - Platform-specific manifests and settings
+- `Resources/` - Android-specific resources
+
+## Content Pipeline
+
+This project uses pre-compiled .xnb content files located in the `../CompiledContent/` directory. The content includes:
+- `checker.xnb` - Checker pattern texture
+- `logo.xnb` - Logo texture
+
+The project does **not** include a Content.mgcb file and uses the existing compiled content directly.
+
+## Key Features Demonstrated
+
+- **RenderTarget2D Creation** - How to create and configure render targets
+- **Render-to-Texture** - Drawing graphics to a texture instead of the screen
+- **Texture Manipulation** - Using rendered textures as input for further rendering
+- **Cross-Platform Compatibility** - Single codebase supporting multiple platforms
+
+## MonoGame 3.8 Features Used
+
+- Modern .NET 8.0 target frameworks
+- NuGet package references for MonoGame framework
+- Platform-specific optimizations
+- Updated graphics pipeline
+
+## Troubleshooting
+
+### Missing Content Files
+If you get content loading errors, ensure that the `../CompiledContent/` directory exists with the required .xnb files for your target platform.
+
+### Build Errors
+- Ensure you have the correct .NET 8.0 SDK installed
+- For Android: Verify Android SDK and build tools are properly configured
+- For iOS: Ensure Xcode and iOS development tools are installed (Mac only)
+
+### Performance Issues
+- Try the DesktopGL version if Windows DirectX version has issues
+- Ensure your graphics drivers are up to date
+
+## License
+
+This sample is part of the MonoGame samples collection and follows the same licensing terms as MonoGame.

+ 0 - 91
RenderTarget2DSample/RenderTarget2D.Android.csproj

@@ -1,91 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <PropertyGroup>
-    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
-    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
-    <ProductVersion>10.0.0</ProductVersion>
-    <SchemaVersion>2.0</SchemaVersion>
-    <ProjectGuid>{DEDD20B5-8F83-46FD-AD05-8F8FCC49FCD6}</ProjectGuid>
-    <ProjectTypeGuids>{EFBA0AD7-5A72-4C68-AF49-83D382785DCF};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
-    <OutputType>Library</OutputType>
-    <RootNamespace>MonoGame.Samples.RenderTarget2D.Android</RootNamespace>
-    <MonoAndroidResourcePrefix>Resources</MonoAndroidResourcePrefix>
-    <MonoAndroidAssetsPrefix>Assets</MonoAndroidAssetsPrefix>
-    <AndroidResgenClass>Resource</AndroidResgenClass>
-    <AndroidApplication>True</AndroidApplication>
-    <AndroidResgenFile>Resources\Resource.designer.cs</AndroidResgenFile>
-    <AssemblyName>MonoGame.Samples.RenderTarget2D.Android</AssemblyName>
-    <AndroidManifest>Properties\AndroidManifest.xml</AndroidManifest>
-  </PropertyGroup>
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
-    <DebugSymbols>True</DebugSymbols>
-    <DebugType>full</DebugType>
-    <Optimize>False</Optimize>
-    <OutputPath>bin\Debug</OutputPath>
-    <DefineConstants>DEBUG;ANDROID</DefineConstants>
-    <ErrorReport>prompt</ErrorReport>
-    <WarningLevel>4</WarningLevel>
-    <ConsolePause>False</ConsolePause>
-    <AndroidLinkMode>None</AndroidLinkMode>
-  </PropertyGroup>
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
-    <DebugType>none</DebugType>
-    <Optimize>False</Optimize>
-    <OutputPath>bin\Release</OutputPath>
-    <ErrorReport>prompt</ErrorReport>
-    <WarningLevel>4</WarningLevel>
-    <ConsolePause>False</ConsolePause>
-    <AndroidUseSharedRuntime>False</AndroidUseSharedRuntime>
-    <AndroidLinkMode>SdkOnly</AndroidLinkMode>
-  </PropertyGroup>
-  <ItemGroup>
-    <Reference Include="System" />
-    <Reference Include="System.Xml" />
-    <Reference Include="System.Core" />
-    <Reference Include="Mono.Android" />
-    <Reference Include="OpenTK" />
-  </ItemGroup>
-  <ItemGroup>
-    <Compile Include="Activity1.cs" />
-    <Compile Include="Resources\Resource.designer.cs" />
-    <Compile Include="Properties\AssemblyInfo.cs" />
-    <Compile Include="Game1.cs">
-      <Link>Game1.cs</Link>
-    </Compile>
-  </ItemGroup>
-  <ItemGroup>
-    <None Include="Resources\AboutResources.txt" />
-  </ItemGroup>
-  <Import Project="$(MSBuildExtensionsPath)\Novell\Novell.MonoDroid.CSharp.targets" />
-  <ItemGroup>
-    <AndroidResource Include="Resources\drawable\Splash.png" />
-  </ItemGroup>
-  <ItemGroup>
-    <AndroidResource Include="Resources\values\Styles.xml" />
-  </ItemGroup>
-  <ItemGroup>
-    <Content Include="Properties\AndroidManifest.xml" />
-    <AndroidResource Include="Resources\drawable\Icon.png" />
-  </ItemGroup>
-  <ItemGroup>
-    <Folder Include="Assets\Content\" />
-  </ItemGroup>
-  <ItemGroup>
-    <AndroidAsset Include="..\CompiledContent\Android\Content\Textures\checker.xnb">
-      <Link>Assets\Content\checker.xnb</Link>
-    </AndroidAsset>
-    <AndroidAsset Include="..\CompiledContent\Android\Content\Textures\logo.xnb">
-      <Link>Assets\Content\logo.xnb</Link>
-    </AndroidAsset>
-  </ItemGroup>
-  <ItemGroup>
-    <ProjectReference Include="..\..\ThirdParty\Lidgren.Network\Lidgren.Network.Android.csproj">
-      <Project>{565129E0-4EE5-4F6F-B403-C3484C9740BE}</Project>
-      <Name>Lidgren.Network.Android</Name>
-    </ProjectReference>
-    <ProjectReference Include="..\..\MonoGame.Framework\MonoGame.Framework.Android.csproj">
-      <Project>{BA9476CF-99BA-4D03-92F2-73D2C5E58883}</Project>
-      <Name>MonoGame.Framework.Android</Name>
-    </ProjectReference>
-  </ItemGroup>
-</Project>

+ 0 - 79
RenderTarget2DSample/RenderTarget2D.Windows.csproj

@@ -1,79 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" DefaultTargets="Build">
-  <PropertyGroup>
-    <ProjectGuid>{B3DD03E0-4DEC-45A0-A481-2CF90A51C516}</ProjectGuid>
-    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
-    <Platform Condition=" '$(Platform)' == '' ">x86</Platform>
-    <OutputType>Exe</OutputType>
-    <RootNamespace>RenderTarget2D</RootNamespace>
-    <AssemblyName>RenderTarget2D</AssemblyName>
-    <AppDesignerFolder>Properties</AppDesignerFolder>
-    <ProductVersion>10.0.0</ProductVersion>
-    <SchemaVersion>2.0</SchemaVersion>
-  </PropertyGroup>
-  <PropertyGroup Condition=" '$(Platform)' == 'x86' ">
-    <PlatformTarget>x86</PlatformTarget>
-  </PropertyGroup>
-  <PropertyGroup Condition=" '$(Configuration)' == 'Debug' ">
-    <OutputPath>bin\Debug\</OutputPath>
-    <DebugSymbols>True</DebugSymbols>
-    <DebugType>Full</DebugType>
-    <Optimize>False</Optimize>
-    <CheckForOverflowUnderflow>True</CheckForOverflowUnderflow>
-    <DefineConstants>DEBUG;TRACE</DefineConstants>
-  </PropertyGroup>
-  <PropertyGroup Condition=" '$(Configuration)' == 'Release' ">
-    <OutputPath>bin\Release\</OutputPath>
-    <DebugSymbols>False</DebugSymbols>
-    <DebugType>None</DebugType>
-    <Optimize>True</Optimize>
-    <CheckForOverflowUnderflow>False</CheckForOverflowUnderflow>
-    <DefineConstants>TRACE</DefineConstants>
-  </PropertyGroup>
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x86' ">
-    <WarningLevel>4</WarningLevel>
-  </PropertyGroup>
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x86' ">
-    <WarningLevel>4</WarningLevel>
-  </PropertyGroup>
-  <ItemGroup>
-    <Reference Include="System" />
-    <Reference Include="System.Core">
-      <RequiredTargetFramework>3.5</RequiredTargetFramework>
-    </Reference>
-    <Reference Include="System.Data" />
-    <Reference Include="System.Xml" />
-    <Reference Include="OpenTK">
-      <HintPath>..\..\..\..\OpenTK1.0\Binaries\OpenTK\Release\OpenTK.dll</HintPath>
-    </Reference>
-  </ItemGroup>
-  <ItemGroup>
-    <Compile Include="Game1.cs" />
-    <Compile Include="Program.cs" />
-    <Compile Include="Properties\AssemblyInfo.cs" />
-  </ItemGroup>
-  <ItemGroup>
-    <Content Include="..\..\ThirdParty\GamepadConfig\SDL.dll">
-      <Link>SDL.dll</Link>
-      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
-    </Content>
-  </ItemGroup>
-  <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.Targets" />
-  <ItemGroup />
-  <ItemGroup>
-    <ProjectReference Include="..\..\MonoGame.Framework\MonoGame.Framework.WindowsGL.csproj">
-      <Project>{7DE47032-A904-4C29-BD22-2D235E8D91BA}</Project>
-      <Name>MonoGame.Framework.WindowsGL</Name>
-    </ProjectReference>
-  </ItemGroup>
-  <ItemGroup>
-    <Content Include="..\CompiledContent\Windows\Content\Textures\checker.xnb">
-      <Link>Content\checker.xnb</Link>
-      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
-    </Content>
-    <Content Include="..\CompiledContent\Windows\Content\Textures\logo.xnb">
-      <Link>Content\logo.xnb</Link>
-      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
-    </Content>
-  </ItemGroup>
-</Project>

+ 0 - 94
RenderTarget2DSample/RenderTarget2D.iOS.csproj

@@ -1,94 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <PropertyGroup>
-    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
-    <Platform Condition=" '$(Platform)' == '' ">iPhoneSimulator</Platform>
-    <ProductVersion>10.0.0</ProductVersion>
-    <SchemaVersion>2.0</SchemaVersion>
-    <ProjectGuid>{0A404652-27C9-40AA-B037-5665BC725621}</ProjectGuid>
-    <ProjectTypeGuids>{6BC8ED88-2882-458C-8E55-DFD12B67127B};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
-    <OutputType>Exe</OutputType>
-    <RootNamespace>RenderTarget2D</RootNamespace>
-    <AssemblyName>RenderTarget2D</AssemblyName>
-  </PropertyGroup>
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|iPhoneSimulator' ">
-    <DebugSymbols>True</DebugSymbols>
-    <DebugType>full</DebugType>
-    <Optimize>False</Optimize>
-    <OutputPath>bin\iPhoneSimulator\Debug</OutputPath>
-    <DefineConstants>DEBUG;IPHONE</DefineConstants>
-    <ErrorReport>prompt</ErrorReport>
-    <WarningLevel>4</WarningLevel>
-    <MtouchLink>None</MtouchLink>
-    <MtouchDebug>True</MtouchDebug>
-    <ConsolePause>False</ConsolePause>
-    <MtouchI18n />
-  </PropertyGroup>
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|iPhoneSimulator' ">
-    <DebugType>none</DebugType>
-    <Optimize>False</Optimize>
-    <OutputPath>bin\iPhoneSimulator\Release</OutputPath>
-    <ErrorReport>prompt</ErrorReport>
-    <WarningLevel>4</WarningLevel>
-    <MtouchLink>None</MtouchLink>
-    <ConsolePause>False</ConsolePause>
-    <DefineConstants>IPHONE</DefineConstants>
-  </PropertyGroup>
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|iPhone' ">
-    <DebugSymbols>True</DebugSymbols>
-    <DebugType>full</DebugType>
-    <Optimize>False</Optimize>
-    <OutputPath>bin\iPhone\Debug</OutputPath>
-    <DefineConstants>DEBUG;IPHONE</DefineConstants>
-    <ErrorReport>prompt</ErrorReport>
-    <WarningLevel>4</WarningLevel>
-    <MtouchDebug>True</MtouchDebug>
-    <CodesignKey>iPhone Developer</CodesignKey>
-    <ConsolePause>False</ConsolePause>
-    <MtouchI18n />
-  </PropertyGroup>
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|iPhone' ">
-    <DebugType>none</DebugType>
-    <Optimize>False</Optimize>
-    <OutputPath>bin\iPhone\Release</OutputPath>
-    <ErrorReport>prompt</ErrorReport>
-    <WarningLevel>4</WarningLevel>
-    <ConsolePause>False</ConsolePause>
-    <CodesignKey>iPhone Developer</CodesignKey>
-    <DefineConstants>IPHONE</DefineConstants>
-  </PropertyGroup>
-  <ItemGroup>
-    <Reference Include="System" />
-    <Reference Include="System.Xml" />
-    <Reference Include="System.Core" />
-    <Reference Include="monotouch" />
-  </ItemGroup>
-  <ItemGroup>
-    <None Include="Info.iOS.plist">
-      <Link>Info.plist</Link>
-    </None>
-    <None Include="Background.png">
-      <Link>Background.png</Link>
-    </None>
-    <None Include="GameThumbnail.png">
-      <Link>GameThumbnail.png</Link>
-    </None>
-  </ItemGroup>
-  <ItemGroup>
-    <Compile Include="Game1.cs">
-      <Link>Game1.cs</Link>
-    </Compile>
-    <Compile Include="Program.cs" />
-  </ItemGroup>
-  <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
-  <ItemGroup>
-    <Content Include="Content\MooTheMerciless.xnb">
-      <Link>Content\MooTheMerciless.xnb</Link>
-      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
-    </Content>
-    <Content Include="Content\wood.xnb">
-      <Link>Content\wood.xnb</Link>
-      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
-    </Content>
-  </ItemGroup>
-</Project>

+ 0 - 63
RenderTarget2DSample/RenderTarget2DSample.Linux.csproj

@@ -1,63 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <PropertyGroup>
-    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
-    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
-    <ProductVersion>10.0.0</ProductVersion>
-    <SchemaVersion>2.0</SchemaVersion>
-    <ProjectGuid>{DED4371E-B92B-46FC-B4A3-B56BCAE12477}</ProjectGuid>
-    <OutputType>Exe</OutputType>
-    <RootNamespace>RenderTarget2DSample</RootNamespace>
-    <AssemblyName>RenderTarget2DSample</AssemblyName>
-    <StartupObject>RenderTarget2DSample.Program</StartupObject>
-  </PropertyGroup>
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
-    <DebugSymbols>True</DebugSymbols>
-    <DebugType>full</DebugType>
-    <Optimize>False</Optimize>
-    <OutputPath>bin\Debug</OutputPath>
-    <DefineConstants>DEBUG</DefineConstants>
-    <ErrorReport>prompt</ErrorReport>
-    <WarningLevel>4</WarningLevel>
-    <ConsolePause>False</ConsolePause>
-  </PropertyGroup>
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
-    <DebugType>none</DebugType>
-    <Optimize>False</Optimize>
-    <OutputPath>bin\Release</OutputPath>
-    <ErrorReport>prompt</ErrorReport>
-    <WarningLevel>4</WarningLevel>
-    <ConsolePause>False</ConsolePause>
-  </PropertyGroup>
-  <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
-  <ItemGroup>
-    <Reference Include="System" />
-  </ItemGroup>
-  <ItemGroup>
-    <None Include="Background.png">
-      <Link>Background.png</Link>
-    </None>
-    <None Include="Game.ico">
-      <Link>Game.ico</Link>
-    </None>
-    <None Include="GameThumbnail.png">
-      <Link>GameThumbnail.png</Link>
-    </None>
-  </ItemGroup>
-  <ItemGroup>
-    <Compile Include="Game1.cs">
-      <Link>Game1.cs</Link>
-    </Compile>
-    <Compile Include="Program.cs" />
-  </ItemGroup>
-  <ItemGroup>
-    <Content Include="Content\MooTheMerciless.xnb">
-      <Link>Content\MooTheMerciless.xnb</Link>
-      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
-    </Content>
-    <Content Include="Content\wood.xnb">
-      <Link>Content\wood.xnb</Link>
-      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
-    </Content>
-  </ItemGroup>
-</Project>

+ 0 - 87
RenderTarget2DSample/RenderTarget2DSample.MacOS.csproj

@@ -1,87 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <PropertyGroup>
-    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
-    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
-    <ProductVersion>10.0.0</ProductVersion>
-    <SchemaVersion>2.0</SchemaVersion>
-    <ProjectGuid>{973C423F-0CC0-4230-9E67-D944ED70ED19}</ProjectGuid>
-    <ProjectTypeGuids>{948B3504-5B70-4649-8FE4-BDE1FB46EC69};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
-    <OutputType>Exe</OutputType>
-    <RootNamespace>RenderTarget2DSample</RootNamespace>
-    <AssemblyName>RenderTarget2DSample</AssemblyName>
-  </PropertyGroup>
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
-    <DebugSymbols>True</DebugSymbols>
-    <DebugType>full</DebugType>
-    <Optimize>False</Optimize>
-    <OutputPath>bin\Debug</OutputPath>
-    <DefineConstants>DEBUG;MONOMAC</DefineConstants>
-    <ErrorReport>prompt</ErrorReport>
-    <WarningLevel>4</WarningLevel>
-    <ConsolePause>False</ConsolePause>
-    <EnableCodeSigning>False</EnableCodeSigning>
-    <CreatePackage>False</CreatePackage>
-    <EnablePackageSigning>False</EnablePackageSigning>
-    <IncludeMonoRuntime>False</IncludeMonoRuntime>
-    <UseSGen>False</UseSGen>
-  </PropertyGroup>
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
-    <DebugType>none</DebugType>
-    <Optimize>False</Optimize>
-    <OutputPath>bin\Release</OutputPath>
-    <ErrorReport>prompt</ErrorReport>
-    <WarningLevel>4</WarningLevel>
-    <ConsolePause>False</ConsolePause>
-    <DefineConstants>MONOMAC</DefineConstants>
-    <EnableCodeSigning>False</EnableCodeSigning>
-    <CreatePackage>False</CreatePackage>
-    <EnablePackageSigning>False</EnablePackageSigning>
-    <IncludeMonoRuntime>False</IncludeMonoRuntime>
-    <UseSGen>False</UseSGen>
-  </PropertyGroup>
-  <ItemGroup>
-    <Reference Include="System" />
-    <Reference Include="System.Xml" />
-    <Reference Include="System.Core" />
-    <Reference Include="System.Xml.Linq" />
-    <Reference Include="System.Drawing" />
-    <Reference Include="MonoMac" />
-  </ItemGroup>
-  <ItemGroup>
-    <None Include="Info.plist">
-    </None>
-  </ItemGroup>
-  <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
-  <Import Project="$(MSBuildExtensionsPath)\Mono\MonoMac\v0.0\Mono.MonoMac.targets" />
-  <ItemGroup>
-    <Compile Include="Game1.cs" />
-    <Compile Include="Program.cs" />
-  </ItemGroup>
-  <ItemGroup>
-    <Content Include="Background.png" />
-    <Content Include="Game.ico" />
-    <Content Include="GameThumbnail.png" />
-    <Content Include="..\CompiledContent\OSX\Content\Textures\logo.xnb">
-      <Link>Content\logo.xnb</Link>
-      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
-    </Content>
-    <Content Include="..\CompiledContent\OSX\Content\Textures\checker.xnb">
-      <Link>Content\checker.xnb</Link>
-      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
-    </Content>
-  </ItemGroup>
-  <ItemGroup>
-    <ProjectReference Include="..\..\MonoGame.Framework\MonoGame.Framework.MacOS.csproj">
-      <Project>{36C538E6-C32A-4A8D-A39C-566173D7118E}</Project>
-      <Name>MonoGame.Framework.MacOS</Name>
-    </ProjectReference>
-    <ProjectReference Include="..\..\ThirdParty\Lidgren.Network\Lidgren.Network.MacOS.csproj">
-      <Project>{AE483C29-042E-4226-BA52-D247CE7676DA}</Project>
-      <Name>Lidgren.Network.MacOS</Name>
-    </ProjectReference>
-  </ItemGroup>
-  <ItemGroup>
-    <Folder Include="Content\" />
-  </ItemGroup>
-</Project>

+ 26 - 13
RenderTarget2DSample/RenderTarget2DSample.sln

@@ -1,29 +1,42 @@
 
-Microsoft Visual Studio Solution File, Format Version 11.00
-# Visual Studio 2010
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "RenderTarget2DSample", "RenderTarget2DSample.csproj", "{973C423F-0CC0-4230-9E67-D944ED70ED19}"
+Microsoft Visual Studio Solution File, Format Version 12.00
+# Visual Studio Version 17
+VisualStudioVersion = 17.0.31903.59
+MinimumVisualStudioVersion = 10.0.40219.1
+
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "RenderTarget2D.Windows", "RenderTarget2D.Windows.csproj", "{B3DD03E0-4DEC-45A0-A481-2CF90A51C516}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MonoGame.Framework.MacOS", "..\..\..\..\..\..\..\Users\Jimmy\Public\Share\MonoMacSource\kjpgit\MonoGame\MonoGame.Framework\MonoGame.Framework.MacOS.csproj", "{36C538E6-C32A-4A8D-A39C-566173D7118E}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "RenderTarget2D.DesktopGL", "RenderTarget2D.DesktopGL.csproj", "{7DE47032-A904-4C29-BD22-2D235E8D91BA}"
 EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "RenderTarget2D.Android", "RenderTarget2D.Android.csproj", "{DEDD20B5-8F83-46FD-AD05-8F8FCC49FCD6}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "RenderTarget2D.iOS", "RenderTarget2D.iOS.csproj", "{36C538E6-C32A-4A8D-A39C-566173D7118E}"
+EndProject
+
 Global
 	GlobalSection(SolutionConfigurationPlatforms) = preSolution
 		Debug|Any CPU = Debug|Any CPU
 		Release|Any CPU = Release|Any CPU
-		Distribution|Any CPU = Distribution|Any CPU
 	EndGlobalSection
 	GlobalSection(ProjectConfigurationPlatforms) = postSolution
+		{B3DD03E0-4DEC-45A0-A481-2CF90A51C516}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{B3DD03E0-4DEC-45A0-A481-2CF90A51C516}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{B3DD03E0-4DEC-45A0-A481-2CF90A51C516}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{B3DD03E0-4DEC-45A0-A481-2CF90A51C516}.Release|Any CPU.Build.0 = Release|Any CPU
+		{7DE47032-A904-4C29-BD22-2D235E8D91BA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{7DE47032-A904-4C29-BD22-2D235E8D91BA}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{7DE47032-A904-4C29-BD22-2D235E8D91BA}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{7DE47032-A904-4C29-BD22-2D235E8D91BA}.Release|Any CPU.Build.0 = Release|Any CPU
+		{DEDD20B5-8F83-46FD-AD05-8F8FCC49FCD6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{DEDD20B5-8F83-46FD-AD05-8F8FCC49FCD6}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{DEDD20B5-8F83-46FD-AD05-8F8FCC49FCD6}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{DEDD20B5-8F83-46FD-AD05-8F8FCC49FCD6}.Release|Any CPU.Build.0 = Release|Any CPU
 		{36C538E6-C32A-4A8D-A39C-566173D7118E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 		{36C538E6-C32A-4A8D-A39C-566173D7118E}.Debug|Any CPU.Build.0 = Debug|Any CPU
-		{36C538E6-C32A-4A8D-A39C-566173D7118E}.Distribution|Any CPU.ActiveCfg = Distribution|Any CPU
-		{36C538E6-C32A-4A8D-A39C-566173D7118E}.Distribution|Any CPU.Build.0 = Distribution|Any CPU
 		{36C538E6-C32A-4A8D-A39C-566173D7118E}.Release|Any CPU.ActiveCfg = Release|Any CPU
 		{36C538E6-C32A-4A8D-A39C-566173D7118E}.Release|Any CPU.Build.0 = Release|Any CPU
-		{973C423F-0CC0-4230-9E67-D944ED70ED19}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-		{973C423F-0CC0-4230-9E67-D944ED70ED19}.Debug|Any CPU.Build.0 = Debug|Any CPU
-		{973C423F-0CC0-4230-9E67-D944ED70ED19}.Release|Any CPU.ActiveCfg = Release|Any CPU
-		{973C423F-0CC0-4230-9E67-D944ED70ED19}.Release|Any CPU.Build.0 = Release|Any CPU
 	EndGlobalSection
-	GlobalSection(MonoDevelopProperties) = preSolution
-		StartupItem = RenderTarget2DSample.csproj
+	GlobalSection(SolutionProperties) = preSolution
+		HideSolutionNode = FALSE
 	EndGlobalSection
 EndGlobal