From 250e30d73f09e9da2b5a81d0fbae63744ae12a73 Mon Sep 17 00:00:00 2001 From: chai Date: Tue, 2 Apr 2019 08:47:15 +0800 Subject: *misc --- source/libs/asura-lib-core/window/window.cpp | 50 ++++++++++++ source/libs/asura-lib-core/window/window.h | 90 ++++++++++++++++++++++ .../asura-lib-core/window/window_impl_glew.cpp | 0 .../libs/asura-lib-core/window/window_impl_glew.h | 0 .../asura-lib-core/window/window_impl_glut.cpp | 0 .../libs/asura-lib-core/window/window_impl_glut.h | 0 .../libs/asura-lib-core/window/window_impl_sdl.cpp | 0 .../libs/asura-lib-core/window/window_impl_sdl.h | 0 8 files changed, 140 insertions(+) create mode 100644 source/libs/asura-lib-core/window/window.cpp create mode 100644 source/libs/asura-lib-core/window/window.h create mode 100644 source/libs/asura-lib-core/window/window_impl_glew.cpp create mode 100644 source/libs/asura-lib-core/window/window_impl_glew.h create mode 100644 source/libs/asura-lib-core/window/window_impl_glut.cpp create mode 100644 source/libs/asura-lib-core/window/window_impl_glut.h create mode 100644 source/libs/asura-lib-core/window/window_impl_sdl.cpp create mode 100644 source/libs/asura-lib-core/window/window_impl_sdl.h (limited to 'source/libs/asura-lib-core/window') diff --git a/source/libs/asura-lib-core/window/window.cpp b/source/libs/asura-lib-core/window/window.cpp new file mode 100644 index 0000000..83a4f53 --- /dev/null +++ b/source/libs/asura-lib-core/window/window.cpp @@ -0,0 +1,50 @@ +#include "Config.h" +#include "Window.h" + +namespace AsuraEngine +{ + namespace Graphics + { + + Window::Window(WindowStyle style) + { + } + + Window::~Window() + { + + } + + void Window::SetPosition(int x, int y) + { + ASSERT(mWindowHandle); + SDL_SetWindowPosition(mWindowHandle, x, y); + } + + void Window::SetTitle(const std::string& title) + { + + } + + void Window::Show() + { + + } + + void Window::Hide() + { + + } + + void Window::SetWindowStyle(WindowStyle style) + { + + } + + void Window::SwapRenderBuffer() + { + + } + + } +} diff --git a/source/libs/asura-lib-core/window/window.h b/source/libs/asura-lib-core/window/window.h new file mode 100644 index 0000000..39db73e --- /dev/null +++ b/source/libs/asura-lib-core/window/window.h @@ -0,0 +1,90 @@ +#ifndef __ASURA_ENGINE_WINDOW_H__ +#define __ASURA_ENGINE_WINDOW_H__ + +#include +#include + +#include "../graphics/render_state.h" +#include "../graphics/render_target.h" + +namespace AsuraEngine +{ + namespace Graphics + { + + class WindowImpl; + + enum WindowStyle + { + WINDOW_STYLE_FULLSCREEN = 1 << 1, + }; + + /// + /// 游戏的单窗口,runner只需要一个窗口。不同的客户端实现此接口并手动注册到lua。编辑器不会导入此类,将会嫁接到编辑器的 + /// 虚拟窗口上。 + /// + class Window + : public RenderTarget + , public AEScripting::Portable + { + public: + + LUAX_DECL_SINGLETON(Window); + + Window(WindowStyle style); + + ~Window(); + + void SetSize(uint width, uint height); + + void SetPosition(int x, int y); + + void SetTitle(const std::string& title); + + void SetWindowStyle(WindowStyle style); + + void Show(); + + void Hide(); + + /// + /// 如果是开启双缓冲的窗口,需要交换缓冲区来展示到前台 + /// + void SwapRenderBuffer(); + + void Clear(const Color& col = Color::Black); + + void Clear(const Math::Recti& quad, const Color& col = Color::Black); + + void Draw(const Drawable* texture, const RenderState& state); + + void Draw(const Drawable* texture, const Math::Recti& quad, const RenderState& state); + + protected: + + WindowImpl* mImpl; + + LUAX_DECL_METHOD(_Show); + LUAX_DECL_METHOD(_Hide); + LUAX_DECL_METHOD(_SetResolution); + LUAX_DECL_METHOD(_SetFullScreen); + LUAX_DECL_METHOD(_SetTitle); + LUAX_DECL_METHOD(_SetWindowStyle); + LUAX_DECL_METHOD(_Clear); + LUAX_DECL_METHOD(_Draw); + LUAX_DECL_METHOD(_SwapRenderBuffer); + + }; + + using RenderWindow = Window; + + ASURA_ABSTRACT class WindowImpl + { + public: + + }; + + } +} + +#endif \ No newline at end of file diff --git a/source/libs/asura-lib-core/window/window_impl_glew.cpp b/source/libs/asura-lib-core/window/window_impl_glew.cpp new file mode 100644 index 0000000..e69de29 diff --git a/source/libs/asura-lib-core/window/window_impl_glew.h b/source/libs/asura-lib-core/window/window_impl_glew.h new file mode 100644 index 0000000..e69de29 diff --git a/source/libs/asura-lib-core/window/window_impl_glut.cpp b/source/libs/asura-lib-core/window/window_impl_glut.cpp new file mode 100644 index 0000000..e69de29 diff --git a/source/libs/asura-lib-core/window/window_impl_glut.h b/source/libs/asura-lib-core/window/window_impl_glut.h new file mode 100644 index 0000000..e69de29 diff --git a/source/libs/asura-lib-core/window/window_impl_sdl.cpp b/source/libs/asura-lib-core/window/window_impl_sdl.cpp new file mode 100644 index 0000000..e69de29 diff --git a/source/libs/asura-lib-core/window/window_impl_sdl.h b/source/libs/asura-lib-core/window/window_impl_sdl.h new file mode 100644 index 0000000..e69de29 -- cgit v1.1-26-g67d0