ULRE/inc/hgl/graph/InlineGeometry.h

232 lines
7.1 KiB
C
Raw Normal View History

2019-05-24 19:28:27 +08:00
#ifndef HGL_GRAPH_INLINE_GEOMETRY_INCLUDE
#define HGL_GRAPH_INLINE_GEOMETRY_INCLUDE
#include<hgl/graph/VK.h>
2019-05-24 19:28:27 +08:00
#include<hgl/math/Vector.h>
#include<hgl/type/RectScope.h>
2023-09-29 02:59:10 +08:00
#include<hgl/type/Size2.h>
#include<hgl/color/Color4f.h>
2021-09-24 01:53:44 +08:00
#include<hgl/graph/AABB.h>
2019-05-24 19:28:27 +08:00
namespace hgl
{
namespace graph
{
class PrimitiveCreater;
namespace inline_geometry
2019-05-24 19:28:27 +08:00
{
/**
* (/)
*/
struct RectangleCreateInfo
{
RectScope2f scope;
};//struct RectangleCreateInfo
Primitive *CreateRectangle(PrimitiveCreater *pc,const RectangleCreateInfo *rci);
2019-05-24 19:28:27 +08:00
/**
*
*/
Primitive *CreateGBufferCompositionRectangle(PrimitiveCreater *pc);
2019-05-24 19:28:27 +08:00
/**
* (/线)
*/
struct RoundRectangleCreateInfo:public RectangleCreateInfo
{
float radius; ///<圆角半径
uint32_t round_per; ///<圆角精度
};//struct RoundRectangleCreateInfo:public RectangleCreateInfo
2020-10-19 22:24:00 +08:00
Primitive *CreateRoundRectangle(PrimitiveCreater *pc,const RoundRectangleCreateInfo *rci);
2020-10-19 22:24:00 +08:00
/**
*
*/
struct CircleCreateInfo
{
Vector2f center; ///<圆心坐标
Vector2f radius; ///<半径
uint field_count=8; ///<分段次数
2019-05-27 22:48:01 +08:00
bool has_color =false;
2019-05-27 22:48:01 +08:00
Vector4f center_color; ///<圆心颜色
Vector4f border_color; ///<边缘颜色
};//struct CircleCreateInfo
/**
* 2D圆形(/线)
*/
Primitive *CreateCircle(PrimitiveCreater *pc,const CircleCreateInfo *cci);
/**
2023-09-29 02:59:10 +08:00
* <br>
* XY平面上居中的网格1
*/
struct PlaneGridCreateInfo
{
2023-09-29 02:59:10 +08:00
Size2u grid_size; ///<格子数量
2019-05-27 22:48:01 +08:00
2023-09-29 02:59:10 +08:00
Size2u sub_count; ///<细分格子数量
2019-05-27 22:48:01 +08:00
uint8 lum; ///<一般线条亮度
uint8 sub_lum; ///<细分及边界线条亮度
};//struct PlaneGridCreateInfo
/**
* (线)
*/
Primitive *CreatePlaneGrid2D(PrimitiveCreater *pc,const PlaneGridCreateInfo *pgci); //创建一个平面网格(线条)
Primitive *CreatePlaneGrid3D(PrimitiveCreater *pc,const PlaneGridCreateInfo *pgci);
/**
* ()
*/
Primitive *CreatePlane(PrimitiveCreater *pc);
struct CubeCreateInfo
{
bool normal;
bool tangent;
bool tex_coord;
enum class ColorType
{
NoColor=0, ///<没有颜色
SameColor, ///<一个颜色
FaceColor, ///<每个面一个颜色(请写入6个颜色值)
VertexColor, ///<每个顶点一个颜色(请写入24个颜色值)
ENUM_CLASS_RANGE(NoColor,VertexColor)
};
ColorType color_type;
Vector4f color[24];
2021-09-24 01:53:44 +08:00
public:
2021-09-24 01:53:44 +08:00
CubeCreateInfo()
{
normal=false;
tangent=false;
tex_coord=false;
2019-05-27 22:48:01 +08:00
color_type=ColorType::NoColor;
}
};//struct CubeCreateInfo
2021-09-24 01:53:44 +08:00
/**
* ()
*/
Primitive *CreateCube(PrimitiveCreater *pc,const CubeCreateInfo *cci);
struct BoundingBoxCreateInfo
{
bool normal;
enum class ColorType
{
NoColor=0, ///<没有颜色
SameColor, ///<一个颜色
VertexColor, ///<每个顶点一个颜色(请写入8个颜色值)
ENUM_CLASS_RANGE(NoColor,VertexColor)
};
ColorType color_type;
Vector4f color[8];
public:
BoundingBoxCreateInfo()
{
normal=false;
color_type=ColorType::NoColor;
}
};//struct BoundingBoxCreateInfo
2021-09-24 01:53:44 +08:00
/**
* (线)
*/
Primitive *CreateBoundingBox(PrimitiveCreater *pc,const BoundingBoxCreateInfo *cci);
2019-06-17 20:25:44 +08:00
/**
* 0,0,01()
*/
Primitive *CreateSphere(PrimitiveCreater *,const uint numberSlices);
2019-06-17 20:25:44 +08:00
/**
* ()
*/
Primitive *CreateDome(PrimitiveCreater *pc, const uint numberSlices);
2019-06-17 20:25:44 +08:00
struct TorusCreateInfo
{
float innerRadius,
outerRadius;
2020-10-22 21:23:35 +08:00
uint numberSlices,
numberStacks;
2021-09-24 01:53:44 +08:00
Vector2f uv_scale={1.0,1.0};
};//struct TorusCreateInfo
2019-06-17 20:25:44 +08:00
/**
* ()
*/
Primitive *CreateTorus(PrimitiveCreater *pc,const TorusCreateInfo *tci);
2019-06-17 20:25:44 +08:00
struct CylinderCreateInfo
{
float halfExtend, //高度
radius; //半径
uint numberSlices;
};//struct CylinderCreateInfo
/**
* ()
*/
Primitive *CreateCylinder(PrimitiveCreater *,const CylinderCreateInfo *cci);
struct ConeCreateInfo
{
float halfExtend, //高度
radius; //半径
uint numberSlices, //圆切分精度
numberStacks; //柱高层数
};//struct ConeCreateInfo
/**
* ()
*/
Primitive *CreateCone(PrimitiveCreater *,const ConeCreateInfo *cci);
struct AxisCreateInfo
{
float size;
Color4f color[3];
public:
AxisCreateInfo()
{
size=1.0f;
color[0].Set(1,0,0,1);
color[1].Set(0,1,0,1);
color[2].Set(0,0,1,1);
}
};//struct AxisCreateInfo
/**
* 线(线)
*/
Primitive *CreateAxis(PrimitiveCreater *pc,const AxisCreateInfo *aci);
}//namespace inline_geometry
2019-05-24 19:28:27 +08:00
}//namespace graph
};//namespace hgl
#endif//HGL_GRAPH_INLINE_GEOMETRY_INCLUDE