Refactor AppState and rendering pipeline components

Changed the `AppStateMachine` to implement `IDisposable` and `IAsyncDisposable` for better resource management.
Changed the `IAppState` interface to include asynchronous methods for state transitions.
Changed the `App` class to start the host asynchronously and added an `OnClosed` method for proper shutdown.
Changed the `EditorState` class to ensure the window closes correctly when exiting the state.
Changed the `LandingState` class to improve window activation and deactivation management.
Changed the `HostHelper` class to register `LandingWindow` and `EngineEditorWindow` as singletons for better performance.
Changed the `ScenePage` class to utilize a new interface for swap chain management.
Changed the `OpenProjectPage` and `CreateProjectPage` classes to enhance navigation handling.
Changed the `ConsoleViewModel` to improve log update handling with a new context structure.
Changed the `OpenProjectViewModel` to clear project lists when navigating away.
Changed the `EngineCore` class to start the graphics pipeline asynchronously.
Changed the `Logger` class to use a new context structure for log changes.
Added the `ICommandBuffer`, `IGraphicsDevice`, and `IRenderView` interfaces to enhance the rendering pipeline.
Changed the `DX12CommandBuffer`, `DX12GraphicsDevice`, and `DX12RenderView` classes for improved resource management and rendering efficiency.
Refactored the `Mesh` class to use a new `Vertex` structure for simplified vertex management.
Added the `TextureUtility` class for texture management utilities, including mip count calculation.
Changed the `launchSettings.json` to include a new profile for the graphics project with native debugging enabled.
Changed the `MeshBuilder` class to utilize the new `Vertex` structure for vertex creation.
This commit is contained in:
2025-06-29 11:38:29 +09:00
parent 4110c166cf
commit 8fd1222780
34 changed files with 1479 additions and 269 deletions

View File

@@ -3,9 +3,9 @@ using Ghost.Graphics.Data;
namespace Ghost.Graphics;
internal static class GraphicsPipeline
public static class GraphicsPipeline
{
public const int FRAME_COUNT = 2;
internal const int FRAME_COUNT = 2;
private static IGraphicsDevice? _graphicsDevice;
private static Thread? _renderThread;
@@ -24,7 +24,7 @@ internal static class GraphicsPipeline
}
}
public static void Initialize(GraphicsAPI api)
internal static void Initialize(GraphicsAPI api)
{
_graphicsDevice = api switch
{
@@ -43,7 +43,7 @@ internal static class GraphicsPipeline
}
}
public static void Start()
internal static void Start()
{
if (_isRunning)
{
@@ -59,13 +59,13 @@ internal static class GraphicsPipeline
_renderThread.Start();
}
public static void Stop()
internal static void Stop()
{
_isRunning = false;
_renderThread?.Join();
}
public static void Shutdown()
internal static void Shutdown()
{
Stop();