#include "MetaCorePlatform/MetaCoreWindow.h" #include "MetaCoreRender/MetaCoreEditorViewportRenderer.h" #include "MetaCoreRender/MetaCoreRenderDevice.h" #include "MetaCoreRender/MetaCoreRenderTypes.h" #include "MetaCoreScene/MetaCoreScene.h" #include #include namespace { MetaCore::MetaCoreSceneView MetaCoreBuildPlayerSceneView() { MetaCore::MetaCoreSceneView sceneView; sceneView.CameraPosition = {0.0F, 2.5F, 6.5F}; sceneView.CameraTarget = {0.0F, 0.7F, 0.0F}; sceneView.CameraUp = {0.0F, 1.0F, 0.0F}; sceneView.VerticalFieldOfViewDegrees = 60.0F; return sceneView; } } // namespace int main(int argc, char* argv[]) { if (argc > 0) { std::filesystem::current_path(std::filesystem::path(argv[0]).parent_path()); } MetaCore::MetaCoreWindow window; if (!window.Initialize(1280, 720, "MetaCore Player")) { std::cerr << "MetaCorePlayer: window initialize failed\n"; return 1; } MetaCore::MetaCoreRenderDevice renderDevice; if (!renderDevice.Initialize(window)) { std::cerr << "MetaCorePlayer: render device initialize failed\n"; return 1; } MetaCore::MetaCoreEditorViewportRenderer viewportRenderer; if (!viewportRenderer.Initialize(renderDevice)) { std::cerr << "MetaCorePlayer: viewport renderer initialize failed\n"; return 1; } MetaCore::MetaCoreScene scene = MetaCore::MetaCoreCreateDefaultScene(); while (!window.ShouldClose()) { window.BeginFrame(); const auto [windowWidth, windowHeight] = window.GetWindowSize(); viewportRenderer.SetViewportRect(MetaCore::MetaCoreViewportRect{ 0.0F, 0.0F, static_cast(windowWidth), static_cast(windowHeight) }); viewportRenderer.RenderSceneToViewport(scene, MetaCoreBuildPlayerSceneView()); renderDevice.RenderFrame(); renderDevice.PresentFrame(); window.EndFrame(); } viewportRenderer.Shutdown(); renderDevice.Shutdown(); window.Shutdown(); return 0; }