Orange/include/Orange/Render/Window.h

39 lines
845 B
C++

#pragma once
#include <Orange/Core/Result.h>
#include <Orange/Core/Array.h>
#include <Orange/Render/Input.h>
#include <vulkan/vulkan_core.h>
struct SDL_Window;
namespace orange
{
class Window
{
public:
~Window();
static bool GetInstanceExtensions(Window& window, uint32_t *count, const char **extensions);
Result<VkSurfaceKHR> CreateSurface(VkInstance instance);
static const char* GetError();
static Result<Window> Create();
bool Update(Input::InputHandler& handler);
void EnableRelativeMouse(bool relative);
void SetTitle(const char* title);
protected:
friend Result<Window>;
Window(SDL_Window* window);
private:
SDL_Window* m_window = nullptr;
bool m_relativeMouse = false;
bool m_hasFocus = false;
};
}