update RenderableCreater codes

This commit is contained in:
hyzboy 2020-07-14 19:41:38 +08:00
parent 26b65b4f4e
commit 6b943e8210
4 changed files with 28 additions and 30 deletions

View File

@ -78,7 +78,7 @@ private:
return(true); 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); vulkan::Buffer *ubo=device->CreateUBO(size,data);

View File

@ -7,6 +7,9 @@ namespace hgl
{ {
namespace graph namespace graph
{ {
/**
* shader会使用这些名称
*/
namespace VertexAttribName namespace VertexAttribName
{ {
#define VAN_DEFINE(name) constexpr char name[]=#name; #define VAN_DEFINE(name) constexpr char name[]=#name;
@ -16,11 +19,24 @@ namespace hgl
VAN_DEFINE(Tangent) VAN_DEFINE(Tangent)
VAN_DEFINE(Bitangent) VAN_DEFINE(Bitangent)
VAN_DEFINE(TexCoord) VAN_DEFINE(TexCoord)
VAN_DEFINE(Metallic)
VAN_DEFINE(Specular)
VAN_DEFINE(Roughness)
VAN_DEFINE(Emission)
#undef VAN_DEFINE #undef VAN_DEFINE
}//namespace VertexAttribName }//namespace VertexAttribName
#define VAN 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: protected:
vulkan::Renderable * render_obj;
uint32 vertices_number; uint32 vertices_number;
VertexAttribBufferCreater * vabc_vertex; vulkan::IndexBuffer * ibo;
vulkan::IndexBuffer * ibo; VABCreaterMaps vabc_maps;
MapObject<AnsiString,VertexAttribBufferCreater> vabc_maps;
public: public:
RenderableCreater(SceneDB *sdb,vulkan::Material *m); RenderableCreater(SceneDB *sdb,vulkan::Material *m);
virtual ~RenderableCreater(); virtual ~RenderableCreater()=default;
virtual bool Init(const uint32 count); virtual bool Init(const uint32 count);
virtual VertexAttribBufferCreater * CreateVAB(const AnsiString &name); virtual VABCreater * 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
uint16 * CreateIBO16(uint count,const uint16 *data=nullptr); uint16 * CreateIBO16(uint count,const uint16 *data=nullptr);
uint32 * CreateIBO32(uint count,const uint32 *data=nullptr); uint32 * CreateIBO32(uint count,const uint32 *data=nullptr);

View File

@ -80,7 +80,7 @@ add_cm_library(ULRE.SceneGraph "ULRE" ${SCENE_GRAPH_HEADER}
${SG_VERTEX_SOURCE} ${SG_VERTEX_SOURCE}
${RENDERABLE_FILES} #${RENDERABLE_FILES}
${FONT_HEADER} ${FONT_HEADER}
${FONT_SOURCE}) ${FONT_SOURCE})

View File

@ -11,25 +11,17 @@ namespace hgl
mtl =m; mtl =m;
vsm =mtl->GetVertexShaderModule(); vsm =mtl->GetVertexShaderModule();
render_obj =nullptr;
vertices_number =0; vertices_number =0;
vabc_vertex =nullptr; vabc_vertex =nullptr;
ibo =nullptr; ibo =nullptr;
} }
RenderableCreater::~RenderableCreater()
{
SAFE_CLEAR(render_obj);
}
bool RenderableCreater::Init(const uint32 count) bool RenderableCreater::Init(const uint32 count)
{ {
if(count<=0)return(false); if(count<=0)return(false);
vertices_number=count; vertices_number=count;
render_obj=mtl->CreateRenderable(vertices_number);
return(true); return(true);
} }
@ -77,7 +69,13 @@ namespace hgl
if(vabc_maps.GetCount()!=si_count) if(vabc_maps.GetCount()!=si_count)
return(nullptr); 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 graph
}//namespace hgl }//namespace hgl