2019-05-24 19:28:27 +08:00
|
|
|
|
#ifndef HGL_GRAPH_INLINE_GEOMETRY_INCLUDE
|
|
|
|
|
#define HGL_GRAPH_INLINE_GEOMETRY_INCLUDE
|
|
|
|
|
|
|
|
|
|
#include<hgl/graph/vulkan/VK.h>
|
|
|
|
|
#include<hgl/math/Vector.h>
|
|
|
|
|
#include<hgl/type/RectScope.h>
|
|
|
|
|
namespace hgl
|
|
|
|
|
{
|
|
|
|
|
namespace graph
|
|
|
|
|
{
|
2019-05-27 15:15:39 +08:00
|
|
|
|
class SceneDB;
|
|
|
|
|
|
2019-05-24 19:28:27 +08:00
|
|
|
|
/**
|
|
|
|
|
* 矩形创建信息
|
|
|
|
|
*/
|
|
|
|
|
struct RectangleCreateInfo
|
|
|
|
|
{
|
|
|
|
|
RectScope2f scope;
|
2019-05-27 22:48:01 +08:00
|
|
|
|
};//struct RectangleCreateInfo
|
2019-05-24 19:28:27 +08:00
|
|
|
|
|
2019-05-27 15:15:39 +08:00
|
|
|
|
vulkan::Renderable *CreateRectangle(SceneDB *db,vulkan::Material *mtl,const RectangleCreateInfo *rci);
|
2019-05-24 19:28:27 +08:00
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 圆角矩形创建信息
|
|
|
|
|
*/
|
|
|
|
|
struct RoundRectangleCreateInfo:public RectangleCreateInfo
|
|
|
|
|
{
|
2019-05-27 22:48:01 +08:00
|
|
|
|
float radius; ///<圆角半径
|
|
|
|
|
uint32_t round_per; ///<圆角精度
|
|
|
|
|
};//struct RoundRectangleCreateInfo:public RectangleCreateInfo
|
2019-05-24 19:28:27 +08:00
|
|
|
|
|
2019-05-27 15:15:39 +08:00
|
|
|
|
vulkan::Renderable *CreateRoundRectangle(SceneDB *db,vulkan::Material *mtl,const RoundRectangleCreateInfo *rci);
|
2019-05-24 19:28:27 +08:00
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 圆形创建信息
|
|
|
|
|
*/
|
2019-05-27 22:48:01 +08:00
|
|
|
|
struct CircleCreateInfo
|
|
|
|
|
{
|
|
|
|
|
Vector2f center; ///<圆心坐标
|
|
|
|
|
Vector2f radius; ///<半径
|
|
|
|
|
uint field_count; ///<分段次数
|
|
|
|
|
};//struct CircleCreateInfo
|
|
|
|
|
|
|
|
|
|
vulkan::Renderable *CreateCircle(SceneDB *db,vulkan::Material *mtl,const CircleCreateInfo *rci);
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 平面网格创建信息
|
|
|
|
|
*/
|
|
|
|
|
struct PlaneGridCreateInfo
|
|
|
|
|
{
|
|
|
|
|
Vector3f coord[4];
|
|
|
|
|
vec2<uint> step;
|
|
|
|
|
};//struct PlaneGridCreateInfo
|
|
|
|
|
|
|
|
|
|
vulkan::Renderable *CreatePlaneGrid(SceneDB *db,vulkan::Material *mtl,const PlaneGridCreateInfo *pgci);
|
|
|
|
|
|
|
|
|
|
struct PlaneCreateInfo
|
|
|
|
|
{
|
|
|
|
|
Vector2f tile;
|
|
|
|
|
};//struct PlaneCreateInfo
|
|
|
|
|
|
|
|
|
|
vulkan::Renderable *CreatePlane(SceneDB *db,vulkan::Material *mtl,const PlaneCreateInfo *pci);
|
|
|
|
|
|
|
|
|
|
struct CubeCreateInfo
|
|
|
|
|
{
|
|
|
|
|
Vector2f tile;
|
|
|
|
|
};//struct CubeCreateInfo
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 创建一个中心坐标为0,0,0,长宽高为1的立方体
|
|
|
|
|
*/
|
|
|
|
|
vulkan::Renderable *CreateCube(SceneDB *db,vulkan::Material *mtl,const CubeCreateInfo *cci);
|
|
|
|
|
|
|
|
|
|
struct BoundingBoxCreateInfo
|
|
|
|
|
{
|
|
|
|
|
AABB bounding_box;
|
|
|
|
|
};//
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 创建一个空心立方体,使用绑定盒的真实坐标
|
|
|
|
|
*/
|
|
|
|
|
vulkan::Renderable *CreateBoundingBox(SceneDB *db,vulkan::Material *mtl,const BoundingBoxCreateInfo *bbci);
|
|
|
|
|
|
|
|
|
|
//vulkan::Renderable *CreateSphere(SceneDB *db,vulkan::Material *mtl,const uint );
|
2019-05-24 19:28:27 +08:00
|
|
|
|
}//namespace graph
|
|
|
|
|
};//namespace hgl
|
|
|
|
|
#endif//HGL_GRAPH_INLINE_GEOMETRY_INCLUDE
|