[WIP] render gizmo_move, but model is incorrect.

This commit is contained in:
2024-07-30 00:47:28 +08:00
parent 28fcdb6216
commit f2a6c61c25
7 changed files with 62 additions and 38 deletions

View File

@@ -29,9 +29,10 @@ enum class GizmoShape:uint
ENUM_CLASS_RANGE(Plane,Cylinder)
};
bool InitGizmoResource(GPUDevice *);
bool InitGizmoResource(RenderResource *);
void FreeGizmoResource();
StaticMesh *GetGizmoMoveStaticMesh();
VK_NAMESPACE_END

View File

@@ -84,6 +84,7 @@ namespace
mtl::Material3DCreateConfig cfg(device->GetDeviceAttribute(),"VertexLuminance3D",Prim::Lines);
cfg.mtl_name="VertexLuminance3D"; //注意必须用不同名字,未来改名材质文件名+cfg hash名
cfg.local_to_world=true;
cfg.position_format=VAT_VEC3;
mtl::MaterialCreateInfo *mci=CreateVertexLuminance3D(&cfg);
@@ -94,6 +95,8 @@ namespace
gizmo_line.mtl=gizmo_rr->CreateMaterial(mci);
if(!gizmo_line.mtl)
return(false);
gizmo_line.mtl->Update();
}
{
@@ -145,6 +148,8 @@ namespace
gizmo_triangle.mtl=gizmo_rr->CreateMaterial(mci);
if(!gizmo_triangle.mtl)
return(false);
gizmo_triangle.mtl->Update();
}
{
@@ -228,12 +233,17 @@ namespace
}
}//namespace
bool InitGizmoResource(GPUDevice *device)
bool InitGizmoResource(RenderResource *rr)
{
if(!rr)
return(false);
if(gizmo_rr)
return(false);
gizmo_rr=new RenderResource(device);
gizmo_rr=rr;
GPUDevice *device=gizmo_rr->GetDevice();
if(!InitGizmoResource3D(device))
return(false);
@@ -258,10 +268,9 @@ void FreeGizmoResource()
SAFE_CLEAR(gizmo_triangle.prim_creater);
SAFE_CLEAR(gizmo_triangle.vdm);
// SAFE_CLEAR(gizmo_pipeline_triangles);
// SAFE_CLEAR_OBJECT_ARRAY(gizmo_mi_triangles)
//SAFE_CLEAR(gizmo_mtl_triangles);
SAFE_CLEAR(gizmo_rr);
SAFE_CLEAR(gizmo_line.prim_creater);
SAFE_CLEAR(gizmo_line.vdm);
}
Renderable *GetGizmoRenderable(const GizmoShape &shape,const GizmoColor &color)
@@ -283,7 +292,7 @@ StaticMesh *CreateGizmoStaticMesh(SceneNode *root_node)
if(root_node->IsEmpty())
return(nullptr);
return CreateRRObject<StaticMesh>(gizmo_rr,root_node);
return(new StaticMesh(root_node));
}
VK_NAMESPACE_END

View File

@@ -12,7 +12,7 @@ private:
bool InitGizmo()
{
if(!InitGizmoResource(device))
if(!InitGizmoResource(db))
return(false);
sm=GetGizmoMoveStaticMesh();
@@ -34,8 +34,11 @@ public:
camera_control->SetTarget(Vector3f(0,0,0));
camera_control->Refresh();
render_root.RefreshMatrix();
render_list->Expend(sm->GetScene());
SceneNode *sn=sm->GetScene();
sn->RefreshMatrix();
render_list->Expend(sn);
return(true);
}