remove RenderablePrimitiveCreater.h, fixed auto_instance.cpp/auto_merge_material_instance.cpp examples, can RUN.
This commit is contained in:
@@ -35,10 +35,10 @@ public:
|
||||
PrimitiveCreater(VertexDataManager *);
|
||||
virtual ~PrimitiveCreater();
|
||||
|
||||
virtual bool Init(const AnsiString &name,const VkDeviceSize vertices_count,const VkDeviceSize index_count,IndexType it=IndexType::AUTO); ///<初始化,参数为顶点数量
|
||||
virtual bool Init(const AnsiString &name,const VkDeviceSize vertices_count,const VkDeviceSize index_count=0,IndexType it=IndexType::AUTO); ///<初始化,参数为顶点数量
|
||||
|
||||
void Clear(); ///<清除创建器数据
|
||||
|
||||
|
||||
public: //顶点缓冲区
|
||||
|
||||
const VkDeviceSize GetVertexCount()const{ return vertices_number; } ///<取得顶点数量
|
||||
|
@@ -5,6 +5,7 @@
|
||||
#include<hgl/graph/VKPipeline.h>
|
||||
#include<hgl/graph/VKDescriptorSet.h>
|
||||
#include<hgl/graph/VKPrimitive.h>
|
||||
#include<hgl/graph/PrimitiveCreater.h>
|
||||
#include<hgl/graph/VKBuffer.h>
|
||||
#include<hgl/graph/VKSampler.h>
|
||||
#include<hgl/graph/VKTexture.h>
|
||||
@@ -148,6 +149,7 @@ public: //Material
|
||||
MaterialInstance * CreateMaterialInstance(const mtl::MaterialCreateInfo *,const VILConfig *vil_cfg=nullptr);
|
||||
|
||||
Renderable * CreateRenderable(Primitive *r,MaterialInstance *mi,Pipeline *p);
|
||||
Renderable * CreateRenderable(PrimitiveCreater *pc,MaterialInstance *mi,Pipeline *p);
|
||||
|
||||
Sampler * CreateSampler(VkSamplerCreateInfo *sci=nullptr);
|
||||
Sampler * CreateSampler(Texture *);
|
||||
|
@@ -1,56 +0,0 @@
|
||||
#ifndef HGL_VK_RENDERABLE_PRIMITIVE_CREATER_INCLUDE
|
||||
#define HGL_VK_RENDERABLE_PRIMITIVE_CREATER_INCLUDE
|
||||
|
||||
#include<hgl/graph/VKRenderResource.h>
|
||||
|
||||
VK_NAMESPACE_BEGIN
|
||||
/**
|
||||
* 可绘制图元创建器
|
||||
*/
|
||||
class RenderablePrimitiveCreater
|
||||
{
|
||||
RenderResource *rr;
|
||||
|
||||
VkDeviceSize vertex_count;
|
||||
|
||||
Primitive *prim;
|
||||
|
||||
public:
|
||||
|
||||
RenderablePrimitiveCreater(RenderResource *_rr,const AnsiString &name,VkDeviceSize vc)
|
||||
{
|
||||
rr=_rr;
|
||||
vertex_count=vc;
|
||||
|
||||
prim=rr->CreatePrimitive(name,vertex_count);
|
||||
}
|
||||
|
||||
VAB *SetVAB(const AnsiString &name,const VkFormat &fmt,const void *buf)
|
||||
{
|
||||
VAB *vab=rr->CreateVAB(fmt,vertex_count,buf);
|
||||
|
||||
if(!vab)
|
||||
return(nullptr);
|
||||
|
||||
prim->SetVAB(name,vab);
|
||||
return(vab);
|
||||
}
|
||||
|
||||
IndexBuffer *SetIndex(const IndexType &it,const void *buf,const VkDeviceSize index_count)
|
||||
{
|
||||
IndexBuffer *ibo=rr->CreateIBO(it,index_count,buf);
|
||||
|
||||
if(!ibo)
|
||||
return(nullptr);
|
||||
|
||||
prim->SetIndex(ibo,0,index_count);
|
||||
return(ibo);
|
||||
}
|
||||
|
||||
Renderable *Create(MaterialInstance *mi,Pipeline *p)
|
||||
{
|
||||
return rr->CreateRenderable(prim,mi,p);
|
||||
}
|
||||
};//class RenderablePrimitiveCreater
|
||||
VK_NAMESPACE_END
|
||||
#endif // HGL_VK_RENDERABLE_PRIMITIVE_CREATER_INCLUDE
|
@@ -16,7 +16,7 @@ struct Material2DCreateConfig:public MaterialCreateConfig
|
||||
|
||||
public:
|
||||
|
||||
Material2DCreateConfig(const GPUDeviceAttribute *da,const AnsiString &name,const bool &mi,const Prim &p):MaterialCreateConfig(da,name,mi,p)
|
||||
Material2DCreateConfig(const GPUDeviceAttribute *da,const AnsiString &name,const Prim &p):MaterialCreateConfig(da,name,p)
|
||||
{
|
||||
rt_output.color=1; //输出一个颜色
|
||||
rt_output.depth=false; //不输出深度
|
||||
@@ -45,7 +45,7 @@ public:
|
||||
if(off)return off;
|
||||
|
||||
off=position_format.Comp(cfg.position_format);
|
||||
|
||||
|
||||
return off;
|
||||
}
|
||||
|
||||
|
@@ -17,7 +17,7 @@ struct Material3DCreateConfig:public MaterialCreateConfig
|
||||
|
||||
public:
|
||||
|
||||
Material3DCreateConfig(const GPUDeviceAttribute *da,const AnsiString &name,const bool &mi,const Prim &p):MaterialCreateConfig(da,name,mi,p)
|
||||
Material3DCreateConfig(const GPUDeviceAttribute *da,const AnsiString &name,const Prim &p):MaterialCreateConfig(da,name,p)
|
||||
{
|
||||
rt_output.color=1; //输出一个颜色
|
||||
rt_output.depth=true; //不输出深度
|
||||
|
@@ -29,32 +29,35 @@ struct MaterialCreateConfig
|
||||
|
||||
public:
|
||||
|
||||
MaterialCreateConfig(const GPUDeviceAttribute *da,const AnsiString &name,const bool mi,const Prim &p)
|
||||
MaterialCreateConfig(const GPUDeviceAttribute *da,const AnsiString &name,const Prim &p)
|
||||
{
|
||||
dev_attr=da;
|
||||
|
||||
mtl_name=name;
|
||||
|
||||
material_instance=mi;
|
||||
material_instance=false;
|
||||
|
||||
shader_stage_flag_bit=VK_SHADER_STAGE_VERTEX_BIT|VK_SHADER_STAGE_FRAGMENT_BIT;
|
||||
|
||||
prim=p;
|
||||
}
|
||||
|
||||
int Comp(const MaterialCreateConfig &cfg)const
|
||||
virtual int Comp(const MaterialCreateConfig &cfg)const
|
||||
{
|
||||
int off;
|
||||
|
||||
off=material_instance-cfg.material_instance;
|
||||
if(off)return(off);
|
||||
|
||||
off=hgl_cmp(rt_output,cfg.rt_output);
|
||||
|
||||
if(off)return(off);
|
||||
|
||||
off=(int)prim-(int)cfg.prim;
|
||||
|
||||
if(off)return(off);
|
||||
|
||||
return shader_stage_flag_bit-cfg.shader_stage_flag_bit;
|
||||
off=shader_stage_flag_bit-cfg.shader_stage_flag_bit;
|
||||
|
||||
return off;
|
||||
}
|
||||
|
||||
CompOperator(const MaterialCreateConfig &,Comp)
|
||||
|
Reference in New Issue
Block a user