#ifndef HGL_RENDER_DEVICE_INCLUDE #define HGL_RENDER_DEVICE_INCLUDE #include #include #include namespace hgl { /** * 显示模式数据结构 */ struct VideoMode { int width; ///<宽 int height; ///<高 int bit; ///<色彩位数 int freq; ///<刷新率 int red; ///<红色位数 int green; ///<绿色位数 int blue; ///<蓝色位数 };//struct VideoMode /** * 显示屏数据结构 */ struct Display { UTF8String name; ///<显示屏名称 int width,height; ///<显示屏尺寸(单位:毫米) int x,y; ///<多显示屏时的排列位置 public: virtual const VideoMode *GetCurVideoMode()const=0; virtual const ObjectList &GetVideoModeList()const=0; }; struct WindowSetup { UTF8String Name; ///<窗口标题 // OSString IconFilename; ///<图标文件名称 // OSString CursorFilename; ///<光标文件名称 bool Edge; ///<是否显示边框 bool SysMenu; ///<是否显示系统菜单 bool Right; ///<窗口是否使用靠右风格 bool Resize; ///<窗口大小是否可调整 bool Minimize; ///<窗口是否可以最小化 bool Maximize; ///<窗口是否可以最大化 bool TopMost; ///<永远在最上面 bool AppTaskBar; ///<程序项在任务栏显示 }; /** * 渲染设备 */ struct RenderSetup { uint alpha; /// * 该类是程序与操作系统或其它系统库的访问交接模块 */ class RenderDevice:public _Object { public: RenderDevice()=default; virtual ~RenderDevice()=default; virtual const bool Init()=0; ///<初始化渲染设备 virtual const void Close()=0; ///<关闭渲染设备 virtual const UTF8String GetName()=0; ///<取得设备名称 virtual const void GetDisplayList(List &)=0; ///<取得显示屏列表 virtual const Display * GetDefaultDisplay()=0; ///<取得默认显示屏 public: virtual RenderWindow *Create(int,int,const WindowSetup *,const RenderSetup *)=0; ///<创建一个窗口渲染设备 virtual RenderWindow *Create(const Display *,const VideoMode *,const RenderSetup *)=0; ///<创建一个全屏渲染设备 };//class RenderDevice RenderDevice *CreateRenderDeviceGLFW(); ///<创建一个基于GLFW的渲染设备 }//namespace hgl #endif//HGL_RENDER_DEVICE_INCLUDE