update RenderableCreater codes
This commit is contained in:
parent
26b65b4f4e
commit
6b943e8210
@ -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);
|
||||||
|
|
||||||
|
@ -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);
|
||||||
|
@ -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})
|
||||||
|
@ -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
|
||||||
|
Loading…
x
Reference in New Issue
Block a user