#pragma once #include #include #include namespace n64 { struct Core; } class ParallelRDP { public: class WindowInfo { public: struct CoordinatePair { float x; float y; }; virtual CoordinatePair get_window_size() = 0; virtual ~WindowInfo() = default; }; void Init(const std::shared_ptr &, const std::shared_ptr &, const u8 *); ParallelRDP() = default; void UpdateScreen(n64::Core &, bool = true) const; void EnqueueCommand(int, const u32 *) const; void OnFullSync() const; bool IsFramerateUnlocked() const; void SetFramerateUnlocked(bool) const; std::shared_ptr wsi; std::shared_ptr command_processor; std::shared_ptr windowInfo; private: void LoadWSIPlatform(const std::shared_ptr &, const std::shared_ptr &); void DrawFullscreenTexturedQuad(Util::IntrusivePtr, Util::IntrusivePtr) const; void UpdateScreen(Util::IntrusivePtr) const; };