2024-06-05 21:19:43 +00:00
|
|
|
using System;
|
|
|
|
using MoonWorks;
|
|
|
|
using MoonWorks.Graphics;
|
|
|
|
|
|
|
|
namespace MoonWorksGraphicsTests;
|
|
|
|
|
|
|
|
class Program : Game
|
|
|
|
{
|
|
|
|
Example[] Examples =
|
|
|
|
[
|
2024-06-06 05:47:06 +00:00
|
|
|
new ClearScreenExample(),
|
|
|
|
new ClearScreen_MultiWindowExample(),
|
|
|
|
new BasicStencilExample(),
|
|
|
|
new BasicTriangleExample(),
|
|
|
|
new CompressedTexturesExample(),
|
2024-06-05 21:19:43 +00:00
|
|
|
new BasicComputeExample(),
|
2024-06-06 18:14:24 +00:00
|
|
|
new ComputeUniformsExample(),
|
2024-06-06 19:06:37 +00:00
|
|
|
new CopyTextureExample(),
|
2024-06-06 19:13:01 +00:00
|
|
|
new CubeExample(),
|
2024-06-06 20:00:14 +00:00
|
|
|
new CullFaceExample(),
|
2024-06-06 20:09:45 +00:00
|
|
|
new DepthMSAAExample(),
|
2024-06-06 20:24:11 +00:00
|
|
|
new DrawIndirectExample(),
|
2024-06-06 21:11:14 +00:00
|
|
|
new GetBufferDataExample(),
|
2024-06-06 21:19:46 +00:00
|
|
|
new InstancingAndOffsetsExample(),
|
2024-06-06 21:38:53 +00:00
|
|
|
new MSAACubeExample(),
|
2024-06-06 21:47:06 +00:00
|
|
|
new MSAAExample(),
|
2024-06-06 21:58:30 +00:00
|
|
|
new RenderTexture2DArrayExample(),
|
2024-06-06 22:03:43 +00:00
|
|
|
new RenderTexture2DExample(),
|
2024-06-06 22:11:11 +00:00
|
|
|
new RenderTextureCubeExample(),
|
2024-06-06 22:20:20 +00:00
|
|
|
new RenderTextureMipmapsExample(),
|
2024-06-06 22:28:16 +00:00
|
|
|
new StoreLoadExample(),
|
2024-06-06 22:34:15 +00:00
|
|
|
new Texture3DCopyExample(),
|
2024-06-06 22:43:24 +00:00
|
|
|
new Texture3DExample(),
|
2024-06-06 22:51:29 +00:00
|
|
|
new TexturedAnimatedQuadExample(),
|
|
|
|
new TexturedQuadExample()
|
2024-06-05 21:19:43 +00:00
|
|
|
];
|
|
|
|
|
|
|
|
int ExampleIndex = 0;
|
|
|
|
|
|
|
|
public Program(
|
|
|
|
WindowCreateInfo windowCreateInfo,
|
|
|
|
FrameLimiterSettings frameLimiterSettings,
|
|
|
|
BackendFlags preferredBackends,
|
|
|
|
int targetTimestep = 60,
|
|
|
|
bool debugMode = false
|
|
|
|
) : base(windowCreateInfo, frameLimiterSettings, preferredBackends, targetTimestep, debugMode)
|
|
|
|
{
|
2024-06-06 21:11:14 +00:00
|
|
|
Logger.LogInfo("Welcome to the MoonWorks Graphics Tests program! Press Q and E to cycle through examples!");
|
2024-06-06 05:47:06 +00:00
|
|
|
Examples[ExampleIndex].Init(MainWindow, GraphicsDevice, Inputs);
|
2024-06-05 21:19:43 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
protected override void Update(TimeSpan delta)
|
|
|
|
{
|
2024-06-06 05:47:06 +00:00
|
|
|
if (Inputs.Keyboard.IsPressed(MoonWorks.Input.KeyCode.Q))
|
2024-06-05 21:19:43 +00:00
|
|
|
{
|
|
|
|
Examples[ExampleIndex].Destroy();
|
|
|
|
|
|
|
|
ExampleIndex -= 1;
|
|
|
|
if (ExampleIndex < 0)
|
|
|
|
{
|
|
|
|
ExampleIndex = Examples.Length - 1;
|
|
|
|
}
|
|
|
|
|
2024-06-06 05:47:06 +00:00
|
|
|
Examples[ExampleIndex].Init(MainWindow, GraphicsDevice, Inputs);
|
2024-06-05 21:19:43 +00:00
|
|
|
}
|
2024-06-06 05:47:06 +00:00
|
|
|
else if (Inputs.Keyboard.IsPressed(MoonWorks.Input.KeyCode.E))
|
2024-06-05 21:19:43 +00:00
|
|
|
{
|
|
|
|
Examples[ExampleIndex].Destroy();
|
|
|
|
|
|
|
|
ExampleIndex = (ExampleIndex + 1) % Examples.Length;
|
|
|
|
|
2024-06-06 05:47:06 +00:00
|
|
|
Examples[ExampleIndex].Init(MainWindow, GraphicsDevice, Inputs);
|
2024-06-05 21:19:43 +00:00
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
Examples[ExampleIndex].Update(delta);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
protected override void Draw(double alpha)
|
|
|
|
{
|
|
|
|
Examples[ExampleIndex].Draw(alpha);
|
|
|
|
}
|
|
|
|
|
2024-06-06 19:06:37 +00:00
|
|
|
protected override void Destroy()
|
|
|
|
{
|
|
|
|
Examples[ExampleIndex].Destroy();
|
|
|
|
}
|
|
|
|
|
2024-06-05 21:19:43 +00:00
|
|
|
static void Main(string[] args)
|
|
|
|
{
|
|
|
|
var debugMode = false;
|
|
|
|
|
|
|
|
#if DEBUG
|
|
|
|
debugMode = true;
|
|
|
|
#endif
|
|
|
|
|
|
|
|
var windowCreateInfo = new WindowCreateInfo(
|
|
|
|
"MoonWorksGraphicsTests",
|
2024-06-06 05:47:06 +00:00
|
|
|
640,
|
|
|
|
480,
|
2024-06-05 21:19:43 +00:00
|
|
|
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();
|
|
|
|
}
|
|
|
|
}
|