renamed to Primitive from Renderable

This commit is contained in:
HuYingzhuo(hugo/hyzboy) 2022-06-24 17:51:05 +08:00
parent 1e0e74da2f
commit 0fca6b8fc4
54 changed files with 148 additions and 404 deletions

@ -1 +1 @@
Subproject commit ecbb0682a2c5b33348431d44e64b3a4b775829ee
Subproject commit 1bf41ad683d9fdfc092dee259567ac8054199bc6

View File

@ -113,7 +113,7 @@ private:
bool InitVBO()
{
Renderable *render_obj=db->CreateRenderable(VERTEX_COUNT);
Primitive *render_obj=db->CreatePrimitive(VERTEX_COUNT);
if(!render_obj)return(false);
if(!render_obj->Set(VAN::Position, db->CreateVBO(VF_V2F,VERTEX_COUNT,position_data)))return(false);

View File

@ -129,7 +129,7 @@ private:
bool InitVBO()
{
Renderable *render_obj=db->CreateRenderable(VERTEX_COUNT);
Primitive *render_obj=db->CreatePrimitive(VERTEX_COUNT);
if(!render_obj)return(false);
if(!render_obj->Set(VAN::Position, db->CreateVBO(VF_V4I16,VERTEX_COUNT,position_data)))return(false);

View File

@ -43,7 +43,7 @@ private:
GPUBuffer * ubo_atomsphere =nullptr;
AtmosphereData atomsphere_data;
Renderable * ro_sphere =nullptr;
Primitive * ro_sphere =nullptr;
private:

View File

@ -41,9 +41,9 @@ private:
Sampler * sampler =nullptr;
TextureCube * texture =nullptr;
Renderable * ro_axis =nullptr;
Renderable * ro_cube =nullptr;
Renderable * ro_sphere =nullptr;
Primitive * ro_axis =nullptr;
Primitive * ro_cube =nullptr;
Primitive * ro_sphere =nullptr;
private:
@ -148,7 +148,7 @@ private:
return(true);
}
SceneNode *Add(Renderable *r,MaterialInstance *mi,Pipeline *pl)
SceneNode *Add(Primitive *r,MaterialInstance *mi,Pipeline *pl)
{
auto ri=db->CreateRenderableInstance(r,mi,pl);

View File

@ -80,7 +80,7 @@ private:
SubpassParam sp_gbuffer;
SubpassParam sp_composition;
Renderable *ro_plane,
Primitive *ro_plane,
*ro_cube,
*ro_sphere,
*ro_torus,

View File

@ -14,7 +14,7 @@ private:
TextRender * text_render =nullptr;
TextRenderable * text_render_obj =nullptr;
TextPrimitive * text_render_obj =nullptr;
RenderableInstance *render_instance =nullptr;
public:
@ -40,7 +40,7 @@ private:
if(!text_render)
return(false);
text_render_obj=text_render->CreateRenderable(str);
text_render_obj=text_render->CreatePrimitive(str);
if(!text_render_obj)
return(false);

View File

@ -40,7 +40,7 @@ private:
Sampler * sampler =nullptr;
MaterialInstance * material_instance =nullptr;
Renderable * render_obj =nullptr;
Primitive * render_obj =nullptr;
RenderableInstance *render_instance =nullptr;
Pipeline * pipeline =nullptr;
@ -174,7 +174,7 @@ private:
{
const uint tile_count=tile_list.GetCount();
render_obj=db->CreateRenderable(tile_count);
render_obj=db->CreatePrimitive(tile_count);
if(!render_obj)return(false);
render_obj->Set(VAN::Position,db->CreateVBO(VF_V4F,tile_count,position_data));

View File

@ -32,7 +32,7 @@ private:
Sampler * sampler =nullptr;
Texture2D * texture =nullptr;
Renderable * ro_sphere =nullptr;
Primitive * ro_sphere =nullptr;
private:
@ -74,7 +74,7 @@ private:
return(true);
}
SceneNode *Add(Renderable *r,MaterialInstance *mi,Pipeline *pl)
SceneNode *Add(Primitive *r,MaterialInstance *mi,Pipeline *pl)
{
auto ri=db->CreateRenderableInstance(r,mi,pl);

View File

@ -47,7 +47,7 @@ private:
bool InitVBO()
{
auto render_obj=db->CreateRenderable(VERTEX_COUNT);
auto render_obj=db->CreatePrimitive(VERTEX_COUNT);
if(!render_obj)return(false);
if(!render_obj->Set(VAN::Position,db->CreateVBO(VF_V2F,VERTEX_COUNT,position_data)))return(false);

View File

@ -35,7 +35,7 @@ private:
bool InitVBO()
{
auto render_obj=db->CreateRenderable(3);
auto render_obj=db->CreatePrimitive(3);
if(!render_obj)return(false);
renderable_instance=db->CreateRenderableInstance(render_obj,material_instance,pipeline);

View File

@ -28,7 +28,7 @@ private:
MaterialInstance * material_instance =nullptr;
Pipeline * pipeline =nullptr;
Renderable * ro_plane_grid[3];
Primitive * ro_plane_grid[3];
private:
@ -47,7 +47,7 @@ private:
return(true);
}
RenderableInstance *Add(Renderable *r,const Matrix4f &mat)
RenderableInstance *Add(Primitive *r,const Matrix4f &mat)
{
RenderableInstance *ri=db->CreateRenderableInstance(r,material_instance,pipeline);

View File

@ -59,7 +59,7 @@ private:
Texture2D * normal =nullptr;
}texture;
Renderable *ro_axis,
Primitive *ro_axis,
*ro_cube,
*ro_sphere,
*ro_torus,
@ -230,14 +230,14 @@ private:
return(true);
}
void Add(Renderable *r,Pipeline *pl)
void Add(Primitive *r,Pipeline *pl)
{
auto ri=db->CreateRenderableInstance(r,material_instance,pl);
render_root.CreateSubNode(ri);
}
void Add(Renderable *r,Pipeline *pl,const Matrix4f &mat)
void Add(Primitive *r,Pipeline *pl,const Matrix4f &mat)
{
auto ri=db->CreateRenderableInstance(r,material_instance,pl);

View File

@ -53,7 +53,7 @@ private:
bool InitVBO()
{
Renderable *render_obj=db->CreateRenderable(VERTEX_COUNT);
Primitive *render_obj=db->CreatePrimitive(VERTEX_COUNT);
if(!render_obj)return(false);
if(!render_obj->Set(VAN::Position, db->CreateVBO(VF_V2F,VERTEX_COUNT,position_data)))return(false);

View File

@ -23,13 +23,13 @@ using namespace hgl::graph;
constexpr uint32_t SCREEN_WIDTH=1280;
constexpr uint32_t SCREEN_HEIGHT=720;
vulkan::Renderable *CreateMeshRenderable(Database *db,vulkan::Material *mtl,const MeshData *mesh)
vulkan::Primitive *CreateMeshRenderable(Database *db,vulkan::Material *mtl,const MeshData *mesh)
{
const vulkan::VertexShaderModule *vsm=mtl->GetVertexShaderModule();
uint draw_count=mesh->indices_count;
vulkan::Renderable *render_obj=nullptr;
vulkan::Primitive *render_obj=nullptr;
{
const int vertex_binding=vsm->GetStageInputBinding("Vertex");
@ -109,13 +109,13 @@ private:
ModelData *model_data;
vulkan::Renderable **mesh_renderable;
vulkan::Primitive **mesh_renderable;
RenderableInstance **mesh_renderable_instance;
vulkan::Renderable *axis_renderable;
vulkan::Primitive *axis_renderable;
RenderableInstance *axis_renderable_instance;
vulkan::Renderable *bbox_renderable;
vulkan::Primitive *bbox_renderable;
RenderableInstance *bbox_renderable_instance;
private:
@ -163,7 +163,7 @@ private:
return(true);
}
RenderableInstance *CreateRenderableInstance(const MP &mp,vulkan::Renderable *r)
RenderableInstance *CreateRenderableInstance(const MP &mp,vulkan::Primitive *r)
{
return db->CreateRenderableInstance(mp.pipeline,mp.material_instance,r);
}
@ -173,7 +173,7 @@ private:
const uint count=model_data->mesh_list.GetCount();
MeshData **md=model_data->mesh_list.GetData();
mesh_renderable =new vulkan::Renderable *[count];
mesh_renderable =new vulkan::Primitive *[count];
mesh_renderable_instance=new RenderableInstance *[count];
for(uint i=0;i<count;i++)

View File

@ -105,7 +105,7 @@ public:
cci.center_color=Vector4f(1,1,1,1);
cci.border_color=Vector4f(1,1,1,0);
Renderable *render_obj=CreateRenderableCircle(db,os.material_instance->GetVAB(),&cci);
Primitive *render_obj=CreateRenderableCircle(db,os.material_instance->GetVAB(),&cci);
if(!render_obj)return(false);
os.renderable_instance=db->CreateRenderableInstance(render_obj,os.material_instance,os.pipeline);
@ -141,7 +141,7 @@ public:
cci.tex_coord=true;
Renderable *render_obj=CreateRenderableCube(db,cube.material_instance->GetVAB(),&cci);
Primitive *render_obj=CreateRenderableCube(db,cube.material_instance->GetVAB(),&cci);
if(!render_obj)return(false);
cube.renderable_instance=db->CreateRenderableInstance(render_obj,cube.material_instance,cube.pipeline);

View File

@ -42,9 +42,9 @@ private:
MaterialInstance * material_instance =nullptr;
Pipeline * pipeline =nullptr;
Renderable * ro_plane_grid =nullptr;
Primitive * ro_plane_grid =nullptr;
Renderable * ro_line =nullptr;
Primitive * ro_line =nullptr;
VBO * vbo_pos =nullptr;
@ -67,7 +67,7 @@ private:
return(true);
}
RenderableInstance *Add(Renderable *r,const Matrix4f &mat)
RenderableInstance *Add(Primitive *r,const Matrix4f &mat)
{
RenderableInstance *ri=db->CreateRenderableInstance(r,material_instance,pipeline);
@ -101,7 +101,7 @@ private:
}
{
ro_line=db->CreateRenderable(2);
ro_line=db->CreatePrimitive(2);
if(!ro_line)return(false);
if(!ro_line->Set(VAN::Position, vbo_pos=db->CreateVBO(VF_V3F,2,position_data)))return(false);

View File

@ -37,7 +37,7 @@ private:
Texture2D * texture =nullptr;
Sampler * sampler =nullptr;
MaterialInstance * material_instance =nullptr;
Renderable * render_obj =nullptr;
Primitive * render_obj =nullptr;
RenderableInstance *render_instance =nullptr;
Pipeline * pipeline =nullptr;
@ -66,7 +66,7 @@ private:
bool InitVBO()
{
render_obj=db->CreateRenderable(VERTEX_COUNT);
render_obj=db->CreatePrimitive(VERTEX_COUNT);
if(!render_obj)return(false);

View File

@ -36,7 +36,7 @@ private:
GPUBuffer * ubo_color =nullptr;
GPUBuffer * ubo_sun =nullptr;
Renderable * renderable_object =nullptr;
Primitive * renderable_object =nullptr;
Pipeline * pipeline =nullptr;

View File

@ -34,7 +34,7 @@ private:
GPUBuffer * ubo_sky_color =nullptr;
Renderable * ro_skyphere =nullptr;
Primitive * ro_skyphere =nullptr;
private:
@ -77,7 +77,7 @@ private:
return(true);
}
RenderableInstance *Add(Renderable *r,const Matrix4f &mat)
RenderableInstance *Add(Primitive *r,const Matrix4f &mat)
{
RenderableInstance *ri=db->CreateRenderableInstance(r,material_instance,pipeline);

View File

@ -28,7 +28,7 @@ constexpr uint32_t SCREEN_HEIGHT=720;
/**
*
*/
Renderable *CreateRenderableTerrain(RenderResource *db,const VAB *vab,const TerrainCreateInfo *tci)
Primitive *CreateRenderableTerrain(RenderResource *db,const VAB *vab,const TerrainCreateInfo *tci)
{
}
@ -47,7 +47,7 @@ private:
MaterialInstance * material_instance =nullptr;
Pipeline * pipeline =nullptr;
Renderable * renderable =nullptr;
Primitive * renderable =nullptr;
private:
@ -66,7 +66,7 @@ private:
return(true);
}
RenderableInstance *Add(Renderable *r,const Matrix4f &mat)
RenderableInstance *Add(Primitive *r,const Matrix4f &mat)
{
RenderableInstance *ri=db->CreateRenderableInstance(r,material_instance,pipeline);

View File

@ -53,7 +53,7 @@ private:
bool InitVBO()
{
Renderable *render_obj=db->CreateRenderable(VERTEX_COUNT);
Primitive *render_obj=db->CreatePrimitive(VERTEX_COUNT);
if(!render_obj)return(false);
if(!render_obj->Set(VAN::Position, db->CreateVBO(VF_V2F,VERTEX_COUNT,position_data)))return(false);

View File

@ -56,7 +56,7 @@ private:
bool InitVBO()
{
auto render_obj=db->CreateRenderable(VERTEX_COUNT);
auto render_obj=db->CreatePrimitive(VERTEX_COUNT);
if(!render_obj)return(false);
if(!render_obj->Set(VAN::Position,db->CreateVBO(VF_V2F,VERTEX_COUNT,position_data)))return(false);

View File

@ -55,7 +55,7 @@ private:
bool InitVBO()
{
Renderable *render_obj=db->CreateRenderable(VERTEX_COUNT);
Primitive *render_obj=db->CreatePrimitive(VERTEX_COUNT);
if(!render_obj)return(false);
if(!render_obj->Set(VAN::Position, db->CreateVBO(VF_V2F,VERTEX_COUNT,position_data)))return(false);

View File

@ -80,7 +80,7 @@ private:
bool InitVBO()
{
auto render_obj=db->CreateRenderable(VERTEX_COUNT);
auto render_obj=db->CreatePrimitive(VERTEX_COUNT);
if(!render_obj)return(false);
if(!render_obj->Set(VAN::Position,db->CreateVBO(VF_V2F,VERTEX_COUNT,position_data)))return(false);

View File

@ -57,7 +57,7 @@ private:
bool InitVBO()
{
Renderable *render_obj=db->CreateRenderable(VERTEX_COUNT);
Primitive *render_obj=db->CreatePrimitive(VERTEX_COUNT);
if(!render_obj)return(false);
if(!render_obj->Set(VAN::Position, db->CreateVBO(VF_V2F,VERTEX_COUNT,position_data)))return(false);

View File

@ -7,7 +7,7 @@
#include<hgl/graph/VKBuffer.h>
#include<hgl/graph/VKShaderModule.h>
#include<hgl/graph/VKImageView.h>
#include<hgl/graph/VKRenderable.h>
#include<hgl/graph/VKPrimitive.h>
#include<hgl/graph/VKDescriptorSets.h>
#include<hgl/graph/VKRenderPass.h>
#include<hgl/graph/VKPipeline.h>

View File

@ -18,12 +18,12 @@ namespace hgl
RectScope2f scope;
};//struct RectangleCreateInfo
Renderable *CreateRenderableRectangle(RenderResource *db,const VAB *vab,const RectangleCreateInfo *rci);
Primitive *CreateRenderableRectangle(RenderResource *db,const VAB *vab,const RectangleCreateInfo *rci);
/**
*
*/
Renderable *CreateRenderableGBufferComposition(RenderResource *db,const VAB *vab);
Primitive *CreateRenderableGBufferComposition(RenderResource *db,const VAB *vab);
/**
* (/线)
@ -34,7 +34,7 @@ namespace hgl
uint32_t round_per; ///<圆角精度
};//struct RoundRectangleCreateInfo:public RectangleCreateInfo
Renderable *CreateRenderableRoundRectangle(RenderResource *db,const VAB *vab,const RoundRectangleCreateInfo *rci);
Primitive *CreateRenderableRoundRectangle(RenderResource *db,const VAB *vab,const RoundRectangleCreateInfo *rci);
/**
*
@ -54,7 +54,7 @@ namespace hgl
/**
* 2D圆形(/线)
*/
Renderable *CreateRenderableCircle(RenderResource *db,const VAB *vab,const CircleCreateInfo *cci);
Primitive *CreateRenderableCircle(RenderResource *db,const VAB *vab,const CircleCreateInfo *cci);
/**
*
@ -73,7 +73,7 @@ namespace hgl
/**
* (线)
*/
Renderable *CreateRenderablePlaneGrid(RenderResource *db,const VAB *vab,const PlaneGridCreateInfo *pgci);
Primitive *CreateRenderablePlaneGrid(RenderResource *db,const VAB *vab,const PlaneGridCreateInfo *pgci);
struct PlaneCreateInfo
{
@ -91,7 +91,7 @@ namespace hgl
/**
* ()
*/
Renderable *CreateRenderablePlane(RenderResource *db,const VAB *vab,const PlaneCreateInfo *pci);
Primitive *CreateRenderablePlane(RenderResource *db,const VAB *vab,const PlaneCreateInfo *pci);
struct CubeCreateInfo
{
@ -127,7 +127,7 @@ namespace hgl
/**
* ()
*/
Renderable *CreateRenderableCube(RenderResource *db,const VAB *vab,const CubeCreateInfo *cci);
Primitive *CreateRenderableCube(RenderResource *db,const VAB *vab,const CubeCreateInfo *cci);
struct BoundingBoxCreateInfo
{
@ -158,17 +158,17 @@ namespace hgl
/**
* (线)
*/
Renderable *CreateRenderableBoundingBox(RenderResource *db,const VAB *vab,const BoundingBoxCreateInfo *cci);
Primitive *CreateRenderableBoundingBox(RenderResource *db,const VAB *vab,const BoundingBoxCreateInfo *cci);
/**
* 0,0,01()
*/
Renderable *CreateRenderableSphere(RenderResource *db,const VAB *vab,const uint numberSlices);
Primitive *CreateRenderableSphere(RenderResource *db,const VAB *vab,const uint numberSlices);
/**
* ()
*/
Renderable *CreateRenderableDome(RenderResource *db,const VAB *vab, const uint numberSlices);
Primitive *CreateRenderableDome(RenderResource *db,const VAB *vab, const uint numberSlices);
struct TorusCreateInfo
{
@ -184,7 +184,7 @@ namespace hgl
/**
* ()
*/
Renderable *CreateRenderableTorus(RenderResource *db,const VAB *vab,const TorusCreateInfo *tci);
Primitive *CreateRenderableTorus(RenderResource *db,const VAB *vab,const TorusCreateInfo *tci);
struct CylinderCreateInfo
{
@ -196,7 +196,7 @@ namespace hgl
/**
* ()
*/
Renderable *CreateRenderableCylinder(RenderResource *db,const VAB *vab,const CylinderCreateInfo *cci);
Primitive *CreateRenderableCylinder(RenderResource *db,const VAB *vab,const CylinderCreateInfo *cci);
struct ConeCreateInfo
{
@ -209,7 +209,7 @@ namespace hgl
/**
* ()
*/
Renderable *CreateRenderableCone(RenderResource *db,const VAB *vab,const ConeCreateInfo *cci);
Primitive *CreateRenderableCone(RenderResource *db,const VAB *vab,const ConeCreateInfo *cci);
struct AxisCreateInfo
{
@ -230,7 +230,7 @@ namespace hgl
/**
* 线(线)
*/
Renderable *CreateRenderableAxis(RenderResource *db,const VAB *vab,const AxisCreateInfo *aci);
Primitive *CreateRenderableAxis(RenderResource *db,const VAB *vab,const AxisCreateInfo *aci);
}//namespace graph
};//namespace hgl
#endif//HGL_GRAPH_INLINE_GEOMETRY_INCLUDE

View File

@ -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 Renderable * Finish(); ///<结束并创建可渲染对象
virtual Primitive * Finish(); ///<结束并创建可渲染对象
};//class RenderableCreater
}//namespace graph
}//namespace hgl

View File

@ -8,7 +8,7 @@
#include<iostream>
#include<hgl/graph/VKNamespace.h>
#include<hgl/graph/VKFormat.h>
#include<hgl/graph/VKPrimivate.h>
#include<hgl/graph/VKPrimitiveType.h>
#include<hgl/graph/VKStruct.h>
#include<hgl/graph/VKRenderbufferInfo.h>
@ -78,9 +78,9 @@ enum class DescriptorSetsType
Material, ///<材质中永远不变的参数
// Texture, ///<材质中的纹理参数
Value, ///<材质中的变量参数
Renderable, ///<渲染实例参数(如Local2World matrix)
Primitive, ///<渲染实例参数(如Local2World matrix)
ENUM_CLASS_RANGE(Global,Renderable)
ENUM_CLASS_RANGE(Global,Primitive)
};//
const DescriptorSetsType CheckDescriptorSetsType(const char *str);
@ -130,7 +130,7 @@ using VABConfigInfo=Map<AnsiString,VAConfig>;
class VertexAttributeBinding;
using VAB=VertexAttributeBinding;
class Renderable;
class Primitive;
class RenderableInstance;
class RenderResource;

View File

@ -67,7 +67,7 @@ public:
MaterialParameters * GetMP (const DescriptorSetsType &type)
{
if(type==DescriptorSetsType::Material )return data->mp.m;else
if(type==DescriptorSetsType::Renderable )return data->mp.r;else
if(type==DescriptorSetsType::Primitive )return data->mp.r;else
if(type==DescriptorSetsType::Global )return data->mp.g;else
return(nullptr);
}

View File

@ -34,7 +34,7 @@ public:
MP_TYPE_IS(Material)
// MP_TYPE_IS(Texture)
MP_TYPE_IS(Value)
MP_TYPE_IS(Renderable)
MP_TYPE_IS(Primitive)
MP_TYPE_IS(Global)
#undef MP_TYPE_IS

View File

@ -4,7 +4,7 @@
#include<hgl/graph/VKMaterial.h>
#include<hgl/graph/VKPipeline.h>
#include<hgl/graph/VKDescriptorSets.h>
#include<hgl/graph/VKRenderable.h>
#include<hgl/graph/VKPrimitive.h>
#include<hgl/graph/VKBuffer.h>
#include<hgl/graph/VKSampler.h>
#include<hgl/graph/VKTexture.h>
@ -12,14 +12,14 @@
#include<hgl/graph/VKMaterialInstance.h>
#include<hgl/graph/VertexAttribData.h>
#include<hgl/graph/VKRenderableInstance.h>
#include<hgl/graph/font/TextRenderable.h>
#include<hgl/graph/font/TextPrimitive.h>
#include<hgl/type/ResManage.h>
VK_NAMESPACE_BEGIN
using MaterialID =int;
using MaterialInstanceID =int;
using BufferID =int;
using DescriptorSetsID =int;
using RenderableID =int;
using PrimitiveID =int;
using RenderableInstanceID =int;
using SamplerID =int;
using TextureID =int;
@ -40,7 +40,7 @@ class RenderResource
IDResManage<MaterialID, Material> rm_material; ///<材质合集
IDResManage<MaterialInstanceID, MaterialInstance> rm_material_instance; ///<材质实例合集
IDResManage<DescriptorSetsID, DescriptorSets> rm_desc_sets; ///<描述符合集
IDResManage<RenderableID, Renderable> rm_renderables; ///<可渲染对象合集
IDResManage<PrimitiveID, Primitive> rm_primitives; ///<图元合集
IDResManage<BufferID, GPUBuffer> rm_buffers; ///<顶点缓冲区合集
IDResManage<SamplerID, Sampler> rm_samplers; ///<采样器合集
IDResManage<TextureID, Texture> rm_textures; ///<纹理合集
@ -56,7 +56,7 @@ public: //Add
MaterialID Add(Material * mtl ){return rm_material.Add(mtl);}
MaterialInstanceID Add(MaterialInstance * mi ){return rm_material_instance.Add(mi);}
DescriptorSetsID Add(DescriptorSets * ds ){return rm_desc_sets.Add(ds);}
RenderableID Add(Renderable * r ){return rm_renderables.Add(r);}
PrimitiveID Add(Primitive * p ){return rm_primitives.Add(p);}
BufferID Add(GPUBuffer * buf ){return rm_buffers.Add(buf);}
SamplerID Add(Sampler * s ){return rm_samplers.Add(s);}
TextureID Add(Texture * t ){return rm_textures.Add(t);}
@ -93,9 +93,9 @@ public: //Material
MaterialInstance * CreateMaterialInstance(Material *,const VABConfigInfo *vab_cfg=nullptr);
MaterialInstance * CreateMaterialInstance(const OSString &,const VABConfigInfo *vab_cfg=nullptr);
Renderable * CreateRenderable(const uint32_t vertex_count=0);
Primitive * CreatePrimitive(const uint32_t vertex_count=0);
RenderableInstance *CreateRenderableInstance(Renderable *r,MaterialInstance *mi,Pipeline *p);
RenderableInstance *CreateRenderableInstance(Primitive *r,MaterialInstance *mi,Pipeline *p);
Sampler * CreateSampler(VkSamplerCreateInfo *sci=nullptr);
Sampler * CreateSampler(Texture *);
@ -110,7 +110,7 @@ public: //Get
Material * GetMaterial (const MaterialID &id){return rm_material.Get(id);}
MaterialInstance * GetMaterialInstance (const MaterialInstanceID &id){return rm_material_instance.Get(id);}
DescriptorSets * GetDescSets (const DescriptorSetsID &id){return rm_desc_sets.Get(id);}
Renderable * GetRenderable (const RenderableID &id){return rm_renderables.Get(id);}
Primitive * GetRenderable (const PrimitiveID &id){return rm_primitives.Get(id);}
GPUBuffer * GetBuffer (const BufferID &id){return rm_buffers.Get(id);}
Sampler * GetSampler (const SamplerID &id){return rm_samplers.Get(id);}
Texture * GetTexture (const TextureID &id){return rm_textures.Get(id);}

View File

@ -1,89 +0,0 @@
#ifndef HGL_GRAPH_VULKAN_RENDERABLE_INCLUDE
#define HGL_GRAPH_VULKAN_RENDERABLE_INCLUDE
#include<hgl/graph/VKIndexBuffer.h>
#include<hgl/type/Map.h>
#include<hgl/type/String.h>
#include<hgl/math/Math.h>
#include<hgl/graph/AABB.h>
VK_NAMESPACE_BEGIN
/**
* <br>
* Mesh信息API使用的VBO数据MESH数据的集合</p>
* 使mesh就可以合并到一个Renderable中VBO
*/
class Renderable
{
struct VBOData
{
VBO *buf;
VkDeviceSize offset;
public:
CompOperatorMemcmp(const VBOData &);
};
Map<AnsiString,VBOData> buffer_list;
protected:
uint32_t draw_count;
IndexBuffer *indices_buffer=nullptr;
VkDeviceSize indices_offset=0;
protected:
AABB BoundingBox;
protected:
friend class RenderableNode;
uint ref_count=0;
uint RefInc(){return ++ref_count;}
uint RefDec(){return --ref_count;}
public:
Renderable(const uint32_t dc=0):draw_count(dc){}
virtual ~Renderable()=default;
const uint GetRefCount()const{return ref_count;}
void SetBoundingBox(const AABB &aabb){BoundingBox=aabb;}
const AABB & GetBoundingBox()const {return BoundingBox;}
bool Set(const AnsiString &name,VBO *vb,VkDeviceSize offset=0);
bool Set(IndexBuffer *ib,VkDeviceSize offset=0)
{
if(!ib)return(false);
indices_buffer=ib;
indices_offset=offset;
return(true);
}
public:
void SetDrawCount(const uint32_t dc){draw_count=dc;} ///<设置当前对象绘制需要多少个顶点
virtual const uint32_t GetDrawCount()const ///<取得当前对象绘制需要多少个顶点
{
if(indices_buffer)
return indices_buffer->GetCount();
return draw_count;
}
VBO * GetVBO (const AnsiString &,VkDeviceSize *);
VkBuffer GetBuffer (const AnsiString &,VkDeviceSize *);
const int GetBufferCount ()const {return buffer_list.GetCount();}
IndexBuffer * GetIndexBuffer () {return indices_buffer;}
const VkDeviceSize GetIndexBufferOffset()const {return indices_offset;}
};//class Renderable
VK_NAMESPACE_END
#endif//HGL_GRAPH_VULKAN_RENDERABLE_INCLUDE

View File

@ -1,7 +1,7 @@
#ifndef HGL_GRAPH_RENDERABLE_INSTANCE_INCLUDE
#define HGL_GRAPH_RENDERABLE_INSTANCE_INCLUDE
#include<hgl/graph/VKRenderable.h>
#include<hgl/graph/VKPrimitive.h>
#include<hgl/graph/VKPipeline.h>
#include<hgl/graph/VKDescriptorSets.h>
#include<hgl/graph/VKMaterial.h>
@ -16,7 +16,7 @@ class RenderableInstance
{
Pipeline * pipeline;
MaterialInstance * mat_inst;
Renderable * render_obj;
Primitive * render_obj;
uint32_t buffer_count;
VkBuffer * buffer_list;
@ -26,9 +26,9 @@ class RenderableInstance
private:
friend RenderableInstance *CreateRenderableInstance(Renderable *,MaterialInstance *,Pipeline *);
friend RenderableInstance *CreateRenderableInstance(Primitive *,MaterialInstance *,Pipeline *);
RenderableInstance(Renderable *,MaterialInstance *,Pipeline *,const uint32_t,VkBuffer *,VkDeviceSize *);
RenderableInstance(Primitive *,MaterialInstance *,Pipeline *,const uint32_t,VkBuffer *,VkDeviceSize *);
public:
@ -40,7 +40,7 @@ public:
VkPipelineLayout GetPipelineLayout (){return mat_inst->GetMaterial()->GetPipelineLayout();}
Material * GetMaterial (){return mat_inst->GetMaterial();}
MaterialInstance * GetMaterialInstance (){return mat_inst;}
Renderable * GetRenderable (){return render_obj;}
Primitive * GetRenderable (){return render_obj;}
const AABB & GetBoundingBox ()const{return render_obj->GetBoundingBox();}
const uint32_t GetBufferCount ()const{return buffer_count;}
@ -59,6 +59,6 @@ public: //instance support
virtual const uint32_t GetInstanceCount ()const{return 1;}
};//class RenderableInstance
RenderableInstance *CreateRenderableInstance(Renderable *,MaterialInstance *,Pipeline *);
RenderableInstance *CreateRenderableInstance(Primitive *,MaterialInstance *,Pipeline *);
VK_NAMESPACE_END
#endif//HGL_GRAPH_RENDERABLE_INSTANCE_INCLUDE

View File

@ -11,7 +11,7 @@ namespace hgl
namespace graph
{
class TileFont;
class TextRenderable;
class TextPrimitive;
/**
*
@ -112,7 +112,7 @@ namespace hgl
ObjectList<CharDrawAttr> draw_chars_list; ///<所有字符属性列表
template<typename T> bool preprocess(TextRenderable *,TileFont *,const T *,const int);
template<typename T> bool preprocess(TextPrimitive *,TileFont *,const T *,const int);
protected:
@ -124,7 +124,7 @@ namespace hgl
int sl_v_r2l();
int sl_v_l2r();
template<typename T> int SimpleLayout(TextRenderable *,TileFont *,const String<T> &); ///<简易排版
template<typename T> int SimpleLayout(TextPrimitive *,TileFont *,const String<T> &); ///<简易排版
// template<typename T> int SimpleLayout(TileFont *,const StringList<String<T>> &); ///<简易排版
@ -142,7 +142,7 @@ namespace hgl
protected:
TextRenderable *text_render_obj;
TextPrimitive *text_render_obj;
MemBlock<int16> vertex;
MemBlock<float> tex_coord;
@ -167,8 +167,8 @@ namespace hgl
virtual bool Init (); ///<初始化排版
int SimpleLayout (TextRenderable *,TileFont *,const UTF16String &); ///<简易排版
int SimpleLayout (TextRenderable *,TileFont *,const UTF32String &); ///<简易排版
int SimpleLayout (TextPrimitive *,TileFont *,const UTF16String &); ///<简易排版
int SimpleLayout (TextPrimitive *,TileFont *,const UTF32String &); ///<简易排版
// int SimpleLayout (TileFont *,const UTF16StringList &); ///<简易排版
// int SimpleLayout (TileFont *,const UTF32StringList &); ///<简易排版

View File

@ -11,7 +11,7 @@ namespace hgl
class FontSource;
class TileFont;
class TextLayout;
class TextRenderable;
class TextPrimitive;
class TextRender
{
@ -33,7 +33,7 @@ namespace hgl
Color4f color;
GPUBuffer * ubo_color;
SortedSets<TextRenderable *> tr_sets;
SortedSets<TextPrimitive *> tr_sets;
private:
@ -53,14 +53,14 @@ namespace hgl
public:
TextRenderable *CreateRenderable();
TextRenderable *CreateRenderable(const UTF16String &str);
TextPrimitive *CreatePrimitive();
TextPrimitive *CreatePrimitive(const UTF16String &str);
bool Layout(TextRenderable *tr,const UTF16String &str);
bool Layout(TextPrimitive *tr,const UTF16String &str);
RenderableInstance *CreateRenderableInstance(TextRenderable *text_render_obj);
RenderableInstance *CreateRenderableInstance(TextPrimitive *text_render_obj);
void Release(TextRenderable *);
void Release(TextPrimitive *);
};//class TextRender
/**

View File

@ -1,50 +0,0 @@
#ifndef HGL_GRAPH_TEXT_RENDERABLE_INCLUDE
#define HGL_GRAPH_TEXT_RENDERABLE_INCLUDE
#include<hgl/graph/VKRenderable.h>
namespace hgl
{
namespace graph
{
/**
*
*/
class TextRenderable:public Renderable
{
GPUDevice * device;
Material * mtl;
uint max_count; ///<缓冲区最大容量
VBO * vbo_position;
VBO * vbo_tex_coord;
protected:
friend class TextLayout;
friend class TextRender;
SortedSets<u32char> chars_sets;
const SortedSets<u32char> &GetCharsSets()const{return chars_sets;}
void SetCharsSets(const SortedSets<u32char> &sl){chars_sets=sl;}
void ClearCharsSets(){chars_sets.Clear();}
private:
virtual ~TextRenderable();
public:
TextRenderable(GPUDevice *,Material *,uint mc=1024);
public:
void SetCharCount (const uint);
bool WriteVertex (const int16 *fp);
bool WriteTexCoord (const float *fp);
};//class TextRenderable:public Renderable
}//namespace graph
}//namespace hgl
#endif//HGL_GRAPH_TEXT_RENDERABLE_INCLUDE

2
res

@ -1 +1 @@
Subproject commit 70b697f13ef20e957d51efcb0ff8632f4615e3c0
Subproject commit 2f9727410cbe53f9867c544d8b6bd9f8ecdb97bf

View File

@ -61,10 +61,10 @@ SET(TILE_FONT_SOURCE ${SG_INCLUDE_PATH}/font/TileFont.h
SET(FONT_LAYOUT_SOURCE ${SG_INCLUDE_PATH}/font/TextLayout.h
font/TextLayout.cpp)
SET(TEXT_RENDERABLE_SOURCE ${SG_INCLUDE_PATH}/font/TextRenderable.h
SET(TEXT_RENDERABLE_SOURCE ${SG_INCLUDE_PATH}/font/TextPrimitive.h
${SG_INCLUDE_PATH}/font/TextRender.h
font/TextRender.cpp
font/TextRenderable.cpp)
font/TextPrimitive.cpp)
SOURCE_GROUP("Font" FILES ${FONT_MANAGE_SOURCE})
SOURCE_GROUP("Font\\Source" FILES ${FONT_SOURCE})
@ -220,9 +220,9 @@ SET(VK_CMD_BUFFER_SOURCE ${SG_INCLUDE_PATH}/VKCommandBuffer.h
SOURCE_GROUP("Vulkan\\Command Buffer" FILES ${VK_CMD_BUFFER_SOURCE})
SET(VK_RENDERABLE_SOURCE ${SG_INCLUDE_PATH}/VKRenderable.h
SET(VK_RENDERABLE_SOURCE ${SG_INCLUDE_PATH}/VKPrimitive.h
${SG_INCLUDE_PATH}/VKRenderableInstance.h
Vulkan/VKRenderable.cpp
Vulkan/VKPrimitive.cpp
Vulkan/VKRenderableInstance.cpp
Vulkan/VKTileData.cpp
Vulkan/VKTileFont.cpp)

View File

@ -12,7 +12,7 @@ namespace hgl
{
namespace graph
{
Renderable *CreateRenderableRectangle(RenderResource *db,const VAB *vab,const RectangleCreateInfo *rci)
Primitive *CreateRenderableRectangle(RenderResource *db,const VAB *vab,const RectangleCreateInfo *rci)
{
RenderableCreater rc(db,vab);
@ -29,7 +29,7 @@ namespace hgl
return rc.Finish();
}
Renderable *CreateRenderableGBufferComposition(RenderResource *db,const VAB *vab)
Primitive *CreateRenderableGBufferComposition(RenderResource *db,const VAB *vab)
{
RectangleCreateInfo rci;
@ -38,7 +38,7 @@ namespace hgl
return CreateRenderableRectangle(db,vab,&rci);
}
Renderable *CreateRenderableRoundRectangle(RenderResource *db,const VAB *vab,const RoundRectangleCreateInfo *rci)
Primitive *CreateRenderableRoundRectangle(RenderResource *db,const VAB *vab,const RoundRectangleCreateInfo *rci)
{
RenderableCreater rc(db,vab);
@ -112,7 +112,7 @@ namespace hgl
return rc.Finish();
}
Renderable *CreateRenderableCircle(RenderResource *db,const VAB *vab,const CircleCreateInfo *cci)
Primitive *CreateRenderableCircle(RenderResource *db,const VAB *vab,const CircleCreateInfo *cci)
{
RenderableCreater rc(db,vab);
@ -160,7 +160,7 @@ namespace hgl
return rc.Finish();
}
Renderable *CreateRenderablePlaneGrid(RenderResource *db,const VAB *vab,const PlaneGridCreateInfo *pgci)
Primitive *CreateRenderablePlaneGrid(RenderResource *db,const VAB *vab,const PlaneGridCreateInfo *pgci)
{
RenderableCreater rc(db,vab);
@ -207,7 +207,7 @@ namespace hgl
return rc.Finish();
}
Renderable *CreateRenderablePlane(RenderResource *db,const VAB *vab,const PlaneCreateInfo *pci)
Primitive *CreateRenderablePlane(RenderResource *db,const VAB *vab,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 };
@ -248,7 +248,7 @@ namespace hgl
return rc.Finish();
}
Renderable *CreateRenderableCube(RenderResource *db,const VAB *vab,const CubeCreateInfo *cci)
Primitive *CreateRenderableCube(RenderResource *db,const VAB *vab,const CubeCreateInfo *cci)
{
/**
* 4 5
@ -440,7 +440,7 @@ namespace hgl
* @param numberSlices
* @return
*/
Renderable *CreateRenderableSphere(RenderResource *db,const VAB *vab,const uint numberSlices)
Primitive *CreateRenderableSphere(RenderResource *db,const VAB *vab,const uint numberSlices)
{
RenderableCreater rc(db,vab);
@ -516,7 +516,7 @@ namespace hgl
return rc.Finish();
}
Renderable *CreateRenderableDome(RenderResource *db,const VAB *vab,const uint numberSlices)
Primitive *CreateRenderableDome(RenderResource *db,const VAB *vab,const uint numberSlices)
{
RenderableCreater rc(db,vab);
@ -637,7 +637,7 @@ namespace hgl
}
}//namespace
Renderable *CreateRenderableTorus(RenderResource *db,const VAB *vab,const TorusCreateInfo *tci)
Primitive *CreateRenderableTorus(RenderResource *db,const VAB *vab,const TorusCreateInfo *tci)
{
RenderableCreater rc(db,vab);
@ -793,7 +793,7 @@ namespace hgl
}
}//namespace
Renderable *CreateRenderableCylinder(RenderResource *db,const VAB *vab,const CylinderCreateInfo *cci)
Primitive *CreateRenderableCylinder(RenderResource *db,const VAB *vab,const CylinderCreateInfo *cci)
{
uint numberIndices = cci->numberSlices * 3 * 2 + cci->numberSlices * 6;
@ -1012,7 +1012,7 @@ namespace hgl
}
}//namespace
Renderable *CreateRenderableCone(RenderResource *db,const VAB *vab,const ConeCreateInfo *cci)
Primitive *CreateRenderableCone(RenderResource *db,const VAB *vab,const ConeCreateInfo *cci)
{
RenderableCreater rc(db,vab);
@ -1139,7 +1139,7 @@ namespace hgl
return rc.Finish();
}
Renderable *CreateRenderableAxis(RenderResource *db,const VAB *vab,const AxisCreateInfo *aci)
Primitive *CreateRenderableAxis(RenderResource *db,const VAB *vab,const AxisCreateInfo *aci)
{
if(!db||!vab||!aci)return(nullptr);
@ -1166,7 +1166,7 @@ namespace hgl
return rc.Finish();
}
Renderable *CreateRenderableBoundingBox(RenderResource *db,const VAB *vab,const BoundingBoxCreateInfo *cci)
Primitive *CreateRenderableBoundingBox(RenderResource *db,const VAB *vab,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,

View File

@ -2,7 +2,7 @@
#include<hgl/graph/Camera.h>
#include<hgl/graph/SceneNode.h>
#include<hgl/graph/VKBuffer.h>
#include<hgl/graph/VKRenderable.h>
#include<hgl/graph/VKPrimitive.h>
#include<hgl/graph/VKCommandBuffer.h>
#include<hgl/graph/VertexAttribDataAccess.h>
#include<hgl/graph/VKMaterialParameters.h>
@ -151,7 +151,7 @@ namespace hgl
//为所有的材质绑定
for(Material *mtl:material_sets)
{
MaterialParameters *mp=mtl->GetMP(DescriptorSetsType::Renderable);
MaterialParameters *mp=mtl->GetMP(DescriptorSetsType::Primitive);
if(mp)
{
@ -219,7 +219,7 @@ namespace hgl
MaterialParameters *mp;
for(int i=(int)DescriptorSetsType::BEGIN_RANGE;
i<(int)DescriptorSetsType::Renderable;
i<(int)DescriptorSetsType::Primitive;
i++)
{
mp=ri->GetMP((DescriptorSetsType)i);
@ -242,7 +242,7 @@ namespace hgl
}
{
mp=ri->GetMP(DescriptorSetsType::Renderable);
mp=ri->GetMP(DescriptorSetsType::Primitive);
if(mp)
{

View File

@ -105,14 +105,14 @@ namespace hgl
return (uint32 *)ibo->Map();
}
Renderable *RenderableCreater::Finish()
Primitive *RenderableCreater::Finish()
{
const uint si_count=vab->GetVertexAttrCount();
if(ssb_map.GetCount()!=si_count)
return(nullptr);
Renderable *render_obj=db->CreateRenderable(vertices_number);
Primitive *render_obj=db->CreatePrimitive(vertices_number);
const auto *sp=ssb_map.GetDataList();
for(uint i=0;i<si_count;i++)

View File

@ -123,7 +123,7 @@ bool RenderCmdBuffer::BindDescriptorSets(RenderableInstance *ri)
ds[count]=mp->GetVkDescriptorSet();
++count;
if((DescriptorSetsType)i==DescriptorSetsType::Renderable)
if((DescriptorSetsType)i==DescriptorSetsType::Primitive)
{
dynamic_count=mp->GetCount();

View File

@ -30,8 +30,9 @@ namespace
#ifdef _DEBUG
VK_EXT_DEBUG_MARKER_EXTENSION_NAME,
#endif//_DEBUG
VK_EXT_EXTENDED_DYNAMIC_STATE_EXTENSION_NAME,
// VK_EXT_EXTENDED_DYNAMIC_STATE_EXTENSION_NAME,
VK_EXT_PRIMITIVE_TOPOLOGY_LIST_RESTART_EXTENSION_NAME,
VK_EXT_CONDITIONAL_RENDERING_EXTENSION_NAME,
// VK_KHR_PUSH_DESCRIPTOR_EXTENSION_NAME,
// VK_EXT_HDR_METADATA_EXTENSION_NAME,
// VK_EXT_FULL_SCREEN_EXCLUSIVE_EXTENSION_NAME,

View File

@ -109,7 +109,7 @@ Material *GPUDevice::CreateMaterial(const UTF8String &mtl_name,ShaderModuleMap *
data->pipeline_layout_data=pld;
data->mp.m=CreateMP(mds,pld,DescriptorSetsType::Material );
data->mp.r=CreateMP(mds,pld,DescriptorSetsType::Renderable );
data->mp.r=CreateMP(mds,pld,DescriptorSetsType::Primitive );
data->mp.g=CreateMP(mds,pld,DescriptorSetsType::Global );
return(new Material(data));

View File

@ -72,11 +72,11 @@ MaterialInstance *RenderResource::CreateMaterialInstance(const OSString &mtl_fil
return CreateMaterialInstance(mtl,vab_cfg);
}
Renderable *RenderResource::CreateRenderable(const uint32_t vertex_count)
Primitive *RenderResource::CreatePrimitive(const uint32_t vertex_count)
{
if(!vertex_count)return(nullptr);
Renderable *ro=new Renderable(vertex_count);
Primitive *ro=new Primitive(vertex_count);
if(ro)
Add(ro);
@ -84,7 +84,7 @@ Renderable *RenderResource::CreateRenderable(const uint32_t vertex_count)
return ro;
}
RenderableInstance *RenderResource::CreateRenderableInstance(Renderable *r,MaterialInstance *mi,Pipeline *p)
RenderableInstance *RenderResource::CreateRenderableInstance(Primitive *r,MaterialInstance *mi,Pipeline *p)
{
if(!p||!mi||!r)
return(nullptr);

View File

@ -49,7 +49,7 @@ void LoadShaderDescriptor(const uint8 *data,ShaderDescriptor *sd_list,const uint
sd->set_type=CheckDescriptorSetsType(sd->name);
if(sd->set_type==DescriptorSetsType::Renderable)
if(sd->set_type==DescriptorSetsType::Primitive)
{
if(sd->desc_type==VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER)sd->desc_type=VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC;else
if(sd->desc_type==VK_DESCRIPTOR_TYPE_STORAGE_BUFFER)sd->desc_type=VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC;

View File

@ -1,63 +0,0 @@
#include<hgl/graph/VKRenderable.h>
#include<hgl/graph/VKBuffer.h>
#include<hgl/graph/VKShaderModule.h>
#include<hgl/graph/VKVertexAttribBuffer.h>
VK_NAMESPACE_BEGIN
//bool Renderable::Set(const int stage_input_binding,VAB *vab,VkDeviceSize offset)
//{
// if(stage_input_binding<0||stage_input_binding>=buf_count||!vab)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);
//
// //format信息来自于shader实际中可以不一样。但那样需要为每一个格式产生一个同样shader的material instance不同的格式又需要不同的pipeline我们不支持这种行为
//
// buf_list[stage_input_binding]=vab->GetBuffer();
// buf_offset[stage_input_binding]=offset;
//
// return(true);
//}
bool Renderable::Set(const AnsiString &name,VBO *vbo,VkDeviceSize offset)
{
if(!vbo)return(false);
if(buffer_list.KeyExist(name))return(false);
VBOData bd;
bd.buf=vbo;
bd.offset=offset;
buffer_list.Add(name,bd);
return(true);
}
VBO *Renderable::GetVBO(const AnsiString &name,VkDeviceSize *offset)
{
if(!offset)return(nullptr);
if(name.IsEmpty())return(nullptr);
VBOData bd;
if(buffer_list.Get(name,bd))
{
*offset=bd.offset;
return bd.buf;
}
return(nullptr);
}
VkBuffer Renderable::GetBuffer(const AnsiString &name,VkDeviceSize *offset)
{
VBO *vbo=GetVBO(name,offset);
if(vbo)return vbo->GetBuffer();
return(VK_NULL_HANDLE);
}
VK_NAMESPACE_END

View File

@ -8,7 +8,7 @@
VK_NAMESPACE_BEGIN
using namespace util;
RenderableInstance::RenderableInstance(Renderable *r,MaterialInstance *mi,Pipeline *p,const uint32_t count,VkBuffer *bl,VkDeviceSize *bs)
RenderableInstance::RenderableInstance(Primitive *r,MaterialInstance *mi,Pipeline *p,const uint32_t count,VkBuffer *bl,VkDeviceSize *bs)
{
render_obj=r;
pipeline=p;
@ -32,7 +32,7 @@ RenderableInstance::~RenderableInstance()
delete[] buffer_size;
}
RenderableInstance *CreateRenderableInstance(Renderable *r,MaterialInstance *mi,Pipeline *p)
RenderableInstance *CreateRenderableInstance(Primitive *r,MaterialInstance *mi,Pipeline *p)
{
if(!r||!mi||!p)return(nullptr);

View File

@ -11,7 +11,7 @@ VK_NAMESPACE_BEGIN
{
if(str[0]=='m')return DescriptorSetsType::Material;
if(str[0]=='g')return DescriptorSetsType::Global;
if(str[0]=='r')return DescriptorSetsType::Renderable;
if(str[0]=='r')return DescriptorSetsType::Primitive;
}
return DescriptorSetsType::Value;

View File

@ -1,6 +1,6 @@
#include<hgl/graph/font/TextLayout.h>
#include<hgl/graph/font/TileFont.h>
#include<hgl/graph/font/TextRenderable.h>
#include<hgl/graph/font/TextPrimitive.h>
#include<hgl/type/Extent.h>
namespace hgl
@ -48,7 +48,7 @@ namespace hgl
*
*/
template<typename T>
bool TextLayout::preprocess(TextRenderable *tr,TileFont *tile_font,const T *str,const int str_length)
bool TextLayout::preprocess(TextPrimitive *tr,TileFont *tile_font,const T *str,const int str_length)
{
if(!tr
||!tile_font
@ -243,7 +243,7 @@ namespace hgl
* \r\n
*/
template<typename T>
int TextLayout::SimpleLayout(TextRenderable *tr,TileFont *tf,const String<T> &str)
int TextLayout::SimpleLayout(TextPrimitive *tr,TileFont *tf,const String<T> &str)
{
if(!tr)
return(-1);
@ -292,8 +292,8 @@ namespace hgl
return result;
}
int TextLayout::SimpleLayout(TextRenderable *tr,TileFont *tf,const UTF16String &str){return this->SimpleLayout<u16char>(tr,tf,str);}
int TextLayout::SimpleLayout(TextRenderable *tr,TileFont *tf,const UTF32String &str){return this->SimpleLayout<u32char>(tr,tf,str);}
int TextLayout::SimpleLayout(TextPrimitive *tr,TileFont *tf,const UTF16String &str){return this->SimpleLayout<u16char>(tr,tf,str);}
int TextLayout::SimpleLayout(TextPrimitive *tr,TileFont *tf,const UTF32String &str){return this->SimpleLayout<u32char>(tr,tf,str);}
//template<typename T>
//int TextLayout::SimpleLayout(TileFont *tf,const StringList<String<T>> &sl)

View File

@ -1,8 +1,7 @@
#include<hgl/graph/font/TextRender.h>
#include<hgl/graph/font/TextRenderable.h>
#include<hgl/graph/font/TextPrimitive.h>
#include<hgl/graph/font/TileFont.h>
#include<hgl/graph/font/TextLayout.h>
#include<hgl/graph/font/TextRenderable.h>
#include<hgl/graph/VKDevice.h>
#include<hgl/type/Color.h>
@ -27,7 +26,7 @@ namespace hgl
TextRender::~TextRender()
{
for(TextRenderable *tr:tr_sets)
for(TextPrimitive *tr:tr_sets)
{
tile_font->Unregistry(tr->GetCharsSets().GetList());
delete tr;
@ -145,18 +144,18 @@ namespace hgl
return(true);
}
TextRenderable *TextRender::CreateRenderable()
TextPrimitive *TextRender::CreatePrimitive()
{
TextRenderable *tr=new TextRenderable(device,material);
TextPrimitive *tr=new TextPrimitive(device,material);
tr_sets.Add(tr);
return tr;
}
TextRenderable *TextRender::CreateRenderable(const UTF16String &str)
TextPrimitive *TextRender::CreatePrimitive(const UTF16String &str)
{
TextRenderable *tr=CreateRenderable();
TextPrimitive *tr=CreatePrimitive();
if(tl_engine->SimpleLayout(tr,tile_font,str)<=0)
return(tr);
@ -164,7 +163,7 @@ namespace hgl
return tr;
}
bool TextRender::Layout(TextRenderable *tr,const UTF16String &str)
bool TextRender::Layout(TextPrimitive *tr,const UTF16String &str)
{
if(!tr)
return(false);
@ -175,12 +174,12 @@ namespace hgl
return true;
}
RenderableInstance *TextRender::CreateRenderableInstance(TextRenderable *text_render_obj)
RenderableInstance *TextRender::CreateRenderableInstance(TextPrimitive *text_render_obj)
{
return db->CreateRenderableInstance(text_render_obj,material_instance,pipeline);
}
void TextRender::Release(TextRenderable *tr)
void TextRender::Release(TextPrimitive *tr)
{
if(!tr)return;

View File

@ -1,54 +0,0 @@
#include<hgl/graph/font/TextRenderable.h>
#include<hgl/graph/VKDevice.h>
#include<hgl/graph/VKMaterial.h>
#include<hgl/graph/VKVertexAttribBuffer.h>
namespace hgl
{
namespace graph
{
TextRenderable::TextRenderable(GPUDevice *dev,Material *m,uint mc):Renderable(mc)
{
device=dev;
mtl=m;
max_count=0;
vbo_position=nullptr;
vbo_tex_coord=nullptr;
}
TextRenderable::~TextRenderable()
{
SAFE_CLEAR(vbo_tex_coord);
SAFE_CLEAR(vbo_position);
}
void TextRenderable::SetCharCount(const uint cc)
{
this->draw_count=cc;
if(cc<=max_count)return;
max_count=power_to_2(cc);
{
if(vbo_position)
delete vbo_position;
vbo_position =device->CreateVBO(VF_V4I16,max_count);
Set(VAN::Position,vbo_position);
}
{
if(vbo_tex_coord)
delete vbo_tex_coord;
vbo_tex_coord =device->CreateVBO(VF_V4F,max_count);
Set(VAN::TexCoord,vbo_tex_coord);
}
}
bool TextRenderable::WriteVertex (const int16 *fp){if(!fp)return(false);if(!vbo_position )return(false);return vbo_position ->Write(fp,draw_count*4*sizeof(int16));}
bool TextRenderable::WriteTexCoord (const float *fp){if(!fp)return(false);if(!vbo_tex_coord)return(false);return vbo_tex_coord ->Write(fp,draw_count*4*sizeof(float));}
}//namespace graph
}//namespace hgl