renamed to VertexInputLayout instead of VertexAttributeBinding
This commit is contained in:
parent
bb3b06f168
commit
cd2f278e84
@ -1 +1 @@
|
||||
Subproject commit 6682f0050a0ac5614f6c3f401a64289477eafb04
|
||||
Subproject commit fba5b2deea8784703ccdf7f6c18056178daefc3c
|
@ -54,15 +54,15 @@ private:
|
||||
bool InitMaterial()
|
||||
{
|
||||
//2D渲染Position坐标全部是使用整数,这里强制要求Position输入流使用RGBA16I格式
|
||||
VABConfigInfo vab_config;
|
||||
VILConfig vil_config;
|
||||
VAConfig va_cfg;
|
||||
|
||||
va_cfg.format=VF_V4I16;
|
||||
va_cfg.instance=false;
|
||||
|
||||
vab_config.Add("Position",va_cfg);
|
||||
vil_config.Add("Position",va_cfg);
|
||||
|
||||
material_instance=db->CreateMaterialInstance(OS_TEXT("res/material/RoundedBox"),&vab_config);
|
||||
material_instance=db->CreateMaterialInstance(OS_TEXT("res/material/RoundedBox"),&vil_config);
|
||||
if(!material_instance)
|
||||
return(false);
|
||||
|
||||
|
@ -81,7 +81,7 @@ private:
|
||||
|
||||
bool InitScene()
|
||||
{
|
||||
ro_sphere=inline_geometry::CreateSphere(db,material_instance->GetVAB(),128);
|
||||
ro_sphere=inline_geometry::CreateSphere(db,material_instance->GetVIL(),128);
|
||||
|
||||
render_root.CreateSubNode(scale(100),db->CreateRenderable(ro_sphere,material_instance,pipeline_solid));
|
||||
|
||||
|
@ -128,17 +128,17 @@ private:
|
||||
|
||||
aci.size=GetCameraInfo().zfar;
|
||||
|
||||
ro_axis=CreateAxis(db,axis_mi->GetVAB(),&aci);
|
||||
ro_axis=CreateAxis(db,axis_mi->GetVIL(),&aci);
|
||||
}
|
||||
|
||||
{
|
||||
struct CubeCreateInfo cci;
|
||||
|
||||
ro_cube=CreateCube(db,sky_mi->GetVAB(),&cci);
|
||||
ro_cube=CreateCube(db,sky_mi->GetVIL(),&cci);
|
||||
}
|
||||
|
||||
{
|
||||
ro_sphere=CreateSphere(db,envmap_mi->GetVAB(),64);
|
||||
ro_sphere=CreateSphere(db,envmap_mi->GetVIL(),64);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -339,22 +339,22 @@ private:
|
||||
return(true);
|
||||
}
|
||||
|
||||
void CreateRenderObject(const VAB *vab)
|
||||
void CreateRenderObject(const VIL *vil)
|
||||
{
|
||||
using namespace inline_geometry;
|
||||
|
||||
{
|
||||
struct PlaneCreateInfo pci;
|
||||
ro_plane=CreatePlane(db,vab,&pci);
|
||||
ro_plane=CreatePlane(db,vil,&pci);
|
||||
}
|
||||
|
||||
{
|
||||
struct CubeCreateInfo cci;
|
||||
ro_cube=CreateCube(db,vab,&cci);
|
||||
ro_cube=CreateCube(db,vil,&cci);
|
||||
}
|
||||
|
||||
{
|
||||
ro_sphere=CreateSphere(db,vab,64);
|
||||
ro_sphere=CreateSphere(db,vil,64);
|
||||
}
|
||||
|
||||
{
|
||||
@ -369,7 +369,7 @@ private:
|
||||
tci.uv_scale.x=4;
|
||||
tci.uv_scale.y=1;
|
||||
|
||||
ro_torus=CreateTorus(db,vab,&tci);
|
||||
ro_torus=CreateTorus(db,vil,&tci);
|
||||
}
|
||||
|
||||
{
|
||||
@ -379,7 +379,7 @@ private:
|
||||
cci.radius=10;
|
||||
cci.numberSlices=32;
|
||||
|
||||
ro_cylinder=CreateCylinder(db,vab,&cci);
|
||||
ro_cylinder=CreateCylinder(db,vil,&cci);
|
||||
}
|
||||
|
||||
{
|
||||
@ -390,13 +390,13 @@ private:
|
||||
cci.numberSlices=128;
|
||||
cci.numberStacks=32;
|
||||
|
||||
ro_cone=CreateCone(db,vab,&cci);
|
||||
ro_cone=CreateCone(db,vil,&cci);
|
||||
}
|
||||
}
|
||||
|
||||
bool InitCompositionRenderable()
|
||||
{
|
||||
ro_gbc_plane=inline_geometry::CreateGBufferCompositionRectangle(db,sp_composition.material_instance->GetVAB());
|
||||
ro_gbc_plane=inline_geometry::CreateGBufferCompositionRectangle(db,sp_composition.material_instance->GetVIL());
|
||||
if(!ro_gbc_plane)return(false);
|
||||
|
||||
ro_gbc_plane_ri=db->CreateRenderable(ro_gbc_plane,sp_composition.material_instance,sp_composition.pipeline_fan);
|
||||
@ -407,7 +407,7 @@ private:
|
||||
|
||||
bool InitScene(SubpassParam *sp)
|
||||
{
|
||||
CreateRenderObject(sp->material_instance->GetVAB());
|
||||
CreateRenderObject(sp->material_instance->GetVIL());
|
||||
render_root.CreateSubNode( scale(100,100,1), db->CreateRenderable(ro_plane ,sp->material_instance,sp->pipeline_fan ));
|
||||
render_root.CreateSubNode( db->CreateRenderable(ro_torus ,sp->material_instance,sp->pipeline_triangles));
|
||||
render_root.CreateSubNode( scale(20,20,20), db->CreateRenderable(ro_sphere ,sp->material_instance,sp->pipeline_triangles));
|
||||
|
@ -64,7 +64,7 @@ private:
|
||||
|
||||
void CreateRenderObject()
|
||||
{
|
||||
ro_sphere=inline_geometry::CreateSphere(db,envmap_mi->GetVAB(),128);
|
||||
ro_sphere=inline_geometry::CreateSphere(db,envmap_mi->GetVIL(),128);
|
||||
}
|
||||
|
||||
bool InitUBO()
|
||||
|
@ -76,18 +76,18 @@ private:
|
||||
pgci.color.Set(0.5,0,0,1);
|
||||
pgci.side_color.Set(1,0,0,1);
|
||||
|
||||
const VAB *vab=material_instance->GetVAB();
|
||||
const VIL *vil=material_instance->GetVIL();
|
||||
|
||||
ro_plane_grid[0]=CreatePlaneGrid(db,vab,&pgci);
|
||||
ro_plane_grid[0]=CreatePlaneGrid(db,vil,&pgci);
|
||||
|
||||
pgci.color.Set(0,0.5,0,1);
|
||||
pgci.side_color.Set(0,1,0,1);
|
||||
|
||||
ro_plane_grid[1]=CreatePlaneGrid(db,vab,&pgci);
|
||||
ro_plane_grid[1]=CreatePlaneGrid(db,vil,&pgci);
|
||||
|
||||
pgci.color.Set(0,0,0.5,1);
|
||||
pgci.side_color.Set(0,0,1,1);
|
||||
ro_plane_grid[2]=CreatePlaneGrid(db,vab,&pgci);
|
||||
ro_plane_grid[2]=CreatePlaneGrid(db,vil,&pgci);
|
||||
}
|
||||
|
||||
bool InitScene()
|
||||
|
@ -154,10 +154,10 @@ private:
|
||||
|
||||
aci.size=200;
|
||||
|
||||
ro_axis=CreateAxis(db,axis_mi->GetVAB(),&aci);
|
||||
ro_axis=CreateAxis(db,axis_mi->GetVIL(),&aci);
|
||||
}
|
||||
|
||||
const VAB *vab=material_instance->GetVAB();
|
||||
const VIL *vil=material_instance->GetVIL();
|
||||
|
||||
{
|
||||
struct CubeCreateInfo cci;
|
||||
@ -166,11 +166,11 @@ private:
|
||||
cci.tex_coord=true;
|
||||
cci.color_type=CubeCreateInfo::ColorType::SameColor;
|
||||
cci.color[0]=Vector4f(1,1,1,1);
|
||||
ro_cube=CreateCube(db,vab,&cci);
|
||||
ro_cube=CreateCube(db,vil,&cci);
|
||||
}
|
||||
|
||||
{
|
||||
ro_sphere=CreateSphere(db,vab,64);
|
||||
ro_sphere=CreateSphere(db,vil,64);
|
||||
}
|
||||
|
||||
{
|
||||
@ -185,7 +185,7 @@ private:
|
||||
tci.uv_scale.x=4;
|
||||
tci.uv_scale.y=1;
|
||||
|
||||
ro_torus=CreateTorus(db,vab,&tci);
|
||||
ro_torus=CreateTorus(db,vil,&tci);
|
||||
}
|
||||
|
||||
{
|
||||
@ -195,7 +195,7 @@ private:
|
||||
cci.radius=10;
|
||||
cci.numberSlices=32;
|
||||
|
||||
ro_cylinder=CreateCylinder(db,vab,&cci);
|
||||
ro_cylinder=CreateCylinder(db,vil,&cci);
|
||||
}
|
||||
|
||||
{
|
||||
@ -206,7 +206,7 @@ private:
|
||||
cci.numberSlices=128;
|
||||
cci.numberStacks=32;
|
||||
|
||||
ro_cone=CreateCone(db,vab,&cci);
|
||||
ro_cone=CreateCone(db,vil,&cci);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -107,7 +107,7 @@ public:
|
||||
cci.center_color=Vector4f(1,1,1,1);
|
||||
cci.border_color=Vector4f(1,1,1,0);
|
||||
|
||||
Primitive *primitive=CreateCircle(db,os.material_instance->GetVAB(),&cci);
|
||||
Primitive *primitive=CreateCircle(db,os.material_instance->GetVIL(),&cci);
|
||||
if(!primitive)return(false);
|
||||
|
||||
os.renderable=db->CreateRenderable(primitive,os.material_instance,os.pipeline);
|
||||
@ -145,7 +145,7 @@ public:
|
||||
|
||||
cci.tex_coord=true;
|
||||
|
||||
Primitive *primitive=CreateCube(db,cube.material_instance->GetVAB(),&cci);
|
||||
Primitive *primitive=CreateCube(db,cube.material_instance->GetVIL(),&cci);
|
||||
if(!primitive)return(false);
|
||||
|
||||
cube.renderable=db->CreateRenderable(primitive,cube.material_instance,cube.pipeline);
|
||||
|
@ -97,9 +97,9 @@ private:
|
||||
pgci.color.Set(0.25,0,0,1);
|
||||
pgci.side_color.Set(1,0,0,1);
|
||||
|
||||
const VAB *vab=material_instance->GetVAB();
|
||||
const VIL *vil=material_instance->GetVIL();
|
||||
|
||||
ro_plane_grid=CreatePlaneGrid(db,vab,&pgci);
|
||||
ro_plane_grid=CreatePlaneGrid(db,vil,&pgci);
|
||||
}
|
||||
|
||||
{
|
||||
|
@ -67,7 +67,7 @@ private:
|
||||
|
||||
void CreateRenderObject()
|
||||
{
|
||||
primitive=inline_geometry::CreateSphere(db,material_instance->GetVAB(),40);
|
||||
primitive=inline_geometry::CreateSphere(db,material_instance->GetVIL(),40);
|
||||
}
|
||||
|
||||
bool InitUBO()
|
||||
|
@ -88,9 +88,9 @@ private:
|
||||
|
||||
void CreateRenderObject()
|
||||
{
|
||||
const VAB *vab=material_instance->GetVAB();
|
||||
const VIL *vil=material_instance->GetVIL();
|
||||
|
||||
ro_skyphere=inline_geometry::CreateDome(db,vab,64);
|
||||
ro_skyphere=inline_geometry::CreateDome(db,vil,64);
|
||||
}
|
||||
|
||||
bool InitScene()
|
||||
|
@ -28,7 +28,7 @@ constexpr uint32_t SCREEN_HEIGHT=720;
|
||||
/**
|
||||
* 创建一个地形网格
|
||||
*/
|
||||
Primitive *CreateRenderableTerrain(RenderResource *db,const VAB *vab,const TerrainCreateInfo *tci)
|
||||
Primitive *CreateRenderableTerrain(RenderResource *db,const VIL *vil,const TerrainCreateInfo *tci)
|
||||
{
|
||||
}
|
||||
|
||||
@ -95,9 +95,9 @@ private:
|
||||
pgci.color.Set(0.75,0.75,0.75);
|
||||
pgci.side_color.Set(1,0,0,1);
|
||||
|
||||
const VAB *vab=material_instance->GetVAB();
|
||||
const VIL *vil=material_instance->GetVIL();
|
||||
|
||||
renderable=CreatePlaneGrid(db,vab,&pgci);
|
||||
renderable=CreatePlaneGrid(db,vil,&pgci);
|
||||
}
|
||||
|
||||
bool InitScene()
|
||||
|
@ -20,12 +20,12 @@ namespace hgl
|
||||
RectScope2f scope;
|
||||
};//struct RectangleCreateInfo
|
||||
|
||||
Primitive *CreateRectangle(RenderResource *db,const VAB *vab,const RectangleCreateInfo *rci);
|
||||
Primitive *CreateRectangle(RenderResource *db,const VIL *vil,const RectangleCreateInfo *rci);
|
||||
|
||||
/**
|
||||
* 创建延迟渲染用全屏平面
|
||||
*/
|
||||
Primitive *CreateGBufferCompositionRectangle(RenderResource *db,const VAB *vab);
|
||||
Primitive *CreateGBufferCompositionRectangle(RenderResource *db,const VIL *vil);
|
||||
|
||||
/**
|
||||
* 圆角矩形创建信息(扇形/线圈)
|
||||
@ -36,7 +36,7 @@ namespace hgl
|
||||
uint32_t round_per; ///<圆角精度
|
||||
};//struct RoundRectangleCreateInfo:public RectangleCreateInfo
|
||||
|
||||
Primitive *CreateRoundRectangle(RenderResource *db,const VAB *vab,const RoundRectangleCreateInfo *rci);
|
||||
Primitive *CreateRoundRectangle(RenderResource *db,const VIL *vil,const RoundRectangleCreateInfo *rci);
|
||||
|
||||
/**
|
||||
* 圆形创建信息
|
||||
@ -56,7 +56,7 @@ namespace hgl
|
||||
/**
|
||||
* 创建一个2D圆形(扇形/线圈)
|
||||
*/
|
||||
Primitive *CreateCircle(RenderResource *db,const VAB *vab,const CircleCreateInfo *cci);
|
||||
Primitive *CreateCircle(RenderResource *db,const VIL *vil,const CircleCreateInfo *cci);
|
||||
|
||||
/**
|
||||
* 平面网格创建信息
|
||||
@ -75,7 +75,7 @@ namespace hgl
|
||||
/**
|
||||
* 创建一个平面网格(线条)
|
||||
*/
|
||||
Primitive *CreatePlaneGrid(RenderResource *db,const VAB *vab,const PlaneGridCreateInfo *pgci);
|
||||
Primitive *CreatePlaneGrid(RenderResource *db,const VIL *vil,const PlaneGridCreateInfo *pgci);
|
||||
|
||||
struct PlaneCreateInfo
|
||||
{
|
||||
@ -93,7 +93,7 @@ namespace hgl
|
||||
/**
|
||||
* 创建一个平面(三角形)
|
||||
*/
|
||||
Primitive *CreatePlane(RenderResource *db,const VAB *vab,const PlaneCreateInfo *pci);
|
||||
Primitive *CreatePlane(RenderResource *db,const VIL *vil,const PlaneCreateInfo *pci);
|
||||
|
||||
struct CubeCreateInfo
|
||||
{
|
||||
@ -129,7 +129,7 @@ namespace hgl
|
||||
/**
|
||||
* 创建一个立方体(三角形)
|
||||
*/
|
||||
Primitive *CreateCube(RenderResource *db,const VAB *vab,const CubeCreateInfo *cci);
|
||||
Primitive *CreateCube(RenderResource *db,const VIL *vil,const CubeCreateInfo *cci);
|
||||
|
||||
struct BoundingBoxCreateInfo
|
||||
{
|
||||
@ -160,17 +160,17 @@ namespace hgl
|
||||
/**
|
||||
* 创建一个绑定盒(线条)
|
||||
*/
|
||||
Primitive *CreateBoundingBox(RenderResource *db,const VAB *vab,const BoundingBoxCreateInfo *cci);
|
||||
Primitive *CreateBoundingBox(RenderResource *db,const VIL *vil,const BoundingBoxCreateInfo *cci);
|
||||
|
||||
/**
|
||||
* 创建一个球心坐标为0,0,0,半径为1的球体(三角形)
|
||||
*/
|
||||
Primitive *CreateSphere(RenderResource *db,const VAB *vab,const uint numberSlices);
|
||||
Primitive *CreateSphere(RenderResource *db,const VIL *vil,const uint numberSlices);
|
||||
|
||||
/**
|
||||
* 创建一个穹顶(三角形)
|
||||
*/
|
||||
Primitive *CreateDome(RenderResource *db,const VAB *vab, const uint numberSlices);
|
||||
Primitive *CreateDome(RenderResource *db,const VIL *vil, const uint numberSlices);
|
||||
|
||||
struct TorusCreateInfo
|
||||
{
|
||||
@ -186,7 +186,7 @@ namespace hgl
|
||||
/**
|
||||
* 创建一个圆环(三角形)
|
||||
*/
|
||||
Primitive *CreateTorus(RenderResource *db,const VAB *vab,const TorusCreateInfo *tci);
|
||||
Primitive *CreateTorus(RenderResource *db,const VIL *vil,const TorusCreateInfo *tci);
|
||||
|
||||
struct CylinderCreateInfo
|
||||
{
|
||||
@ -198,7 +198,7 @@ namespace hgl
|
||||
/**
|
||||
* 创建一个圆柱(三角形)
|
||||
*/
|
||||
Primitive *CreateCylinder(RenderResource *db,const VAB *vab,const CylinderCreateInfo *cci);
|
||||
Primitive *CreateCylinder(RenderResource *db,const VIL *vil,const CylinderCreateInfo *cci);
|
||||
|
||||
struct ConeCreateInfo
|
||||
{
|
||||
@ -211,7 +211,7 @@ namespace hgl
|
||||
/**
|
||||
* 创建一个圆锥(三角形)
|
||||
*/
|
||||
Primitive *CreateCone(RenderResource *db,const VAB *vab,const ConeCreateInfo *cci);
|
||||
Primitive *CreateCone(RenderResource *db,const VIL *vil,const ConeCreateInfo *cci);
|
||||
|
||||
struct AxisCreateInfo
|
||||
{
|
||||
@ -232,7 +232,7 @@ namespace hgl
|
||||
/**
|
||||
* 创建一个坐标线(线条)
|
||||
*/
|
||||
Primitive *CreateAxis(RenderResource *db,const VAB *vab,const AxisCreateInfo *aci);
|
||||
Primitive *CreateAxis(RenderResource *db,const VIL *vil,const AxisCreateInfo *aci);
|
||||
}//namespace inline_geometry
|
||||
}//namespace graph
|
||||
};//namespace hgl
|
||||
|
@ -35,7 +35,7 @@ namespace hgl
|
||||
RenderResource *db;
|
||||
Material *mtl;
|
||||
|
||||
const VAB *vab;
|
||||
const VIL *vil;
|
||||
|
||||
protected:
|
||||
|
||||
@ -46,7 +46,7 @@ namespace hgl
|
||||
|
||||
public:
|
||||
|
||||
PrimitiveCreater(RenderResource *sdb,const VAB *);
|
||||
PrimitiveCreater(RenderResource *sdb,const VIL *);
|
||||
virtual ~PrimitiveCreater()=default;
|
||||
|
||||
virtual bool Init(const uint32 vertices_count); ///<初始化,参数为顶点数量
|
||||
@ -56,7 +56,7 @@ namespace hgl
|
||||
template<typename T>
|
||||
T * CreateVADA(const AnsiString &name) ///<创建一个顶点属性缓冲区以及访问器
|
||||
{
|
||||
const VkFormat format=vab->GetFormat(name);
|
||||
const VkFormat format=vil->GetFormat(name);
|
||||
|
||||
if(format!=T::GetVulkanFormat())
|
||||
return(nullptr);
|
||||
@ -78,7 +78,7 @@ namespace hgl
|
||||
uint16 * CreateIBO16(uint count,const uint16 *data=nullptr); ///<创建16位的索引缓冲区
|
||||
uint32 * CreateIBO32(uint count,const uint32 *data=nullptr); ///<创建32位的索引缓冲区
|
||||
|
||||
virtual Primitive * Finish(); ///<结束并创建可渲染对象
|
||||
virtual Primitive * Finish(); ///<结束并创建可渲染对象
|
||||
};//class PrimitiveCreater
|
||||
}//namespace graph
|
||||
}//namespace hgl
|
||||
|
@ -125,10 +125,10 @@ public:
|
||||
CompOperatorMemcmp(const VAConfig &);
|
||||
};
|
||||
|
||||
using VABConfigInfo=Map<AnsiString,VAConfig>;
|
||||
using VILConfig=Map<AnsiString,VAConfig>;
|
||||
|
||||
class VertexAttributeBinding;
|
||||
using VAB=VertexAttributeBinding;
|
||||
class VertexInputLayout;
|
||||
using VIL=VertexInputLayout;
|
||||
|
||||
class Primitive;
|
||||
class Renderable;
|
||||
|
@ -229,7 +229,7 @@ public: //shader & material
|
||||
Material *CreateMaterial(const UTF8String &mtl_name,const VertexShaderModule *vertex_shader_module,const ShaderModule *fragment_shader_module,MaterialDescriptorSets *);
|
||||
Material *CreateMaterial(const UTF8String &mtl_name,const VertexShaderModule *vertex_shader_module,const ShaderModule *geometry_shader_module,const ShaderModule *fragment_shader_module,MaterialDescriptorSets *);
|
||||
|
||||
MaterialInstance *CreateMI(Material *,const VABConfigInfo *vab_cfg=nullptr);
|
||||
MaterialInstance *CreateMI(Material *,const VILConfig *vil_cfg=nullptr);
|
||||
|
||||
public: //Command Buffer 相关
|
||||
|
||||
|
@ -8,7 +8,7 @@ class MaterialInstance
|
||||
{
|
||||
Material *material;
|
||||
|
||||
VAB *vab;
|
||||
VIL *vil;
|
||||
|
||||
MaterialParameters *mp_value;
|
||||
|
||||
@ -16,7 +16,7 @@ private:
|
||||
|
||||
friend class GPUDevice;
|
||||
|
||||
MaterialInstance(Material *,VAB *,MaterialParameters *);
|
||||
MaterialInstance(Material *,VIL *,MaterialParameters *);
|
||||
|
||||
public:
|
||||
|
||||
@ -24,7 +24,7 @@ public:
|
||||
|
||||
Material *GetMaterial(){return material;}
|
||||
|
||||
const VAB *GetVAB()const{return vab;}
|
||||
const VIL *GetVIL()const{return vil;}
|
||||
MaterialParameters *GetMP(){return mp_value;}
|
||||
MaterialParameters *GetMP(const DescriptorSetsType &type);
|
||||
|
||||
|
@ -25,7 +25,7 @@ protected:
|
||||
|
||||
ObjectList<Pipeline> pipeline_list;
|
||||
|
||||
Pipeline *CreatePipeline(Material *,PipelineData *,const VAB *);
|
||||
Pipeline *CreatePipeline(Material *,PipelineData *,const VIL *);
|
||||
|
||||
private:
|
||||
|
||||
|
@ -90,8 +90,8 @@ public: //Material
|
||||
const ShaderModule *CreateShaderModule(const OSString &filename,ShaderResource *shader_resource);
|
||||
|
||||
Material * CreateMaterial(const OSString &);
|
||||
MaterialInstance * CreateMaterialInstance(Material *,const VABConfigInfo *vab_cfg=nullptr);
|
||||
MaterialInstance * CreateMaterialInstance(const OSString &,const VABConfigInfo *vab_cfg=nullptr);
|
||||
MaterialInstance * CreateMaterialInstance(Material *,const VILConfig *vil_cfg=nullptr);
|
||||
MaterialInstance * CreateMaterialInstance(const OSString &,const VILConfig *vil_cfg=nullptr);
|
||||
|
||||
Primitive * CreatePrimitive(const uint32_t vertex_count=0);
|
||||
|
||||
|
@ -62,7 +62,7 @@ class VertexShaderModule:public ShaderModule
|
||||
|
||||
private:
|
||||
|
||||
SortedSets<VAB *> vab_sets;
|
||||
SortedSets<VIL *> vil_sets;
|
||||
|
||||
public:
|
||||
|
||||
@ -87,9 +87,9 @@ public:
|
||||
|
||||
public:
|
||||
|
||||
VAB * CreateVAB(const VABConfigInfo *format_map=nullptr);
|
||||
bool Release(VAB *);
|
||||
const uint32_t GetInstanceCount()const{return vab_sets.GetCount();}
|
||||
VIL * CreateVIL(const VILConfig *format_map=nullptr);
|
||||
bool Release(VIL *);
|
||||
const uint32_t GetInstanceCount()const{return vil_sets.GetCount();}
|
||||
};//class VertexShaderModule:public ShaderModule
|
||||
VK_NAMESPACE_END
|
||||
#endif//HGL_GRAPH_VULKAN_SHADER_MODULE_INCLUDE
|
||||
|
@ -14,9 +14,9 @@ namespace hgl
|
||||
{
|
||||
namespace inline_geometry
|
||||
{
|
||||
Primitive *CreateRectangle(RenderResource *db,const VAB *vab,const RectangleCreateInfo *rci)
|
||||
Primitive *CreateRectangle(RenderResource *db,const VIL *vil,const RectangleCreateInfo *rci)
|
||||
{
|
||||
PrimitiveCreater rc(db,vab);
|
||||
PrimitiveCreater rc(db,vil);
|
||||
|
||||
if(!rc.Init(4))
|
||||
return(nullptr);
|
||||
@ -31,18 +31,18 @@ namespace hgl
|
||||
return rc.Finish();
|
||||
}
|
||||
|
||||
Primitive *CreateGBufferCompositionRectangle(RenderResource *db,const VAB *vab)
|
||||
Primitive *CreateGBufferCompositionRectangle(RenderResource *db,const VIL *vil)
|
||||
{
|
||||
RectangleCreateInfo rci;
|
||||
|
||||
rci.scope.Set(-1,-1,2,2);
|
||||
|
||||
return CreateRectangle(db,vab,&rci);
|
||||
return CreateRectangle(db,vil,&rci);
|
||||
}
|
||||
|
||||
Primitive *CreateRoundRectangle(RenderResource *db,const VAB *vab,const RoundRectangleCreateInfo *rci)
|
||||
Primitive *CreateRoundRectangle(RenderResource *db,const VIL *vil,const RoundRectangleCreateInfo *rci)
|
||||
{
|
||||
PrimitiveCreater rc(db,vab);
|
||||
PrimitiveCreater rc(db,vil);
|
||||
|
||||
if(rci->radius==0||rci->round_per<=1) //这是要画矩形
|
||||
{
|
||||
@ -114,9 +114,9 @@ namespace hgl
|
||||
return rc.Finish();
|
||||
}
|
||||
|
||||
Primitive *CreateCircle(RenderResource *db,const VAB *vab,const CircleCreateInfo *cci)
|
||||
Primitive *CreateCircle(RenderResource *db,const VIL *vil,const CircleCreateInfo *cci)
|
||||
{
|
||||
PrimitiveCreater rc(db,vab);
|
||||
PrimitiveCreater rc(db,vil);
|
||||
|
||||
uint edge;
|
||||
|
||||
@ -162,9 +162,9 @@ namespace hgl
|
||||
return rc.Finish();
|
||||
}
|
||||
|
||||
Primitive *CreatePlaneGrid(RenderResource *db,const VAB *vab,const PlaneGridCreateInfo *pgci)
|
||||
Primitive *CreatePlaneGrid(RenderResource *db,const VIL *vil,const PlaneGridCreateInfo *pgci)
|
||||
{
|
||||
PrimitiveCreater rc(db,vab);
|
||||
PrimitiveCreater rc(db,vil);
|
||||
|
||||
if(!rc.Init(((pgci->step.x+1)+(pgci->step.y+1))*2))
|
||||
return(nullptr);
|
||||
@ -209,14 +209,14 @@ namespace hgl
|
||||
return rc.Finish();
|
||||
}
|
||||
|
||||
Primitive *CreatePlane(RenderResource *db,const VAB *vab,const PlaneCreateInfo *pci)
|
||||
Primitive *CreatePlane(RenderResource *db,const VIL *vil,const PlaneCreateInfo *pci)
|
||||
{
|
||||
const float xy_vertices [] = { -0.5f,-0.5f,0.0f, +0.5f,-0.5f,0.0f, +0.5f,+0.5f,0.0f, -0.5f,+0.5f,0.0f };
|
||||
float xy_tex_coord[] = { 0.0f, 0.0f, 1.0f, 0.0f, 1.0f, 1.0f, 0.0f, 1.0f };
|
||||
const Vector3f xy_normal(0.0f,0.0f,1.0f);
|
||||
const Vector3f xy_tangent(1.0f,0.0f,0.0f);
|
||||
|
||||
PrimitiveCreater rc(db,vab);
|
||||
PrimitiveCreater rc(db,vil);
|
||||
|
||||
if(!rc.Init(4))
|
||||
return(nullptr);
|
||||
@ -250,7 +250,7 @@ namespace hgl
|
||||
return rc.Finish();
|
||||
}
|
||||
|
||||
Primitive *CreateCube(RenderResource *db,const VAB *vab,const CubeCreateInfo *cci)
|
||||
Primitive *CreateCube(RenderResource *db,const VIL *vil,const CubeCreateInfo *cci)
|
||||
{
|
||||
/**
|
||||
* 4 5
|
||||
@ -303,7 +303,7 @@ namespace hgl
|
||||
16, 17, 18, 16, 18, 19,
|
||||
20, 23, 22, 20, 22, 21};
|
||||
|
||||
PrimitiveCreater rc(db,vab);
|
||||
PrimitiveCreater rc(db,vil);
|
||||
|
||||
if(!rc.Init(24))
|
||||
return(nullptr);
|
||||
@ -442,9 +442,9 @@ namespace hgl
|
||||
* @param numberSlices 切片数
|
||||
* @return 可渲染数据
|
||||
*/
|
||||
Primitive *CreateSphere(RenderResource *db,const VAB *vab,const uint numberSlices)
|
||||
Primitive *CreateSphere(RenderResource *db,const VIL *vil,const uint numberSlices)
|
||||
{
|
||||
PrimitiveCreater rc(db,vab);
|
||||
PrimitiveCreater rc(db,vil);
|
||||
|
||||
uint numberParallels = (numberSlices+1) / 2;
|
||||
uint numberVertices = (numberParallels + 1) * (numberSlices + 1);
|
||||
@ -518,9 +518,9 @@ namespace hgl
|
||||
return rc.Finish();
|
||||
}
|
||||
|
||||
Primitive *CreateDome(RenderResource *db,const VAB *vab,const uint numberSlices)
|
||||
Primitive *CreateDome(RenderResource *db,const VIL *vil,const uint numberSlices)
|
||||
{
|
||||
PrimitiveCreater rc(db,vab);
|
||||
PrimitiveCreater rc(db,vil);
|
||||
|
||||
uint i, j;
|
||||
|
||||
@ -639,9 +639,9 @@ namespace hgl
|
||||
}
|
||||
}//namespace
|
||||
|
||||
Primitive *CreateTorus(RenderResource *db,const VAB *vab,const TorusCreateInfo *tci)
|
||||
Primitive *CreateTorus(RenderResource *db,const VIL *vil,const TorusCreateInfo *tci)
|
||||
{
|
||||
PrimitiveCreater rc(db,vab);
|
||||
PrimitiveCreater rc(db,vil);
|
||||
|
||||
// s, t = parametric values of the equations, in the range [0,1]
|
||||
float s = 0;
|
||||
@ -795,14 +795,14 @@ namespace hgl
|
||||
}
|
||||
}//namespace
|
||||
|
||||
Primitive *CreateCylinder(RenderResource *db,const VAB *vab,const CylinderCreateInfo *cci)
|
||||
Primitive *CreateCylinder(RenderResource *db,const VIL *vil,const CylinderCreateInfo *cci)
|
||||
{
|
||||
uint numberIndices = cci->numberSlices * 3 * 2 + cci->numberSlices * 6;
|
||||
|
||||
if(numberIndices<=0)
|
||||
return(nullptr);
|
||||
|
||||
PrimitiveCreater rc(db,vab);
|
||||
PrimitiveCreater rc(db,vil);
|
||||
|
||||
uint numberVertices = (cci->numberSlices + 2) * 2 + (cci->numberSlices + 1) * 2;
|
||||
|
||||
@ -1014,9 +1014,9 @@ namespace hgl
|
||||
}
|
||||
}//namespace
|
||||
|
||||
Primitive *CreateCone(RenderResource *db,const VAB *vab,const ConeCreateInfo *cci)
|
||||
Primitive *CreateCone(RenderResource *db,const VIL *vil,const ConeCreateInfo *cci)
|
||||
{
|
||||
PrimitiveCreater rc(db,vab);
|
||||
PrimitiveCreater rc(db,vil);
|
||||
|
||||
uint i, j;
|
||||
|
||||
@ -1141,11 +1141,11 @@ namespace hgl
|
||||
return rc.Finish();
|
||||
}
|
||||
|
||||
Primitive *CreateAxis(RenderResource *db,const VAB *vab,const AxisCreateInfo *aci)
|
||||
Primitive *CreateAxis(RenderResource *db,const VIL *vil,const AxisCreateInfo *aci)
|
||||
{
|
||||
if(!db||!vab||!aci)return(nullptr);
|
||||
if(!db||!vil||!aci)return(nullptr);
|
||||
|
||||
PrimitiveCreater rc(db,vab);
|
||||
PrimitiveCreater rc(db,vil);
|
||||
|
||||
if(!rc.Init(6))
|
||||
return(nullptr);
|
||||
@ -1168,7 +1168,7 @@ namespace hgl
|
||||
return rc.Finish();
|
||||
}
|
||||
|
||||
Primitive *CreateBoundingBox(RenderResource *db,const VAB *vab,const BoundingBoxCreateInfo *cci)
|
||||
Primitive *CreateBoundingBox(RenderResource *db,const VIL *vil,const BoundingBoxCreateInfo *cci)
|
||||
{
|
||||
// Points of a cube.
|
||||
/* 4 5 */ const float points[]={ -0.5,-0.5, 0.5, 0.5,-0.5,0.5, 0.5,-0.5,-0.5, -0.5,-0.5,-0.5,
|
||||
@ -1190,7 +1190,7 @@ namespace hgl
|
||||
0,4, 1,5, 2,6, 3,7
|
||||
};
|
||||
|
||||
PrimitiveCreater rc(db,vab);
|
||||
PrimitiveCreater rc(db,vil);
|
||||
|
||||
if(!rc.Init(8))
|
||||
return(nullptr);
|
||||
|
@ -5,10 +5,10 @@ namespace hgl
|
||||
{
|
||||
namespace graph
|
||||
{
|
||||
PrimitiveCreater::PrimitiveCreater(RenderResource *sdb,const VAB *v)
|
||||
PrimitiveCreater::PrimitiveCreater(RenderResource *sdb,const VIL *v)
|
||||
{
|
||||
db =sdb;
|
||||
vab =v;
|
||||
vil =v;
|
||||
|
||||
vertices_number =0;
|
||||
ibo =nullptr;
|
||||
@ -25,10 +25,10 @@ namespace hgl
|
||||
|
||||
VAD *PrimitiveCreater::CreateVAD(const AnsiString &name)
|
||||
{
|
||||
if(!vab)return(nullptr);
|
||||
if(!vil)return(nullptr);
|
||||
if(name.IsEmpty())return(nullptr);
|
||||
|
||||
const auto *va=vab->GetVertexAttribute(name);
|
||||
const auto *va=vil->GetConfig(name);
|
||||
|
||||
if(!va)
|
||||
return(nullptr);
|
||||
@ -58,7 +58,7 @@ namespace hgl
|
||||
|
||||
bool PrimitiveCreater::WriteVAD(const AnsiString &name,const void *data,const uint32_t bytes)
|
||||
{
|
||||
if(!vab)return(false);
|
||||
if(!vil)return(false);
|
||||
if(name.IsEmpty())return(false);
|
||||
if(!data)return(false);
|
||||
if(!bytes)return(false);
|
||||
@ -68,7 +68,7 @@ namespace hgl
|
||||
if(ssb_map.Get(name,ssb))
|
||||
return false;
|
||||
|
||||
const auto *va=vab->GetVertexAttribute(name);
|
||||
const auto *va=vil->GetConfig(name);
|
||||
|
||||
if(!va)
|
||||
return(false);
|
||||
@ -107,7 +107,7 @@ namespace hgl
|
||||
|
||||
Primitive *PrimitiveCreater::Finish()
|
||||
{
|
||||
const uint si_count=vab->GetVertexAttrCount();
|
||||
const uint si_count=vil->GetAttrCount();
|
||||
|
||||
if(ssb_map.GetCount()!=si_count)
|
||||
return(nullptr);
|
||||
|
@ -4,7 +4,7 @@
|
||||
#include<hgl/graph/VKMaterialParameters.h>
|
||||
#include<hgl/graph/VKDescriptorSets.h>
|
||||
#include<hgl/graph/VKShaderModuleMap.h>
|
||||
#include<hgl/graph/VKVertexAttributeBinding.h>
|
||||
#include<hgl/graph/VKVertexInputLayout.h>
|
||||
#include"VKPipelineLayoutData.h"
|
||||
|
||||
VK_NAMESPACE_BEGIN
|
||||
|
@ -5,26 +5,26 @@
|
||||
#include<hgl/graph/VKShaderModule.h>
|
||||
|
||||
VK_NAMESPACE_BEGIN
|
||||
MaterialInstance *GPUDevice::CreateMI(Material *mtl,const VABConfigInfo *vab_cfg)
|
||||
MaterialInstance *GPUDevice::CreateMI(Material *mtl,const VILConfig *vil_cfg)
|
||||
{
|
||||
if(!mtl)return(nullptr);
|
||||
|
||||
VertexShaderModule *vsm=mtl->GetVertexShaderModule();
|
||||
|
||||
VAB *vab=vsm->CreateVAB(vab_cfg);
|
||||
VIL *vil=vsm->CreateVIL(vil_cfg);
|
||||
|
||||
if(!vab)return(nullptr);
|
||||
if(!vil)return(nullptr);
|
||||
|
||||
MaterialParameters *mp=CreateMP(mtl,DescriptorSetsType::Value);
|
||||
|
||||
return(new MaterialInstance(mtl,vab,mp));
|
||||
return(new MaterialInstance(mtl,vil,mp));
|
||||
}
|
||||
|
||||
MaterialInstance::MaterialInstance(Material *mtl,VAB *v,MaterialParameters *p)
|
||||
MaterialInstance::MaterialInstance(Material *mtl,VIL *v,MaterialParameters *p)
|
||||
{
|
||||
material=mtl;
|
||||
|
||||
vab=v;
|
||||
vil=v;
|
||||
|
||||
mp_value=p;
|
||||
}
|
||||
|
@ -4,19 +4,19 @@
|
||||
#include<hgl/graph/VKVertexAttribBuffer.h>
|
||||
|
||||
VK_NAMESPACE_BEGIN
|
||||
//bool Renderable::Set(const int stage_input_binding,VAB *vab,VkDeviceSize offset)
|
||||
//bool Renderable::Set(const int stage_input_binding,VIL *vil,VkDeviceSize offset)
|
||||
//{
|
||||
// if(stage_input_binding<0||stage_input_binding>=buf_count||!vab)return(false);
|
||||
// if(stage_input_binding<0||stage_input_binding>=buf_count||!vil)return(false);
|
||||
//
|
||||
// const VkVertexInputBindingDescription *desc=vertex_sm->GetDesc(stage_input_binding);
|
||||
// const VkVertexInputAttributeDescription *attr=vertex_sm->GetAttr(stage_input_binding);
|
||||
//
|
||||
// if(vab->GetFormat()!=attr->format)return(false);
|
||||
// if(vab->GetStride()!=desc->stride)return(false);
|
||||
// if(vil->GetFormat()!=attr->format)return(false);
|
||||
// if(vil->GetStride()!=desc->stride)return(false);
|
||||
//
|
||||
// //format信息来自于shader,实际中可以不一样。但那样需要为每一个格式产生一个同样shader的material instance,不同的格式又需要不同的pipeline,我们不支持这种行为
|
||||
//
|
||||
// buf_list[stage_input_binding]=vab->GetBuffer();
|
||||
// buf_list[stage_input_binding]=vil->GetBuffer();
|
||||
// buf_offset[stage_input_binding]=offset;
|
||||
//
|
||||
// return(true);
|
||||
|
@ -23,12 +23,12 @@ RenderPass::~RenderPass()
|
||||
vkDestroyRenderPass(device,render_pass,nullptr);
|
||||
}
|
||||
|
||||
Pipeline *RenderPass::CreatePipeline(Material *mtl,PipelineData *pd,const VAB *vab)
|
||||
Pipeline *RenderPass::CreatePipeline(Material *mtl,PipelineData *pd,const VIL *vil)
|
||||
{
|
||||
VkPipeline graphicsPipeline;
|
||||
|
||||
pd->InitShaderStage(mtl->GetStageList());
|
||||
pd->InitVertexInputState(vab);
|
||||
pd->InitVertexInputState(vil);
|
||||
|
||||
pd->SetColorAttachments(color_formats.GetCount());
|
||||
|
||||
@ -58,7 +58,7 @@ Pipeline *RenderPass::CreatePipeline(MaterialInstance *mi,const PipelineData *da
|
||||
|
||||
PipelineData *pd=new PipelineData(data);
|
||||
|
||||
return CreatePipeline(mtl,pd,mi->GetVAB());
|
||||
return CreatePipeline(mtl,pd,mi->GetVIL());
|
||||
}
|
||||
|
||||
Pipeline *RenderPass::CreatePipeline(MaterialInstance *mi,const InlinePipeline &ip)
|
||||
@ -80,7 +80,7 @@ Pipeline *RenderPass::CreatePipeline(MaterialInstance *mi,const InlinePipeline &
|
||||
|
||||
pd->Set(prim,prim_restart);
|
||||
|
||||
Pipeline *p=CreatePipeline(mi->GetMaterial(),pd,mi->GetVAB());
|
||||
Pipeline *p=CreatePipeline(mi->GetMaterial(),pd,mi->GetVIL());
|
||||
|
||||
if(p)
|
||||
pipeline_list.Add(p);
|
||||
@ -94,7 +94,7 @@ Pipeline *RenderPass::CreatePipeline(MaterialInstance *mi,const PipelineData *cp
|
||||
|
||||
pd->Set(prim,prim_restart);
|
||||
|
||||
Pipeline *p=CreatePipeline(mi->GetMaterial(),pd,mi->GetVAB());
|
||||
Pipeline *p=CreatePipeline(mi->GetMaterial(),pd,mi->GetVIL());
|
||||
|
||||
if(p)
|
||||
pipeline_list.Add(p);
|
||||
|
@ -50,11 +50,11 @@ IndexBuffer *RenderResource::CreateIBO(IndexType index_type,uint32_t count,const
|
||||
return(buf);
|
||||
}
|
||||
|
||||
MaterialInstance *RenderResource::CreateMaterialInstance(Material *mtl,const VABConfigInfo *vab_cfg)
|
||||
MaterialInstance *RenderResource::CreateMaterialInstance(Material *mtl,const VILConfig *vil_cfg)
|
||||
{
|
||||
if(!mtl)return(nullptr);
|
||||
|
||||
MaterialInstance *mi=device->CreateMI(mtl,vab_cfg);
|
||||
MaterialInstance *mi=device->CreateMI(mtl,vil_cfg);
|
||||
|
||||
if(mi)
|
||||
Add(mi);
|
||||
@ -62,14 +62,14 @@ MaterialInstance *RenderResource::CreateMaterialInstance(Material *mtl,const VAB
|
||||
return mi;
|
||||
}
|
||||
|
||||
MaterialInstance *RenderResource::CreateMaterialInstance(const OSString &mtl_filename,const VABConfigInfo *vab_cfg)
|
||||
MaterialInstance *RenderResource::CreateMaterialInstance(const OSString &mtl_filename,const VILConfig *vil_cfg)
|
||||
{
|
||||
Material *mtl=this->CreateMaterial(mtl_filename);
|
||||
|
||||
if(!mtl)
|
||||
return(nullptr);
|
||||
|
||||
return CreateMaterialInstance(mtl,vab_cfg);
|
||||
return CreateMaterialInstance(mtl,vil_cfg);
|
||||
}
|
||||
|
||||
Primitive *RenderResource::CreatePrimitive(const uint32_t vertex_count)
|
||||
|
@ -36,8 +36,8 @@ Renderable *CreateRenderable(Primitive *r,MaterialInstance *mi,Pipeline *p)
|
||||
{
|
||||
if(!r||!mi||!p)return(nullptr);
|
||||
|
||||
const VAB *vab=mi->GetVAB();
|
||||
const int input_count=vab->GetVertexAttrCount();
|
||||
const VIL *vil=mi->GetVIL();
|
||||
const int input_count=vil->GetAttrCount();
|
||||
const UTF8String &mtl_name=mi->GetMaterial()->GetName();
|
||||
|
||||
if(r->GetBufferCount()<input_count) //小于材质要求的数量?那自然是不行的
|
||||
@ -51,9 +51,9 @@ Renderable *CreateRenderable(Primitive *r,MaterialInstance *mi,Pipeline *p)
|
||||
AutoDeleteArray<VkDeviceSize> buffer_size(input_count);
|
||||
|
||||
VBO *vbo;
|
||||
const AnsiString ** name_list=vab->GetVertexNameList();
|
||||
const VkVertexInputBindingDescription * bind_list=vab->GetVertexBindingList();
|
||||
const VkVertexInputAttributeDescription * attr_list=vab->GetVertexAttributeList();
|
||||
const AnsiString ** name_list=vil->GetNameList();
|
||||
const VkVertexInputBindingDescription * bind_list=vil->GetBindingList();
|
||||
const VkVertexInputAttributeDescription * attr_list=vil->GetAttributeList();
|
||||
|
||||
for(int i=0;i<input_count;i++)
|
||||
{
|
||||
@ -61,7 +61,7 @@ Renderable *CreateRenderable(Primitive *r,MaterialInstance *mi,Pipeline *p)
|
||||
|
||||
if(!vbo)
|
||||
{
|
||||
LOG_ERROR("[FATAL ERROR] can't find VBO \""+**name_list+"\" in Material: "+mtl_name);
|
||||
LOG_ERROR("[FATAL ERROR] not found VBO \""+**name_list+"\" in Material: "+mtl_name);
|
||||
return(nullptr);
|
||||
}
|
||||
|
||||
|
@ -1,5 +1,5 @@
|
||||
#include<hgl/graph/VKShaderModule.h>
|
||||
#include<hgl/graph/VKVertexAttributeBinding.h>
|
||||
#include<hgl/graph/VKVertexInputLayout.h>
|
||||
#include<hgl/graph/VKDevice.h>
|
||||
|
||||
VK_NAMESPACE_BEGIN
|
||||
@ -60,7 +60,7 @@ VertexShaderModule::VertexShaderModule(VkDevice dev,VkPipelineShaderStageCreateI
|
||||
|
||||
VertexShaderModule::~VertexShaderModule()
|
||||
{
|
||||
if(vab_sets.GetCount()>0)
|
||||
if(vil_sets.GetCount()>0)
|
||||
{
|
||||
//还有在用的,这是个错误
|
||||
}
|
||||
@ -69,7 +69,7 @@ VertexShaderModule::~VertexShaderModule()
|
||||
delete[] name_list;
|
||||
}
|
||||
|
||||
VAB *VertexShaderModule::CreateVAB(const VABConfigInfo *cfg)
|
||||
VIL *VertexShaderModule::CreateVIL(const VILConfig *cfg)
|
||||
{
|
||||
VkVertexInputBindingDescription *binding_list=new VkVertexInputBindingDescription[attr_count];
|
||||
VkVertexInputAttributeDescription *attribute_list=new VkVertexInputAttributeDescription[attr_count];
|
||||
@ -126,15 +126,15 @@ VAB *VertexShaderModule::CreateVAB(const VABConfigInfo *cfg)
|
||||
++si;
|
||||
}
|
||||
|
||||
VAB *vab=new VAB(attr_count,name_list,type_list,binding_list,attribute_list);
|
||||
VIL *vil=new VIL(attr_count,name_list,type_list,binding_list,attribute_list);
|
||||
|
||||
vab_sets.Add(vab);
|
||||
vil_sets.Add(vil);
|
||||
|
||||
return(vab);
|
||||
return(vil);
|
||||
}
|
||||
|
||||
bool VertexShaderModule::Release(VAB *vab)
|
||||
bool VertexShaderModule::Release(VIL *vil)
|
||||
{
|
||||
return vab_sets.Delete(vab);
|
||||
return vil_sets.Delete(vil);
|
||||
}
|
||||
VK_NAMESPACE_END
|
||||
|
@ -84,15 +84,15 @@ namespace hgl
|
||||
|
||||
//文本渲染Position坐标全部是使用整数,这里强制要求Position输入流使用RGBA16I格式
|
||||
{
|
||||
VABConfigInfo vab_config;
|
||||
VILConfig vil_config;
|
||||
VAConfig va_cfg;
|
||||
|
||||
va_cfg.format=VF_V4I16;
|
||||
va_cfg.instance=false;
|
||||
|
||||
vab_config.Add("Position",va_cfg);
|
||||
vil_config.Add("Position",va_cfg);
|
||||
|
||||
material_instance=db->CreateMaterialInstance(material,&vab_config);
|
||||
material_instance=db->CreateMaterialInstance(material,&vil_config);
|
||||
if(!material_instance)return(false);
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user