[WIP] StaticMesh and GizmoMove

This commit is contained in:
2024-07-28 23:34:04 +08:00
parent eef7f58575
commit f79410e434
11 changed files with 240 additions and 42 deletions

View File

@@ -43,6 +43,14 @@ namespace hgl
render_obj=nullptr;
}
const bool IsEmpty()const
{
if(render_obj)return(false);
if(SubNode.GetCount())return(false);
return(true);
}
Renderable *GetRenderable(){return render_obj;}
void SetRenderable(Renderable *);

View File

@@ -0,0 +1,26 @@
#pragma once
#include<hgl/graph/VKRenderable.h>
#include<hgl/type/SortedSets.h>
#include<hgl/graph/SceneNode.h>
VK_NAMESPACE_BEGIN
class StaticMesh
{
protected:
RenderResource *rr;
SceneNode *root_node;
private:
StaticMesh(RenderResource *,SceneNode *);
public:
virtual ~StaticMesh();
static StaticMesh *CreateNewObject(RenderResource *,SceneNode *);
};//class StaticMesh
VK_NAMESPACE_END

View File

@@ -13,6 +13,7 @@
#include<hgl/graph/VKMaterialInstance.h>
#include<hgl/graph/VKRenderable.h>
#include<hgl/graph/font/TextPrimitive.h>
#include<hgl/graph/StaticMesh.h>
#include<hgl/type/ObjectManage.h>
#include<hgl/shadergen/MaterialCreateInfo.h>
#include<hgl/graph/VKDescriptorBindingManage.h>
@@ -34,6 +35,7 @@ using PrimitiveID =int;
using RenderableID =int;
using SamplerID =int;
using TextureID =int;
using StaticMeshID =int;
class VertexAttribData;
@@ -60,6 +62,8 @@ class RenderResource
IDObjectManage<TextureID, Texture> rm_textures; ///<纹理合集
IDObjectManage<RenderableID, Renderable> rm_renderables; ///<渲染实例集合集
IDObjectManage<StaticMeshID, StaticMesh> rm_static_mesh; ///<静态网格合集
private:
void AddBuffer(const AnsiString &buf_name,DeviceBuffer *buf)
@@ -103,6 +107,7 @@ public: //添加数据到管理器如果指针为nullptr会返回-1
SamplerID Add(Sampler * s ){return rm_samplers.Add(s);}
TextureID Add(Texture * t ){return rm_textures.Add(t);}
RenderableID Add(Renderable * r ){return rm_renderables.Add(r);}
StaticMeshID Add(StaticMesh * sm ){return rm_static_mesh.Add(sm);}
public: // VAB/VAO
@@ -172,6 +177,40 @@ public: //Get
Sampler * GetSampler (const SamplerID &id){return rm_samplers.Get(id);}
Texture * GetTexture (const TextureID &id){return rm_textures.Get(id);}
Renderable * GetRenderable (const RenderableID &id){return rm_renderables.Get(id);}
StaticMesh * GetStaticMesh (const StaticMeshID &id){return rm_static_mesh.Get(id);}
public: //Release
void Release(Material * mtl ){rm_material.Release(mtl);}
void Release(MaterialInstance * mi ){rm_material_instance.Release(mi);}
void Release(DescriptorSet * ds ){rm_desc_sets.Release(ds);}
void Release(Primitive * p ){rm_primitives.Release(p);}
void Release(DeviceBuffer * buf ){rm_buffers.Release(buf);}
void Release(Sampler * s ){rm_samplers.Release(s);}
void Release(Texture * t ){rm_textures.Release(t);}
void Release(Renderable * r ){rm_renderables.Release(r);}
void Release(StaticMesh * sm ){rm_static_mesh.Release(sm);}
};//class RenderResource
/**
* 创建一个渲染资源对像<br>
* 这个函数是临时的,以后会被更好的机制替代
*/
template<typename T,typename ...ARGS>
T *CreateRRObject(RenderResource *rr,ARGS...args)
{
if(!rr)
return(nullptr);
T *obj=T::CreateNewObject(rr,args...);
if(!obj)
return(nullptr);
rr->Add(obj);
return obj;
}
VK_NAMESPACE_END
#endif//HGL_GRAPH_VULKAN_DATABASE_INCLUDE