将platform改为使用独立的CMPlatform

This commit is contained in:
hyzboy 2019-08-23 11:17:21 +08:00
parent 01e30e0a21
commit 5972a58648
7 changed files with 10 additions and 352 deletions

3
.gitmodules vendored
View File

@ -16,3 +16,6 @@
[submodule "CMCore"]
path = CMCore
url = https://github.com/hyzboy/CMCore
[submodule "CMPlatform"]
path = CMPlatform
url = https://github.com/hyzboy/CMPlatform

@ -1 +1 @@
Subproject commit f88928d976216b21f3318fb9b1a3256ca4365b41
Subproject commit 93bacd082e14bdfb1f28f77dd281ead8d8383f2b

2
CMCore

@ -1 +1 @@
Subproject commit 5f7d37a9668746ecb063e9972e98257f6c9de3e0
Subproject commit 6c4883202b3d53c3278df953c3149acee7da0e2a

1
CMPlatform Submodule

@ -0,0 +1 @@
Subproject commit f768bbec4b0f0158c70508f93348b2d39fda15d4

View File

@ -6,36 +6,26 @@ set_property(GLOBAL PROPERTY USE_FOLDERS ON)
set(CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/CMCMakeModule)
include(vulkan)
include(math)
use_mgl(${CMAKE_CURRENT_SOURCE_DIR}/3rdpty/MathGeoLib)
include(use_cm_module)
use_cm_module(Core)
include(FindVulkan)
use_cm_module(Platform)
if(CMAKE_SYSTEM_NAME STREQUAL "Windows")
add_definitions(-DVK_USE_PLATFORM_WIN32_KHR -DWIN32_LEAN_AND_MEAN)
include_directories(${Vulkan_INCLUDE_DIRS})
include_directories(${CMAKE_CURRENT_SOURCE_DIR}/3rdpty/jsoncpp/include)
add_subdirectory(3rdpty/jsoncpp)
elseif(CMAKE_SYSTEM_NAME STREQUAL "Android")
add_definitions(-DVK_USE_PLATFORM_ANDROID_KHR)
elseif(UNIX)
add_definitions(-DVK_USE_PLATFORM_XCB_KHR)
SET(RENDER_LIBRARY xcb)
else()
message(FATAL_ERROR "Unsupported Platform!")
ENDIF()
SET(ULRE CMCore
CMPlatform
ULRE.Util
ULRE.Shader
ULRE.RenderDevice.Vulkan
ULRE.SceneGraph
ULRE.Platform
MathGeoLib
spirv-cross-core
SPIRV

View File

@ -1,207 +0,0 @@
#ifndef HGL_INPUT_DEVICE_INCLUDE
#define HGL_INPUT_DEVICE_INCLUDE
namespace hgl
{
/**
*
*/
enum MouseButton
{
mbMove =0x00000001, ///<鼠标移动了
mbLeft =0x00000002, ///<鼠标左键处于按下状态
mbMid =0x00000004, ///<鼠标中键处于按下状态
mbRight =0x00000008, ///<鼠标右键处于按下状态
mbX1 =0x00000010,
mbX2 =0x00000020,
mbShift =0x10000000, ///<Shift键处于按下状态
mbCtrl =0x20000000, ///<Ctrl键处于按下状态
};
/**
*
*/
enum KeyboardButton
{
kbBeginRange=0,
//主键盘区
kbEsc, ///<ESC
//F功能键
kbF1, ///<F1
kbF2, ///<F2
kbF3, ///<F3
kbF4, ///<F4
kbF5, ///<F5
kbF6, ///<F6
kbF7, ///<F7
kbF8, ///<F8
kbF9, ///<F9
kbF10, ///<F10
kbF11, ///<F11
kbF12, ///<F12
kbGrave, //<`号(主键盘数字键1左边的按钮)
//10个数字
kb0, ///<数字键0
kb1, ///<数字键1
kb2, ///<数字键2
kb3, ///<数字键3
kb4, ///<数字键4
kb5, ///<数字键5
kb6, ///<数字键6
kb7, ///<数字键7
kb8, ///<数字键8
kb9, ///<数字键9
kbMinus, ///< - (减号)
kbEquals, ///< = (等号)
kbBackSlash, ///< \ (反斜杠)
kbBackSpace, ///< 退格键
kbTab, ///<Tab键
kbA, ///<A
kbB, ///<B
kbC, ///<C
kbD, ///<D
kbE, ///<E
kbF, ///<F
kbG, ///<G
kbH, ///<H
kbI, ///<I
kbJ, ///<J
kbK, ///<K
kbL, ///<L
kbM, ///<M
kbN, ///<N
kbO, ///<O
kbP, ///<P
kbQ, ///<Q
kbR, ///<R
kbS, ///<S
kbT, ///<T
kbU, ///<U
kbV, ///<V
kbW, ///<W
kbX, ///<X
kbY, ///<Y
kbZ, ///<Z
kbLeftBracket, ///<[
kbRightBracket, ///<]
kbCapsLock, ///<大写锁定键
kbSemicolon, ///<; (分号)
kbApostrophe, ///<' (单引号)
kbEnter, ///<回车键
kbLeftShift, ///<左边的Shift键
kbComma, ///<, (逗号)
kbPeriod, ///<. (句号)
kbSlash, ///</ (除号)
kbRightShift, ///<右边的Shift键
kbLeftCtrl, ///<左边的Ctrl键
kbLeftOS, ///<左边的OS键(Win/Apple键)
kbLeftAlt, ///<左边的Alt键
kbSpace, ///<空格键
kbRightAlt, ///<右边的Alt键
kbRightOS, ///<右边的OS键(Win/Apple键)
kbRightMenu, ///<右边的Menu键
kbRightCtrl, ///<右边的Ctrl键
//中键盘区
kbPrintScreen, ///<打印屏幕键
kbScrollLock, ///<滚动锁定键
kbPause, ///<暂停键
kbInsert, ///<插入键
kbDelete, ///<删除键
kbHome, ///<行首键
kbEnd, ///<行尾键
kbPageUp, ///<向前翻页键
kbPageDown, ///<向后翻页键
kbUp, ///<↑光标键
kbDown, ///<↓光标键
kbLeft, ///<←光标键
kbRight, ///<→光标键
//小键盘区
kbNumLock, ///<小键盘 数字锁定键
kbNumAdd, ///<小键盘 +
kbNumSubtract, ///<小键盘 -
kbNumMultiply, ///<小键盘 *
kbNumDivide, ///<小键盘 /
kbNum0, ///<小键盘 0
kbNum1, ///<小键盘 1
kbNum2, ///<小键盘 2
kbNum3, ///<小键盘 3
kbNum4, ///<小键盘 4
kbNum5, ///<小键盘 5
kbNum6, ///<小键盘 6
kbNum7, ///<小键盘 7
kbNum8, ///<小键盘 8
kbNum9, ///<小键盘 9
kbNumDecimal, ///<小键盘 . (小数点/删除键)
kbNumEnter, ///<小键盘 回车键
kbEndRange,
kbRangeSize=kbEndRange-kbBeginRange+1
};//enum KeyboardButton
/**
*
*/
enum JoystickButton
{
jbBeginRange=0,
jbUp,
jbDown,
jbLeft,
jbRight,
jb0, jb1, jb2, jb3, jb4, jb5, jb6, jb7,
jb8, jb9, jb10, jb11, jb12, jb13, jb14, jb15,
jb16, jb17, jb18, jb19, jb20, jb21, jb22, jb23,
jb24, jb25, jb26, jb27, jb28, jb29, jb30, jb31,
jbEnd,
//DreamCast/XBOX
/* jbX=jb2,
jbY=jb3,
jbA=jb0,
jbB=jb1,
jbL=jb4,
jbR=jb5,*/
//PlayStation
jbTriangle =jb0, // 三角
jbCircle =jb1, // 圆
jbFork =jb2, // 叉
jbRectangle =jb3, // 方
jbL1 =jb6, jbL2 =jb4,
jbR1 =jb7, jbR2 =jb5,
jbSelect =jb8, jbStart =jb9,
//XBOX/XBOX360
jbXBOX, //西瓜键
jbEndRange,
jbRangeSize=jbEndRange-jbBeginRange+1
};
}//namespace hgl
#endif//HGL_INPUT_DEVICE_INCLUDE

View File

@ -1,129 +0,0 @@
#ifndef HGL_GRAPH_WINDOW_INCLUDE
#define HGL_GRAPH_WINDOW_INCLUDE
#include<hgl/type/BaseString.h>
#include<hgl/platform/InputDevice.h>
#include<hgl/graph/vulkan/VK.h>
namespace hgl
{
class Window
{
VK_NAMESPACE::Device *device;
virtual VkSurfaceKHR CreateSurface(VkInstance)=0;
protected:
uint width,height;
bool full_screen;
OSString win_name;
bool active;
bool is_close;
bool is_min;
bool key_push[kbRangeSize];
protected:
virtual bool MessageProc()=0;
virtual bool WaitMessage()=0;
public:
virtual void ProcMouseMove (int x,int y) {SafeCallEvent(OnMouseMove, (x,y));}
virtual void ProcMouseWheel (int v,int h,uint mb) {SafeCallEvent(OnMouseWheel, (v,h,mb));}
virtual void ProcMouseDown (int x,int y,uint mb) {SafeCallEvent(OnMouseDown, (x,y,mb));}
virtual void ProcMouseUp (int x,int y,uint mb) {SafeCallEvent(OnMouseUp, (x,y,mb));}
virtual void ProcMouseDblClick (int x,int y,uint mb) {SafeCallEvent(OnMouseDblClick, (x,y,mb));}
//virtual void ProcJoystickDown (uint);
//virtual void ProcJoystickPress (uint);
//virtual void ProcJoystickUp (uint);
virtual void ProcKeyDown (KeyboardButton);
virtual void ProcKeyPress (KeyboardButton kb){SafeCallEvent(OnKeyPress,(kb));}
virtual void ProcKeyUp (KeyboardButton);
virtual void ProcChar (os_char ch){SafeCallEvent(OnChar,(ch));}
virtual void ProcResize (uint,uint);
virtual void ProcActive (bool);
virtual void ProcClose ();
public:
uint GetWidth()const{return width;}
uint GetHeight()const{return height;}
public:
DefEvent(void,OnMouseMove ,(int,int));
DefEvent(void,OnMouseWheel ,(int,int,uint));
DefEvent(void,OnMouseDown ,(int,int,uint));
DefEvent(void,OnMouseUp ,(int,int,uint));
DefEvent(void,OnMouseDblClick ,(int,int,uint));
//DefEvent(void,OnJoystickDown ,(uint));
//DefEvent(void,OnJoystickPress ,(uint));
//DefEvent(void,OnJoystickUp ,(uint));
DefEvent(void,OnKeyDown ,(KeyboardButton));
DefEvent(void,OnKeyPress,(KeyboardButton));
DefEvent(void,OnKeyUp ,(KeyboardButton));
DefEvent(void,OnChar ,(os_char));
DefEvent(void,OnResize ,(uint,uint));
DefEvent(void,OnActive ,(bool));
DefEvent(void,OnClose ,());
public:
Window(const OSString &wn)
{
device=nullptr;
width=height=0;
full_screen=false;
win_name=wn;
active=false;
is_close=true;
is_min=false;
hgl_zero(key_push);
}
virtual ~Window();
virtual bool Create(uint,uint)=0;
virtual bool Create(uint,uint,uint)=0;
virtual void Close()=0;
bool IsMin()const{return is_min;}
bool IsClose()const{return is_close;}
bool IsVisible()const{return (!is_close)&&width&&height;}
virtual void SetCaption(const OSString &)=0;
virtual void Show()=0;
virtual void Hide()=0;
virtual void ToMinWindow()=0;
virtual void ToMaxWindow()=0;
virtual void SetSystemCursor(bool){}
virtual bool Update();
public:
VK_NAMESPACE::Device * CreateRenderDevice(VK_NAMESPACE::Instance *,const VK_NAMESPACE::PhysicalDevice *pd=nullptr);
void CloseRenderDevice();
};//class Window
Window *CreateRenderWindow(const OSString &win_name);
void InitNativeWindowSystem();
}//namespace hgl
#endif//HGL_GRAPH_WINDOW_INCLUDE