110 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			C#
		
	
	
			
		
		
	
	
			110 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			C#
		
	
	
using System;
 | 
						|
using MoonWorks;
 | 
						|
using MoonWorks.Graphics;
 | 
						|
 | 
						|
namespace MoonWorksGraphicsTests;
 | 
						|
 | 
						|
class Program : Game
 | 
						|
{
 | 
						|
	Example[] Examples =
 | 
						|
	[
 | 
						|
		new ClearScreenExample(),
 | 
						|
		new ClearScreen_MultiWindowExample(),
 | 
						|
		new BasicStencilExample(),
 | 
						|
		new BasicTriangleExample(),
 | 
						|
		new CompressedTexturesExample(),
 | 
						|
		new BasicComputeExample(),
 | 
						|
		new ComputeUniformsExample(),
 | 
						|
		new CopyTextureExample(),
 | 
						|
		new CubeExample(),
 | 
						|
		new CullFaceExample(),
 | 
						|
		new DepthMSAAExample(),
 | 
						|
		new DrawIndirectExample(),
 | 
						|
		new GetBufferDataExample()
 | 
						|
	];
 | 
						|
 | 
						|
	int ExampleIndex = 0;
 | 
						|
 | 
						|
    public Program(
 | 
						|
		WindowCreateInfo windowCreateInfo,
 | 
						|
		FrameLimiterSettings frameLimiterSettings,
 | 
						|
		BackendFlags preferredBackends,
 | 
						|
		int targetTimestep = 60,
 | 
						|
		bool debugMode = false
 | 
						|
	) : base(windowCreateInfo, frameLimiterSettings, preferredBackends, targetTimestep, debugMode)
 | 
						|
    {
 | 
						|
		Examples[ExampleIndex].Init(MainWindow, GraphicsDevice, Inputs);
 | 
						|
    }
 | 
						|
 | 
						|
    protected override void Update(TimeSpan delta)
 | 
						|
    {
 | 
						|
		if (Inputs.Keyboard.IsPressed(MoonWorks.Input.KeyCode.Q))
 | 
						|
		{
 | 
						|
			Examples[ExampleIndex].Destroy();
 | 
						|
 | 
						|
			ExampleIndex -= 1;
 | 
						|
			if (ExampleIndex < 0)
 | 
						|
			{
 | 
						|
				ExampleIndex = Examples.Length - 1;
 | 
						|
			}
 | 
						|
 | 
						|
			Examples[ExampleIndex].Init(MainWindow, GraphicsDevice, Inputs);
 | 
						|
		}
 | 
						|
		else if (Inputs.Keyboard.IsPressed(MoonWorks.Input.KeyCode.E))
 | 
						|
		{
 | 
						|
			Examples[ExampleIndex].Destroy();
 | 
						|
 | 
						|
			ExampleIndex = (ExampleIndex + 1) % Examples.Length;
 | 
						|
 | 
						|
			Examples[ExampleIndex].Init(MainWindow, GraphicsDevice, Inputs);
 | 
						|
		}
 | 
						|
		else
 | 
						|
		{
 | 
						|
        	Examples[ExampleIndex].Update(delta);
 | 
						|
		}
 | 
						|
    }
 | 
						|
 | 
						|
    protected override void Draw(double alpha)
 | 
						|
    {
 | 
						|
        Examples[ExampleIndex].Draw(alpha);
 | 
						|
    }
 | 
						|
 | 
						|
    protected override void Destroy()
 | 
						|
    {
 | 
						|
        Examples[ExampleIndex].Destroy();
 | 
						|
    }
 | 
						|
 | 
						|
    static void Main(string[] args)
 | 
						|
	{
 | 
						|
		var debugMode = false;
 | 
						|
 | 
						|
		#if DEBUG
 | 
						|
		debugMode = true;
 | 
						|
		#endif
 | 
						|
 | 
						|
		var windowCreateInfo = new WindowCreateInfo(
 | 
						|
			"MoonWorksGraphicsTests",
 | 
						|
			640,
 | 
						|
			480,
 | 
						|
			ScreenMode.Windowed,
 | 
						|
			SwapchainComposition.SDR,
 | 
						|
			PresentMode.VSync
 | 
						|
		);
 | 
						|
 | 
						|
		var frameLimiterSettings = new FrameLimiterSettings(
 | 
						|
			FrameLimiterMode.Capped,
 | 
						|
			60
 | 
						|
		);
 | 
						|
 | 
						|
		var game = new Program(
 | 
						|
			windowCreateInfo,
 | 
						|
			frameLimiterSettings,
 | 
						|
			BackendFlags.Vulkan | BackendFlags.D3D11 | BackendFlags.Metal,
 | 
						|
			60,
 | 
						|
			debugMode
 | 
						|
		);
 | 
						|
 | 
						|
		game.Run();
 | 
						|
	}
 | 
						|
}
 |