update RenderableCreater codes
This commit is contained in:
parent
26b65b4f4e
commit
6b943e8210
@ -78,7 +78,7 @@ private:
|
||||
return(true);
|
||||
}
|
||||
|
||||
vulkan::Buffer *CreateUBO(const UTF8String &name,const VkDeviceSize size,void *data)
|
||||
vulkan::Buffer *CreateUBO(const AnsiString &name,const VkDeviceSize size,void *data)
|
||||
{
|
||||
vulkan::Buffer *ubo=device->CreateUBO(size,data);
|
||||
|
||||
|
@ -7,6 +7,9 @@ namespace hgl
|
||||
{
|
||||
namespace graph
|
||||
{
|
||||
/**
|
||||
* 预定义一些顶点属性名称,可用可不用。但一般默认shader会使用这些名称
|
||||
*/
|
||||
namespace VertexAttribName
|
||||
{
|
||||
#define VAN_DEFINE(name) constexpr char name[]=#name;
|
||||
@ -16,11 +19,24 @@ namespace hgl
|
||||
VAN_DEFINE(Tangent)
|
||||
VAN_DEFINE(Bitangent)
|
||||
VAN_DEFINE(TexCoord)
|
||||
VAN_DEFINE(Metallic)
|
||||
VAN_DEFINE(Specular)
|
||||
VAN_DEFINE(Roughness)
|
||||
VAN_DEFINE(Emission)
|
||||
#undef VAN_DEFINE
|
||||
}//namespace VertexAttribName
|
||||
|
||||
#define VAN VertexAttribName
|
||||
|
||||
struct ShaderStageBind
|
||||
{
|
||||
AnsiString name;
|
||||
uint binding;
|
||||
VABCreater *vabc;
|
||||
};//struct ShaderStageBind
|
||||
|
||||
using VABCreaterMaps=MapObject<AnsiString,VABCreater>;
|
||||
|
||||
/**
|
||||
* 可渲染对象创建器
|
||||
*/
|
||||
@ -35,35 +51,19 @@ namespace hgl
|
||||
|
||||
protected:
|
||||
|
||||
vulkan::Renderable * render_obj;
|
||||
|
||||
uint32 vertices_number;
|
||||
|
||||
VertexAttribBufferCreater * vabc_vertex;
|
||||
vulkan::IndexBuffer * ibo;
|
||||
|
||||
MapObject<AnsiString,VertexAttribBufferCreater> vabc_maps;
|
||||
VABCreaterMaps vabc_maps;
|
||||
|
||||
public:
|
||||
|
||||
RenderableCreater(SceneDB *sdb,vulkan::Material *m);
|
||||
virtual ~RenderableCreater();
|
||||
virtual ~RenderableCreater()=default;
|
||||
|
||||
virtual bool Init(const uint32 count);
|
||||
|
||||
virtual VertexAttribBufferCreater * CreateVAB(const AnsiString &name);
|
||||
|
||||
#define PreDefineCreateVAB(name) \
|
||||
virtual VertexAttribBufferCreater * Create##name##Buffer(){return CreateVAB(VAN::name));}
|
||||
|
||||
PreDefineCreateVAB(Vertex)
|
||||
PreDefineCreateVAB(Normal)
|
||||
PreDefineCreateVAB(Color)
|
||||
PreDefineCreateVAB(Tangent)
|
||||
PreDefineCreateVAB(Bitangent)
|
||||
PreDefineCreateVAB(TexCoord)
|
||||
|
||||
#undef PreDefineCreateVAB
|
||||
virtual VABCreater * CreateVAB(const AnsiString &name);
|
||||
|
||||
uint16 * CreateIBO16(uint count,const uint16 *data=nullptr);
|
||||
uint32 * CreateIBO32(uint count,const uint32 *data=nullptr);
|
||||
|
@ -80,7 +80,7 @@ add_cm_library(ULRE.SceneGraph "ULRE" ${SCENE_GRAPH_HEADER}
|
||||
|
||||
${SG_VERTEX_SOURCE}
|
||||
|
||||
${RENDERABLE_FILES}
|
||||
#${RENDERABLE_FILES}
|
||||
|
||||
${FONT_HEADER}
|
||||
${FONT_SOURCE})
|
||||
|
@ -11,25 +11,17 @@ namespace hgl
|
||||
mtl =m;
|
||||
vsm =mtl->GetVertexShaderModule();
|
||||
|
||||
render_obj =nullptr;
|
||||
vertices_number =0;
|
||||
vabc_vertex =nullptr;
|
||||
ibo =nullptr;
|
||||
}
|
||||
|
||||
RenderableCreater::~RenderableCreater()
|
||||
{
|
||||
SAFE_CLEAR(render_obj);
|
||||
}
|
||||
|
||||
bool RenderableCreater::Init(const uint32 count)
|
||||
{
|
||||
if(count<=0)return(false);
|
||||
|
||||
vertices_number=count;
|
||||
|
||||
render_obj=mtl->CreateRenderable(vertices_number);
|
||||
|
||||
return(true);
|
||||
}
|
||||
|
||||
@ -77,7 +69,13 @@ namespace hgl
|
||||
if(vabc_maps.GetCount()!=si_count)
|
||||
return(nullptr);
|
||||
|
||||
vulkan::Renderable *render_obj=mtl->CreateRenderable(vertices_number);
|
||||
|
||||
const auto *sp=vabc_maps.GetDataList();
|
||||
for(uint i=0;i<si_count;i++)
|
||||
{
|
||||
|
||||
}
|
||||
}
|
||||
}//namespace graph
|
||||
}//namespace hgl
|
||||
|
Loading…
x
Reference in New Issue
Block a user