Correct draw Gizmo Rotate/Scale, OK!!

This commit is contained in:
2024-07-30 23:54:25 +08:00
parent e18a6e7a4a
commit c3a1266da6
11 changed files with 268 additions and 19 deletions

View File

@@ -15,6 +15,12 @@ VK_NAMESPACE_BEGIN
bool InitGizmoMoveStaticMesh();
void ClearGizmoMoveStaticMesh();
bool InitGizmoScaleStaticMesh();
void ClearGizmoScaleStaticMesh();
bool InitGizmoRotateStaticMesh();
void ClearGizmoRotateStaticMesh();
namespace
{
static RenderResource * gizmo_rr=nullptr;
@@ -198,7 +204,7 @@ namespace
}
{
InitGizmoRenderable(GizmoShape::Sphere,CreateSphere(gizmo_triangle.prim_creater,32),gizmo_triangle.pipeline);
InitGizmoRenderable(GizmoShape::Sphere,CreateSphere(gizmo_triangle.prim_creater,8),gizmo_triangle.pipeline);
}
{
@@ -206,8 +212,8 @@ namespace
cci.radius =1; //圆锥半径
cci.halfExtend =1; //圆锤一半高度
cci.numberSlices=32; //圆锥底部分割数
cci.numberStacks=8; //圆锥高度分割数
cci.numberSlices=16; //圆锥底部分割数
cci.numberStacks=3; //圆锥高度分割数
InitGizmoRenderable(GizmoShape::Cone,CreateCone(gizmo_triangle.prim_creater,&cci),gizmo_triangle.pipeline);
}
@@ -216,12 +222,23 @@ namespace
struct CylinderCreateInfo cci;
cci.halfExtend =1; //圆柱一半高度
cci.numberSlices=32; //圆柱底部分割数
cci.numberSlices=16; //圆柱底部分割数
cci.radius =1; //圆柱半径
InitGizmoRenderable(GizmoShape::Cylinder,CreateCylinder(gizmo_triangle.prim_creater,&cci),gizmo_triangle.pipeline);
}
{
struct TorusCreateInfo tci;
tci.innerRadius=0.975;
tci.outerRadius=1.0;
tci.numberSlices=64;
tci.numberStacks=32;
InitGizmoRenderable(GizmoShape::Torus,CreateTorus(gizmo_triangle.prim_creater,&tci),gizmo_triangle.pipeline);
}
ENUM_CLASS_FOR(GizmoShape,int,i)
{
if(!gizmo_rederable[i].prim)
@@ -252,12 +269,16 @@ bool InitGizmoResource(RenderResource *rr)
return(false);
InitGizmoMoveStaticMesh();
InitGizmoScaleStaticMesh();
InitGizmoRotateStaticMesh();
return(true);
}
void FreeGizmoResource()
{
ClearGizmoRotateStaticMesh();
ClearGizmoScaleStaticMesh();
ClearGizmoMoveStaticMesh();
for(GizmoRenderable &gr:gizmo_rederable)
@@ -295,4 +316,4 @@ StaticMesh *CreateGizmoStaticMesh(SceneNode *root_node)
return(new StaticMesh(root_node));
}
VK_NAMESPACE_END
VK_NAMESPACE_END