[WIP] render gizmo_move, but model is incorrect.
This commit is contained in:
parent
28fcdb6216
commit
f2a6c61c25
@ -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
|
||||
|
@ -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
|
@ -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);
|
||||
}
|
||||
|
@ -76,6 +76,14 @@ protected:
|
||||
|
||||
public:
|
||||
|
||||
virtual void BindRenderResource(RenderResource *rr)
|
||||
{
|
||||
if(!rr)
|
||||
return;
|
||||
|
||||
rr->static_descriptor.AddUBO(mtl::SBS_ViewportInfo.name,ubo_vp_info);
|
||||
}
|
||||
|
||||
virtual ~VulkanApplicationFramework()
|
||||
{
|
||||
CloseShaderCompiler();
|
||||
@ -152,10 +160,10 @@ public:
|
||||
vp_info.Set(w,h);
|
||||
|
||||
ubo_vp_info=db->CreateUBO("Viewport",sizeof(ViewportInfo),&vp_info);
|
||||
|
||||
db->static_descriptor.AddUBO(mtl::SBS_ViewportInfo.name,ubo_vp_info);
|
||||
}
|
||||
|
||||
BindRenderResource(db);
|
||||
|
||||
return(true);
|
||||
}
|
||||
|
||||
@ -481,6 +489,15 @@ protected:
|
||||
|
||||
public:
|
||||
|
||||
virtual void BindRenderResource(RenderResource *rr) override
|
||||
{
|
||||
if(!rr)return;
|
||||
|
||||
VulkanApplicationFramework::BindRenderResource(rr);
|
||||
|
||||
rr->global_descriptor.AddUBO(mtl::SBS_CameraInfo.name,ubo_camera_info);
|
||||
}
|
||||
|
||||
virtual ~CameraAppFramework()
|
||||
{
|
||||
SAFE_CLEAR(ckc);
|
||||
@ -494,6 +511,8 @@ public:
|
||||
return(false);
|
||||
|
||||
InitCamera(w,h);
|
||||
|
||||
BindRenderResource(db);
|
||||
return(true);
|
||||
}
|
||||
|
||||
@ -516,8 +535,6 @@ public:
|
||||
RefreshCameraInfo(&camera_control->GetCameraInfo(),&vp_info,camera);
|
||||
|
||||
ubo_camera_info=db->CreateUBO("CameraInfo",sizeof(CameraInfo),&camera_control->GetCameraInfo());
|
||||
|
||||
db->global_descriptor.AddUBO(mtl::SBS_CameraInfo.name,ubo_camera_info);
|
||||
}
|
||||
|
||||
void Resize(uint w,uint h)override
|
||||
|
@ -9,19 +9,14 @@ class StaticMesh
|
||||
{
|
||||
protected:
|
||||
|
||||
RenderResource *rr;
|
||||
|
||||
SceneNode *root_node;
|
||||
|
||||
private:
|
||||
|
||||
StaticMesh(RenderResource *,SceneNode *);
|
||||
|
||||
public:
|
||||
|
||||
StaticMesh(SceneNode *);
|
||||
virtual ~StaticMesh();
|
||||
|
||||
static StaticMesh *CreateNewObject(RenderResource *,SceneNode *);
|
||||
// static StaticMesh *CreateNewObject(RenderResource *,SceneNode *);
|
||||
|
||||
public:
|
||||
|
||||
|
@ -3,27 +3,24 @@
|
||||
|
||||
VK_NAMESPACE_BEGIN
|
||||
|
||||
StaticMesh *StaticMesh::CreateNewObject(RenderResource *rr,SceneNode *node)
|
||||
//StaticMesh *StaticMesh::CreateNewObject(RenderResource *rr,SceneNode *node)
|
||||
//{
|
||||
// if(!node)
|
||||
// return(nullptr);
|
||||
//
|
||||
// if(node->IsEmpty())
|
||||
// return(nullptr);
|
||||
//
|
||||
// return(new StaticMesh(rr,node));
|
||||
//}
|
||||
|
||||
StaticMesh::StaticMesh(SceneNode *sn)
|
||||
{
|
||||
if(!node)
|
||||
return(nullptr);
|
||||
|
||||
if(node->IsEmpty())
|
||||
return(nullptr);
|
||||
|
||||
return(new StaticMesh(rr,node));
|
||||
}
|
||||
|
||||
StaticMesh::StaticMesh(RenderResource *r,SceneNode *sn)
|
||||
{
|
||||
rr=r;
|
||||
root_node=sn;
|
||||
}
|
||||
|
||||
StaticMesh::~StaticMesh()
|
||||
{
|
||||
rr->Release(this);
|
||||
|
||||
SAFE_CLEAR(root_node);
|
||||
}
|
||||
|
||||
|
@ -188,7 +188,9 @@ void DescriptorSet::Update()
|
||||
{
|
||||
if(!is_dirty)return;
|
||||
|
||||
vkUpdateDescriptorSets(device,wds_list.GetCount(),wds_list.GetData(),0,nullptr);
|
||||
if(wds_list.GetCount()>0)
|
||||
vkUpdateDescriptorSets(device,wds_list.GetCount(),wds_list.GetData(),0,nullptr);
|
||||
|
||||
is_dirty=false;
|
||||
}
|
||||
VK_NAMESPACE_END
|
||||
|
Loading…
x
Reference in New Issue
Block a user