Added argument structs to make extending arguments easier in the future.

This commit is contained in:
Patrick 2024-09-14 01:03:46 +02:00
parent 4768f0a6a0
commit 853e55322c
4 changed files with 32 additions and 15 deletions

View File

@ -12,7 +12,7 @@ struct Vertex
glm::vec2 texCoord; glm::vec2 texCoord;
}; };
void TriangleWithTexcoordsApp::init(std::span<const char*> args) void TriangleWithTexcoordsApp::init(const AppInitArgs& args)
{ {
Application::init(args); Application::init(args);
@ -88,9 +88,9 @@ void TriangleWithTexcoordsApp::init(std::span<const char*> args)
uploadVertexData(mVertexBuffer, std::span(vertices.begin(), vertices.end())); uploadVertexData(mVertexBuffer, std::span(vertices.begin(), vertices.end()));
} }
void TriangleWithTexcoordsApp::update() void TriangleWithTexcoordsApp::update(const AppUpdateArgs& args)
{ {
Application::update(); Application::update(args);
sdlpp::GPUCommandBuffer cmdBuffer = mDevice.acquireCommandBuffer(); sdlpp::GPUCommandBuffer cmdBuffer = mDevice.acquireCommandBuffer();
Uint32 swapchainWidth = 0, swapchainHeight = 0; Uint32 swapchainWidth = 0, swapchainHeight = 0;

View File

@ -14,8 +14,8 @@ private:
sdlpp::GPUBuffer mVertexBuffer; sdlpp::GPUBuffer mVertexBuffer;
sdlpp::GPUGraphicsPipeline mPipeline; sdlpp::GPUGraphicsPipeline mPipeline;
public: public:
void init(std::span<const char*> args) override; void init(const AppInitArgs& args) override;
void update() override; void update(const AppUpdateArgs& args) override;
}; };
} // namespace sdl_gpu_test } // namespace sdl_gpu_test

View File

@ -6,7 +6,7 @@
namespace sdl_gpu_test namespace sdl_gpu_test
{ {
void Application::init(std::span<const char*> args) void Application::init(const AppInitArgs& args)
{ {
mWindow.create({ mWindow.create({
.title = "SDL_gpu Test", .title = "SDL_gpu Test",
@ -19,22 +19,24 @@ void Application::init(std::span<const char*> args)
}); });
mDevice.claimWindow(mWindow); mDevice.claimWindow(mWindow);
fs::path executablePath = fs::absolute(fs::path(args[0])).parent_path(); fs::path executablePath = fs::absolute(fs::path(args.programArgs[0])).parent_path();
mFileSystem.emplaceAdapter<mijin::RelativeFileSystemAdapter<mijin::OSFileSystemAdapter>>(executablePath.parent_path() / "assets"); mFileSystem.emplaceAdapter<mijin::RelativeFileSystemAdapter<mijin::OSFileSystemAdapter>>(executablePath.parent_path() / "assets");
} }
void Application::cleanup() void Application::cleanup(const AppCleanupArgs&)
{ {
} }
void Application::update() void Application::update(const AppUpdateArgs&)
{ {
} }
void Application::run(std::span<const char*> args) void Application::run(std::span<const char*> args)
{ {
init(args); init({
.programArgs = args
});
while (mRunning) while (mRunning)
{ {
std::optional<sdlpp::sdl_event_t> event; std::optional<sdlpp::sdl_event_t> event;
@ -45,9 +47,9 @@ void Application::run(std::span<const char*> args)
[](const auto&) {} // default handler [](const auto&) {} // default handler
}, *event); }, *event);
} }
update(); update({});
} }
cleanup(); cleanup({});
} }

View File

@ -14,6 +14,21 @@
namespace sdl_gpu_test namespace sdl_gpu_test
{ {
struct AppInitArgs
{
std::span<const char*> programArgs;
};
struct AppCleanupArgs
{
};
struct AppUpdateArgs
{
};
class Application class Application
{ {
protected: protected:
@ -24,9 +39,9 @@ protected:
public: public:
virtual ~Application() noexcept = default; virtual ~Application() noexcept = default;
virtual void init(std::span<const char*> args); virtual void init(const AppInitArgs& args);
virtual void cleanup(); virtual void cleanup(const AppCleanupArgs& args);
virtual void update(); virtual void update(const AppUpdateArgs& args);
void run(std::span<const char*> args); void run(std::span<const char*> args);