renamed to Primitive from Renderable
This commit is contained in:
parent
1e0e74da2f
commit
0fca6b8fc4
@ -1 +1 @@
|
|||||||
Subproject commit ecbb0682a2c5b33348431d44e64b3a4b775829ee
|
Subproject commit 1bf41ad683d9fdfc092dee259567ac8054199bc6
|
@ -113,7 +113,7 @@ private:
|
|||||||
|
|
||||||
bool InitVBO()
|
bool InitVBO()
|
||||||
{
|
{
|
||||||
Renderable *render_obj=db->CreateRenderable(VERTEX_COUNT);
|
Primitive *render_obj=db->CreatePrimitive(VERTEX_COUNT);
|
||||||
if(!render_obj)return(false);
|
if(!render_obj)return(false);
|
||||||
|
|
||||||
if(!render_obj->Set(VAN::Position, db->CreateVBO(VF_V2F,VERTEX_COUNT,position_data)))return(false);
|
if(!render_obj->Set(VAN::Position, db->CreateVBO(VF_V2F,VERTEX_COUNT,position_data)))return(false);
|
||||||
|
@ -129,7 +129,7 @@ private:
|
|||||||
|
|
||||||
bool InitVBO()
|
bool InitVBO()
|
||||||
{
|
{
|
||||||
Renderable *render_obj=db->CreateRenderable(VERTEX_COUNT);
|
Primitive *render_obj=db->CreatePrimitive(VERTEX_COUNT);
|
||||||
if(!render_obj)return(false);
|
if(!render_obj)return(false);
|
||||||
|
|
||||||
if(!render_obj->Set(VAN::Position, db->CreateVBO(VF_V4I16,VERTEX_COUNT,position_data)))return(false);
|
if(!render_obj->Set(VAN::Position, db->CreateVBO(VF_V4I16,VERTEX_COUNT,position_data)))return(false);
|
||||||
|
@ -43,7 +43,7 @@ private:
|
|||||||
GPUBuffer * ubo_atomsphere =nullptr;
|
GPUBuffer * ubo_atomsphere =nullptr;
|
||||||
AtmosphereData atomsphere_data;
|
AtmosphereData atomsphere_data;
|
||||||
|
|
||||||
Renderable * ro_sphere =nullptr;
|
Primitive * ro_sphere =nullptr;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
|
||||||
|
@ -41,9 +41,9 @@ private:
|
|||||||
Sampler * sampler =nullptr;
|
Sampler * sampler =nullptr;
|
||||||
TextureCube * texture =nullptr;
|
TextureCube * texture =nullptr;
|
||||||
|
|
||||||
Renderable * ro_axis =nullptr;
|
Primitive * ro_axis =nullptr;
|
||||||
Renderable * ro_cube =nullptr;
|
Primitive * ro_cube =nullptr;
|
||||||
Renderable * ro_sphere =nullptr;
|
Primitive * ro_sphere =nullptr;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
|
||||||
@ -148,7 +148,7 @@ private:
|
|||||||
return(true);
|
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);
|
auto ri=db->CreateRenderableInstance(r,mi,pl);
|
||||||
|
|
||||||
|
@ -80,7 +80,7 @@ private:
|
|||||||
SubpassParam sp_gbuffer;
|
SubpassParam sp_gbuffer;
|
||||||
SubpassParam sp_composition;
|
SubpassParam sp_composition;
|
||||||
|
|
||||||
Renderable *ro_plane,
|
Primitive *ro_plane,
|
||||||
*ro_cube,
|
*ro_cube,
|
||||||
*ro_sphere,
|
*ro_sphere,
|
||||||
*ro_torus,
|
*ro_torus,
|
||||||
|
@ -14,7 +14,7 @@ private:
|
|||||||
|
|
||||||
TextRender * text_render =nullptr;
|
TextRender * text_render =nullptr;
|
||||||
|
|
||||||
TextRenderable * text_render_obj =nullptr;
|
TextPrimitive * text_render_obj =nullptr;
|
||||||
RenderableInstance *render_instance =nullptr;
|
RenderableInstance *render_instance =nullptr;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
@ -40,7 +40,7 @@ private:
|
|||||||
if(!text_render)
|
if(!text_render)
|
||||||
return(false);
|
return(false);
|
||||||
|
|
||||||
text_render_obj=text_render->CreateRenderable(str);
|
text_render_obj=text_render->CreatePrimitive(str);
|
||||||
if(!text_render_obj)
|
if(!text_render_obj)
|
||||||
return(false);
|
return(false);
|
||||||
|
|
||||||
|
@ -40,7 +40,7 @@ private:
|
|||||||
|
|
||||||
Sampler * sampler =nullptr;
|
Sampler * sampler =nullptr;
|
||||||
MaterialInstance * material_instance =nullptr;
|
MaterialInstance * material_instance =nullptr;
|
||||||
Renderable * render_obj =nullptr;
|
Primitive * render_obj =nullptr;
|
||||||
RenderableInstance *render_instance =nullptr;
|
RenderableInstance *render_instance =nullptr;
|
||||||
|
|
||||||
Pipeline * pipeline =nullptr;
|
Pipeline * pipeline =nullptr;
|
||||||
@ -174,7 +174,7 @@ private:
|
|||||||
{
|
{
|
||||||
const uint tile_count=tile_list.GetCount();
|
const uint tile_count=tile_list.GetCount();
|
||||||
|
|
||||||
render_obj=db->CreateRenderable(tile_count);
|
render_obj=db->CreatePrimitive(tile_count);
|
||||||
if(!render_obj)return(false);
|
if(!render_obj)return(false);
|
||||||
|
|
||||||
render_obj->Set(VAN::Position,db->CreateVBO(VF_V4F,tile_count,position_data));
|
render_obj->Set(VAN::Position,db->CreateVBO(VF_V4F,tile_count,position_data));
|
||||||
|
@ -32,7 +32,7 @@ private:
|
|||||||
Sampler * sampler =nullptr;
|
Sampler * sampler =nullptr;
|
||||||
Texture2D * texture =nullptr;
|
Texture2D * texture =nullptr;
|
||||||
|
|
||||||
Renderable * ro_sphere =nullptr;
|
Primitive * ro_sphere =nullptr;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
|
||||||
@ -74,7 +74,7 @@ private:
|
|||||||
return(true);
|
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);
|
auto ri=db->CreateRenderableInstance(r,mi,pl);
|
||||||
|
|
||||||
|
@ -47,7 +47,7 @@ private:
|
|||||||
|
|
||||||
bool InitVBO()
|
bool InitVBO()
|
||||||
{
|
{
|
||||||
auto render_obj=db->CreateRenderable(VERTEX_COUNT);
|
auto render_obj=db->CreatePrimitive(VERTEX_COUNT);
|
||||||
if(!render_obj)return(false);
|
if(!render_obj)return(false);
|
||||||
|
|
||||||
if(!render_obj->Set(VAN::Position,db->CreateVBO(VF_V2F,VERTEX_COUNT,position_data)))return(false);
|
if(!render_obj->Set(VAN::Position,db->CreateVBO(VF_V2F,VERTEX_COUNT,position_data)))return(false);
|
||||||
|
@ -35,7 +35,7 @@ private:
|
|||||||
|
|
||||||
bool InitVBO()
|
bool InitVBO()
|
||||||
{
|
{
|
||||||
auto render_obj=db->CreateRenderable(3);
|
auto render_obj=db->CreatePrimitive(3);
|
||||||
if(!render_obj)return(false);
|
if(!render_obj)return(false);
|
||||||
|
|
||||||
renderable_instance=db->CreateRenderableInstance(render_obj,material_instance,pipeline);
|
renderable_instance=db->CreateRenderableInstance(render_obj,material_instance,pipeline);
|
||||||
|
@ -28,7 +28,7 @@ private:
|
|||||||
MaterialInstance * material_instance =nullptr;
|
MaterialInstance * material_instance =nullptr;
|
||||||
Pipeline * pipeline =nullptr;
|
Pipeline * pipeline =nullptr;
|
||||||
|
|
||||||
Renderable * ro_plane_grid[3];
|
Primitive * ro_plane_grid[3];
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
|
||||||
@ -47,7 +47,7 @@ private:
|
|||||||
return(true);
|
return(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
RenderableInstance *Add(Renderable *r,const Matrix4f &mat)
|
RenderableInstance *Add(Primitive *r,const Matrix4f &mat)
|
||||||
{
|
{
|
||||||
RenderableInstance *ri=db->CreateRenderableInstance(r,material_instance,pipeline);
|
RenderableInstance *ri=db->CreateRenderableInstance(r,material_instance,pipeline);
|
||||||
|
|
||||||
|
@ -59,7 +59,7 @@ private:
|
|||||||
Texture2D * normal =nullptr;
|
Texture2D * normal =nullptr;
|
||||||
}texture;
|
}texture;
|
||||||
|
|
||||||
Renderable *ro_axis,
|
Primitive *ro_axis,
|
||||||
*ro_cube,
|
*ro_cube,
|
||||||
*ro_sphere,
|
*ro_sphere,
|
||||||
*ro_torus,
|
*ro_torus,
|
||||||
@ -230,14 +230,14 @@ private:
|
|||||||
return(true);
|
return(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Add(Renderable *r,Pipeline *pl)
|
void Add(Primitive *r,Pipeline *pl)
|
||||||
{
|
{
|
||||||
auto ri=db->CreateRenderableInstance(r,material_instance,pl);
|
auto ri=db->CreateRenderableInstance(r,material_instance,pl);
|
||||||
|
|
||||||
render_root.CreateSubNode(ri);
|
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);
|
auto ri=db->CreateRenderableInstance(r,material_instance,pl);
|
||||||
|
|
||||||
|
@ -53,7 +53,7 @@ private:
|
|||||||
|
|
||||||
bool InitVBO()
|
bool InitVBO()
|
||||||
{
|
{
|
||||||
Renderable *render_obj=db->CreateRenderable(VERTEX_COUNT);
|
Primitive *render_obj=db->CreatePrimitive(VERTEX_COUNT);
|
||||||
if(!render_obj)return(false);
|
if(!render_obj)return(false);
|
||||||
|
|
||||||
if(!render_obj->Set(VAN::Position, db->CreateVBO(VF_V2F,VERTEX_COUNT,position_data)))return(false);
|
if(!render_obj->Set(VAN::Position, db->CreateVBO(VF_V2F,VERTEX_COUNT,position_data)))return(false);
|
||||||
|
@ -23,13 +23,13 @@ using namespace hgl::graph;
|
|||||||
constexpr uint32_t SCREEN_WIDTH=1280;
|
constexpr uint32_t SCREEN_WIDTH=1280;
|
||||||
constexpr uint32_t SCREEN_HEIGHT=720;
|
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();
|
const vulkan::VertexShaderModule *vsm=mtl->GetVertexShaderModule();
|
||||||
|
|
||||||
uint draw_count=mesh->indices_count;
|
uint draw_count=mesh->indices_count;
|
||||||
|
|
||||||
vulkan::Renderable *render_obj=nullptr;
|
vulkan::Primitive *render_obj=nullptr;
|
||||||
{
|
{
|
||||||
const int vertex_binding=vsm->GetStageInputBinding("Vertex");
|
const int vertex_binding=vsm->GetStageInputBinding("Vertex");
|
||||||
|
|
||||||
@ -109,13 +109,13 @@ private:
|
|||||||
|
|
||||||
ModelData *model_data;
|
ModelData *model_data;
|
||||||
|
|
||||||
vulkan::Renderable **mesh_renderable;
|
vulkan::Primitive **mesh_renderable;
|
||||||
RenderableInstance **mesh_renderable_instance;
|
RenderableInstance **mesh_renderable_instance;
|
||||||
|
|
||||||
vulkan::Renderable *axis_renderable;
|
vulkan::Primitive *axis_renderable;
|
||||||
RenderableInstance *axis_renderable_instance;
|
RenderableInstance *axis_renderable_instance;
|
||||||
|
|
||||||
vulkan::Renderable *bbox_renderable;
|
vulkan::Primitive *bbox_renderable;
|
||||||
RenderableInstance *bbox_renderable_instance;
|
RenderableInstance *bbox_renderable_instance;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
@ -163,7 +163,7 @@ private:
|
|||||||
return(true);
|
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);
|
return db->CreateRenderableInstance(mp.pipeline,mp.material_instance,r);
|
||||||
}
|
}
|
||||||
@ -173,7 +173,7 @@ private:
|
|||||||
const uint count=model_data->mesh_list.GetCount();
|
const uint count=model_data->mesh_list.GetCount();
|
||||||
MeshData **md=model_data->mesh_list.GetData();
|
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];
|
mesh_renderable_instance=new RenderableInstance *[count];
|
||||||
|
|
||||||
for(uint i=0;i<count;i++)
|
for(uint i=0;i<count;i++)
|
||||||
|
@ -105,7 +105,7 @@ public:
|
|||||||
cci.center_color=Vector4f(1,1,1,1);
|
cci.center_color=Vector4f(1,1,1,1);
|
||||||
cci.border_color=Vector4f(1,1,1,0);
|
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);
|
if(!render_obj)return(false);
|
||||||
|
|
||||||
os.renderable_instance=db->CreateRenderableInstance(render_obj,os.material_instance,os.pipeline);
|
os.renderable_instance=db->CreateRenderableInstance(render_obj,os.material_instance,os.pipeline);
|
||||||
@ -141,7 +141,7 @@ public:
|
|||||||
|
|
||||||
cci.tex_coord=true;
|
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);
|
if(!render_obj)return(false);
|
||||||
|
|
||||||
cube.renderable_instance=db->CreateRenderableInstance(render_obj,cube.material_instance,cube.pipeline);
|
cube.renderable_instance=db->CreateRenderableInstance(render_obj,cube.material_instance,cube.pipeline);
|
||||||
|
@ -42,9 +42,9 @@ private:
|
|||||||
MaterialInstance * material_instance =nullptr;
|
MaterialInstance * material_instance =nullptr;
|
||||||
Pipeline * pipeline =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;
|
VBO * vbo_pos =nullptr;
|
||||||
|
|
||||||
@ -67,7 +67,7 @@ private:
|
|||||||
return(true);
|
return(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
RenderableInstance *Add(Renderable *r,const Matrix4f &mat)
|
RenderableInstance *Add(Primitive *r,const Matrix4f &mat)
|
||||||
{
|
{
|
||||||
RenderableInstance *ri=db->CreateRenderableInstance(r,material_instance,pipeline);
|
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)return(false);
|
||||||
|
|
||||||
if(!ro_line->Set(VAN::Position, vbo_pos=db->CreateVBO(VF_V3F,2,position_data)))return(false);
|
if(!ro_line->Set(VAN::Position, vbo_pos=db->CreateVBO(VF_V3F,2,position_data)))return(false);
|
||||||
|
@ -37,7 +37,7 @@ private:
|
|||||||
Texture2D * texture =nullptr;
|
Texture2D * texture =nullptr;
|
||||||
Sampler * sampler =nullptr;
|
Sampler * sampler =nullptr;
|
||||||
MaterialInstance * material_instance =nullptr;
|
MaterialInstance * material_instance =nullptr;
|
||||||
Renderable * render_obj =nullptr;
|
Primitive * render_obj =nullptr;
|
||||||
RenderableInstance *render_instance =nullptr;
|
RenderableInstance *render_instance =nullptr;
|
||||||
|
|
||||||
Pipeline * pipeline =nullptr;
|
Pipeline * pipeline =nullptr;
|
||||||
@ -66,7 +66,7 @@ private:
|
|||||||
|
|
||||||
bool InitVBO()
|
bool InitVBO()
|
||||||
{
|
{
|
||||||
render_obj=db->CreateRenderable(VERTEX_COUNT);
|
render_obj=db->CreatePrimitive(VERTEX_COUNT);
|
||||||
|
|
||||||
if(!render_obj)return(false);
|
if(!render_obj)return(false);
|
||||||
|
|
||||||
|
@ -36,7 +36,7 @@ private:
|
|||||||
GPUBuffer * ubo_color =nullptr;
|
GPUBuffer * ubo_color =nullptr;
|
||||||
GPUBuffer * ubo_sun =nullptr;
|
GPUBuffer * ubo_sun =nullptr;
|
||||||
|
|
||||||
Renderable * renderable_object =nullptr;
|
Primitive * renderable_object =nullptr;
|
||||||
|
|
||||||
Pipeline * pipeline =nullptr;
|
Pipeline * pipeline =nullptr;
|
||||||
|
|
||||||
|
@ -34,7 +34,7 @@ private:
|
|||||||
|
|
||||||
GPUBuffer * ubo_sky_color =nullptr;
|
GPUBuffer * ubo_sky_color =nullptr;
|
||||||
|
|
||||||
Renderable * ro_skyphere =nullptr;
|
Primitive * ro_skyphere =nullptr;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
|
||||||
@ -77,7 +77,7 @@ private:
|
|||||||
return(true);
|
return(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
RenderableInstance *Add(Renderable *r,const Matrix4f &mat)
|
RenderableInstance *Add(Primitive *r,const Matrix4f &mat)
|
||||||
{
|
{
|
||||||
RenderableInstance *ri=db->CreateRenderableInstance(r,material_instance,pipeline);
|
RenderableInstance *ri=db->CreateRenderableInstance(r,material_instance,pipeline);
|
||||||
|
|
||||||
|
@ -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;
|
MaterialInstance * material_instance =nullptr;
|
||||||
Pipeline * pipeline =nullptr;
|
Pipeline * pipeline =nullptr;
|
||||||
|
|
||||||
Renderable * renderable =nullptr;
|
Primitive * renderable =nullptr;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
|
||||||
@ -66,7 +66,7 @@ private:
|
|||||||
return(true);
|
return(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
RenderableInstance *Add(Renderable *r,const Matrix4f &mat)
|
RenderableInstance *Add(Primitive *r,const Matrix4f &mat)
|
||||||
{
|
{
|
||||||
RenderableInstance *ri=db->CreateRenderableInstance(r,material_instance,pipeline);
|
RenderableInstance *ri=db->CreateRenderableInstance(r,material_instance,pipeline);
|
||||||
|
|
||||||
|
@ -53,7 +53,7 @@ private:
|
|||||||
|
|
||||||
bool InitVBO()
|
bool InitVBO()
|
||||||
{
|
{
|
||||||
Renderable *render_obj=db->CreateRenderable(VERTEX_COUNT);
|
Primitive *render_obj=db->CreatePrimitive(VERTEX_COUNT);
|
||||||
if(!render_obj)return(false);
|
if(!render_obj)return(false);
|
||||||
|
|
||||||
if(!render_obj->Set(VAN::Position, db->CreateVBO(VF_V2F,VERTEX_COUNT,position_data)))return(false);
|
if(!render_obj->Set(VAN::Position, db->CreateVBO(VF_V2F,VERTEX_COUNT,position_data)))return(false);
|
||||||
|
@ -56,7 +56,7 @@ private:
|
|||||||
|
|
||||||
bool InitVBO()
|
bool InitVBO()
|
||||||
{
|
{
|
||||||
auto render_obj=db->CreateRenderable(VERTEX_COUNT);
|
auto render_obj=db->CreatePrimitive(VERTEX_COUNT);
|
||||||
if(!render_obj)return(false);
|
if(!render_obj)return(false);
|
||||||
|
|
||||||
if(!render_obj->Set(VAN::Position,db->CreateVBO(VF_V2F,VERTEX_COUNT,position_data)))return(false);
|
if(!render_obj->Set(VAN::Position,db->CreateVBO(VF_V2F,VERTEX_COUNT,position_data)))return(false);
|
||||||
|
@ -55,7 +55,7 @@ private:
|
|||||||
|
|
||||||
bool InitVBO()
|
bool InitVBO()
|
||||||
{
|
{
|
||||||
Renderable *render_obj=db->CreateRenderable(VERTEX_COUNT);
|
Primitive *render_obj=db->CreatePrimitive(VERTEX_COUNT);
|
||||||
if(!render_obj)return(false);
|
if(!render_obj)return(false);
|
||||||
|
|
||||||
if(!render_obj->Set(VAN::Position, db->CreateVBO(VF_V2F,VERTEX_COUNT,position_data)))return(false);
|
if(!render_obj->Set(VAN::Position, db->CreateVBO(VF_V2F,VERTEX_COUNT,position_data)))return(false);
|
||||||
|
@ -80,7 +80,7 @@ private:
|
|||||||
|
|
||||||
bool InitVBO()
|
bool InitVBO()
|
||||||
{
|
{
|
||||||
auto render_obj=db->CreateRenderable(VERTEX_COUNT);
|
auto render_obj=db->CreatePrimitive(VERTEX_COUNT);
|
||||||
if(!render_obj)return(false);
|
if(!render_obj)return(false);
|
||||||
|
|
||||||
if(!render_obj->Set(VAN::Position,db->CreateVBO(VF_V2F,VERTEX_COUNT,position_data)))return(false);
|
if(!render_obj->Set(VAN::Position,db->CreateVBO(VF_V2F,VERTEX_COUNT,position_data)))return(false);
|
||||||
|
@ -57,7 +57,7 @@ private:
|
|||||||
|
|
||||||
bool InitVBO()
|
bool InitVBO()
|
||||||
{
|
{
|
||||||
Renderable *render_obj=db->CreateRenderable(VERTEX_COUNT);
|
Primitive *render_obj=db->CreatePrimitive(VERTEX_COUNT);
|
||||||
if(!render_obj)return(false);
|
if(!render_obj)return(false);
|
||||||
|
|
||||||
if(!render_obj->Set(VAN::Position, db->CreateVBO(VF_V2F,VERTEX_COUNT,position_data)))return(false);
|
if(!render_obj->Set(VAN::Position, db->CreateVBO(VF_V2F,VERTEX_COUNT,position_data)))return(false);
|
||||||
|
@ -7,7 +7,7 @@
|
|||||||
#include<hgl/graph/VKBuffer.h>
|
#include<hgl/graph/VKBuffer.h>
|
||||||
#include<hgl/graph/VKShaderModule.h>
|
#include<hgl/graph/VKShaderModule.h>
|
||||||
#include<hgl/graph/VKImageView.h>
|
#include<hgl/graph/VKImageView.h>
|
||||||
#include<hgl/graph/VKRenderable.h>
|
#include<hgl/graph/VKPrimitive.h>
|
||||||
#include<hgl/graph/VKDescriptorSets.h>
|
#include<hgl/graph/VKDescriptorSets.h>
|
||||||
#include<hgl/graph/VKRenderPass.h>
|
#include<hgl/graph/VKRenderPass.h>
|
||||||
#include<hgl/graph/VKPipeline.h>
|
#include<hgl/graph/VKPipeline.h>
|
||||||
|
@ -18,12 +18,12 @@ namespace hgl
|
|||||||
RectScope2f scope;
|
RectScope2f scope;
|
||||||
};//struct RectangleCreateInfo
|
};//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; ///<圆角精度
|
uint32_t round_per; ///<圆角精度
|
||||||
};//struct RoundRectangleCreateInfo:public RectangleCreateInfo
|
};//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圆形(扇形/线圈)
|
* 创建一个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
|
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
|
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
|
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,0,半径为1的球体(三角形)
|
* 创建一个球心坐标为0,0,0,半径为1的球体(三角形)
|
||||||
*/
|
*/
|
||||||
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
|
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
|
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
|
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
|
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 graph
|
||||||
};//namespace hgl
|
};//namespace hgl
|
||||||
#endif//HGL_GRAPH_INLINE_GEOMETRY_INCLUDE
|
#endif//HGL_GRAPH_INLINE_GEOMETRY_INCLUDE
|
||||||
|
@ -78,7 +78,7 @@ namespace hgl
|
|||||||
uint16 * CreateIBO16(uint count,const uint16 *data=nullptr); ///<创建16位的索引缓冲区
|
uint16 * CreateIBO16(uint count,const uint16 *data=nullptr); ///<创建16位的索引缓冲区
|
||||||
uint32 * CreateIBO32(uint count,const uint32 *data=nullptr); ///<创建32位的索引缓冲区
|
uint32 * CreateIBO32(uint count,const uint32 *data=nullptr); ///<创建32位的索引缓冲区
|
||||||
|
|
||||||
virtual Renderable * Finish(); ///<结束并创建可渲染对象
|
virtual Primitive * Finish(); ///<结束并创建可渲染对象
|
||||||
};//class RenderableCreater
|
};//class RenderableCreater
|
||||||
}//namespace graph
|
}//namespace graph
|
||||||
}//namespace hgl
|
}//namespace hgl
|
||||||
|
@ -8,7 +8,7 @@
|
|||||||
#include<iostream>
|
#include<iostream>
|
||||||
#include<hgl/graph/VKNamespace.h>
|
#include<hgl/graph/VKNamespace.h>
|
||||||
#include<hgl/graph/VKFormat.h>
|
#include<hgl/graph/VKFormat.h>
|
||||||
#include<hgl/graph/VKPrimivate.h>
|
#include<hgl/graph/VKPrimitiveType.h>
|
||||||
#include<hgl/graph/VKStruct.h>
|
#include<hgl/graph/VKStruct.h>
|
||||||
#include<hgl/graph/VKRenderbufferInfo.h>
|
#include<hgl/graph/VKRenderbufferInfo.h>
|
||||||
|
|
||||||
@ -78,9 +78,9 @@ enum class DescriptorSetsType
|
|||||||
Material, ///<材质中永远不变的参数
|
Material, ///<材质中永远不变的参数
|
||||||
// Texture, ///<材质中的纹理参数
|
// Texture, ///<材质中的纹理参数
|
||||||
Value, ///<材质中的变量参数
|
Value, ///<材质中的变量参数
|
||||||
Renderable, ///<渲染实例参数(如Local2World matrix)
|
Primitive, ///<渲染实例参数(如Local2World matrix)
|
||||||
|
|
||||||
ENUM_CLASS_RANGE(Global,Renderable)
|
ENUM_CLASS_RANGE(Global,Primitive)
|
||||||
};//
|
};//
|
||||||
|
|
||||||
const DescriptorSetsType CheckDescriptorSetsType(const char *str);
|
const DescriptorSetsType CheckDescriptorSetsType(const char *str);
|
||||||
@ -130,7 +130,7 @@ using VABConfigInfo=Map<AnsiString,VAConfig>;
|
|||||||
class VertexAttributeBinding;
|
class VertexAttributeBinding;
|
||||||
using VAB=VertexAttributeBinding;
|
using VAB=VertexAttributeBinding;
|
||||||
|
|
||||||
class Renderable;
|
class Primitive;
|
||||||
class RenderableInstance;
|
class RenderableInstance;
|
||||||
|
|
||||||
class RenderResource;
|
class RenderResource;
|
||||||
|
@ -67,7 +67,7 @@ public:
|
|||||||
MaterialParameters * GetMP (const DescriptorSetsType &type)
|
MaterialParameters * GetMP (const DescriptorSetsType &type)
|
||||||
{
|
{
|
||||||
if(type==DescriptorSetsType::Material )return data->mp.m;else
|
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
|
if(type==DescriptorSetsType::Global )return data->mp.g;else
|
||||||
return(nullptr);
|
return(nullptr);
|
||||||
}
|
}
|
||||||
|
@ -34,7 +34,7 @@ public:
|
|||||||
MP_TYPE_IS(Material)
|
MP_TYPE_IS(Material)
|
||||||
// MP_TYPE_IS(Texture)
|
// MP_TYPE_IS(Texture)
|
||||||
MP_TYPE_IS(Value)
|
MP_TYPE_IS(Value)
|
||||||
MP_TYPE_IS(Renderable)
|
MP_TYPE_IS(Primitive)
|
||||||
MP_TYPE_IS(Global)
|
MP_TYPE_IS(Global)
|
||||||
#undef MP_TYPE_IS
|
#undef MP_TYPE_IS
|
||||||
|
|
||||||
|
@ -4,7 +4,7 @@
|
|||||||
#include<hgl/graph/VKMaterial.h>
|
#include<hgl/graph/VKMaterial.h>
|
||||||
#include<hgl/graph/VKPipeline.h>
|
#include<hgl/graph/VKPipeline.h>
|
||||||
#include<hgl/graph/VKDescriptorSets.h>
|
#include<hgl/graph/VKDescriptorSets.h>
|
||||||
#include<hgl/graph/VKRenderable.h>
|
#include<hgl/graph/VKPrimitive.h>
|
||||||
#include<hgl/graph/VKBuffer.h>
|
#include<hgl/graph/VKBuffer.h>
|
||||||
#include<hgl/graph/VKSampler.h>
|
#include<hgl/graph/VKSampler.h>
|
||||||
#include<hgl/graph/VKTexture.h>
|
#include<hgl/graph/VKTexture.h>
|
||||||
@ -12,14 +12,14 @@
|
|||||||
#include<hgl/graph/VKMaterialInstance.h>
|
#include<hgl/graph/VKMaterialInstance.h>
|
||||||
#include<hgl/graph/VertexAttribData.h>
|
#include<hgl/graph/VertexAttribData.h>
|
||||||
#include<hgl/graph/VKRenderableInstance.h>
|
#include<hgl/graph/VKRenderableInstance.h>
|
||||||
#include<hgl/graph/font/TextRenderable.h>
|
#include<hgl/graph/font/TextPrimitive.h>
|
||||||
#include<hgl/type/ResManage.h>
|
#include<hgl/type/ResManage.h>
|
||||||
VK_NAMESPACE_BEGIN
|
VK_NAMESPACE_BEGIN
|
||||||
using MaterialID =int;
|
using MaterialID =int;
|
||||||
using MaterialInstanceID =int;
|
using MaterialInstanceID =int;
|
||||||
using BufferID =int;
|
using BufferID =int;
|
||||||
using DescriptorSetsID =int;
|
using DescriptorSetsID =int;
|
||||||
using RenderableID =int;
|
using PrimitiveID =int;
|
||||||
using RenderableInstanceID =int;
|
using RenderableInstanceID =int;
|
||||||
using SamplerID =int;
|
using SamplerID =int;
|
||||||
using TextureID =int;
|
using TextureID =int;
|
||||||
@ -40,7 +40,7 @@ class RenderResource
|
|||||||
IDResManage<MaterialID, Material> rm_material; ///<材质合集
|
IDResManage<MaterialID, Material> rm_material; ///<材质合集
|
||||||
IDResManage<MaterialInstanceID, MaterialInstance> rm_material_instance; ///<材质实例合集
|
IDResManage<MaterialInstanceID, MaterialInstance> rm_material_instance; ///<材质实例合集
|
||||||
IDResManage<DescriptorSetsID, DescriptorSets> rm_desc_sets; ///<描述符合集
|
IDResManage<DescriptorSetsID, DescriptorSets> rm_desc_sets; ///<描述符合集
|
||||||
IDResManage<RenderableID, Renderable> rm_renderables; ///<可渲染对象合集
|
IDResManage<PrimitiveID, Primitive> rm_primitives; ///<图元合集
|
||||||
IDResManage<BufferID, GPUBuffer> rm_buffers; ///<顶点缓冲区合集
|
IDResManage<BufferID, GPUBuffer> rm_buffers; ///<顶点缓冲区合集
|
||||||
IDResManage<SamplerID, Sampler> rm_samplers; ///<采样器合集
|
IDResManage<SamplerID, Sampler> rm_samplers; ///<采样器合集
|
||||||
IDResManage<TextureID, Texture> rm_textures; ///<纹理合集
|
IDResManage<TextureID, Texture> rm_textures; ///<纹理合集
|
||||||
@ -56,7 +56,7 @@ public: //Add
|
|||||||
MaterialID Add(Material * mtl ){return rm_material.Add(mtl);}
|
MaterialID Add(Material * mtl ){return rm_material.Add(mtl);}
|
||||||
MaterialInstanceID Add(MaterialInstance * mi ){return rm_material_instance.Add(mi);}
|
MaterialInstanceID Add(MaterialInstance * mi ){return rm_material_instance.Add(mi);}
|
||||||
DescriptorSetsID Add(DescriptorSets * ds ){return rm_desc_sets.Add(ds);}
|
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);}
|
BufferID Add(GPUBuffer * buf ){return rm_buffers.Add(buf);}
|
||||||
SamplerID Add(Sampler * s ){return rm_samplers.Add(s);}
|
SamplerID Add(Sampler * s ){return rm_samplers.Add(s);}
|
||||||
TextureID Add(Texture * t ){return rm_textures.Add(t);}
|
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(Material *,const VABConfigInfo *vab_cfg=nullptr);
|
||||||
MaterialInstance * CreateMaterialInstance(const OSString &,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(VkSamplerCreateInfo *sci=nullptr);
|
||||||
Sampler * CreateSampler(Texture *);
|
Sampler * CreateSampler(Texture *);
|
||||||
@ -110,7 +110,7 @@ public: //Get
|
|||||||
Material * GetMaterial (const MaterialID &id){return rm_material.Get(id);}
|
Material * GetMaterial (const MaterialID &id){return rm_material.Get(id);}
|
||||||
MaterialInstance * GetMaterialInstance (const MaterialInstanceID &id){return rm_material_instance.Get(id);}
|
MaterialInstance * GetMaterialInstance (const MaterialInstanceID &id){return rm_material_instance.Get(id);}
|
||||||
DescriptorSets * GetDescSets (const DescriptorSetsID &id){return rm_desc_sets.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);}
|
GPUBuffer * GetBuffer (const BufferID &id){return rm_buffers.Get(id);}
|
||||||
Sampler * GetSampler (const SamplerID &id){return rm_samplers.Get(id);}
|
Sampler * GetSampler (const SamplerID &id){return rm_samplers.Get(id);}
|
||||||
Texture * GetTexture (const TextureID &id){return rm_textures.Get(id);}
|
Texture * GetTexture (const TextureID &id){return rm_textures.Get(id);}
|
||||||
|
@ -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
|
|
@ -1,7 +1,7 @@
|
|||||||
#ifndef HGL_GRAPH_RENDERABLE_INSTANCE_INCLUDE
|
#ifndef HGL_GRAPH_RENDERABLE_INSTANCE_INCLUDE
|
||||||
#define 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/VKPipeline.h>
|
||||||
#include<hgl/graph/VKDescriptorSets.h>
|
#include<hgl/graph/VKDescriptorSets.h>
|
||||||
#include<hgl/graph/VKMaterial.h>
|
#include<hgl/graph/VKMaterial.h>
|
||||||
@ -16,7 +16,7 @@ class RenderableInstance
|
|||||||
{
|
{
|
||||||
Pipeline * pipeline;
|
Pipeline * pipeline;
|
||||||
MaterialInstance * mat_inst;
|
MaterialInstance * mat_inst;
|
||||||
Renderable * render_obj;
|
Primitive * render_obj;
|
||||||
|
|
||||||
uint32_t buffer_count;
|
uint32_t buffer_count;
|
||||||
VkBuffer * buffer_list;
|
VkBuffer * buffer_list;
|
||||||
@ -26,9 +26,9 @@ class RenderableInstance
|
|||||||
|
|
||||||
private:
|
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:
|
public:
|
||||||
|
|
||||||
@ -40,7 +40,7 @@ public:
|
|||||||
VkPipelineLayout GetPipelineLayout (){return mat_inst->GetMaterial()->GetPipelineLayout();}
|
VkPipelineLayout GetPipelineLayout (){return mat_inst->GetMaterial()->GetPipelineLayout();}
|
||||||
Material * GetMaterial (){return mat_inst->GetMaterial();}
|
Material * GetMaterial (){return mat_inst->GetMaterial();}
|
||||||
MaterialInstance * GetMaterialInstance (){return mat_inst;}
|
MaterialInstance * GetMaterialInstance (){return mat_inst;}
|
||||||
Renderable * GetRenderable (){return render_obj;}
|
Primitive * GetRenderable (){return render_obj;}
|
||||||
const AABB & GetBoundingBox ()const{return render_obj->GetBoundingBox();}
|
const AABB & GetBoundingBox ()const{return render_obj->GetBoundingBox();}
|
||||||
|
|
||||||
const uint32_t GetBufferCount ()const{return buffer_count;}
|
const uint32_t GetBufferCount ()const{return buffer_count;}
|
||||||
@ -59,6 +59,6 @@ public: //instance support
|
|||||||
virtual const uint32_t GetInstanceCount ()const{return 1;}
|
virtual const uint32_t GetInstanceCount ()const{return 1;}
|
||||||
};//class RenderableInstance
|
};//class RenderableInstance
|
||||||
|
|
||||||
RenderableInstance *CreateRenderableInstance(Renderable *,MaterialInstance *,Pipeline *);
|
RenderableInstance *CreateRenderableInstance(Primitive *,MaterialInstance *,Pipeline *);
|
||||||
VK_NAMESPACE_END
|
VK_NAMESPACE_END
|
||||||
#endif//HGL_GRAPH_RENDERABLE_INSTANCE_INCLUDE
|
#endif//HGL_GRAPH_RENDERABLE_INSTANCE_INCLUDE
|
||||||
|
@ -11,7 +11,7 @@ namespace hgl
|
|||||||
namespace graph
|
namespace graph
|
||||||
{
|
{
|
||||||
class TileFont;
|
class TileFont;
|
||||||
class TextRenderable;
|
class TextPrimitive;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 字符属性,可精确到字也可精确到段落或是全文
|
* 字符属性,可精确到字也可精确到段落或是全文
|
||||||
@ -112,7 +112,7 @@ namespace hgl
|
|||||||
|
|
||||||
ObjectList<CharDrawAttr> draw_chars_list; ///<所有字符属性列表
|
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:
|
protected:
|
||||||
|
|
||||||
@ -124,7 +124,7 @@ namespace hgl
|
|||||||
int sl_v_r2l();
|
int sl_v_r2l();
|
||||||
int sl_v_l2r();
|
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>> &); ///<简易排版
|
// template<typename T> int SimpleLayout(TileFont *,const StringList<String<T>> &); ///<简易排版
|
||||||
|
|
||||||
@ -142,7 +142,7 @@ namespace hgl
|
|||||||
|
|
||||||
protected:
|
protected:
|
||||||
|
|
||||||
TextRenderable *text_render_obj;
|
TextPrimitive *text_render_obj;
|
||||||
MemBlock<int16> vertex;
|
MemBlock<int16> vertex;
|
||||||
MemBlock<float> tex_coord;
|
MemBlock<float> tex_coord;
|
||||||
|
|
||||||
@ -167,8 +167,8 @@ namespace hgl
|
|||||||
|
|
||||||
virtual bool Init (); ///<初始化排版
|
virtual bool Init (); ///<初始化排版
|
||||||
|
|
||||||
int SimpleLayout (TextRenderable *,TileFont *,const UTF16String &); ///<简易排版
|
int SimpleLayout (TextPrimitive *,TileFont *,const UTF16String &); ///<简易排版
|
||||||
int SimpleLayout (TextRenderable *,TileFont *,const UTF32String &); ///<简易排版
|
int SimpleLayout (TextPrimitive *,TileFont *,const UTF32String &); ///<简易排版
|
||||||
|
|
||||||
// int SimpleLayout (TileFont *,const UTF16StringList &); ///<简易排版
|
// int SimpleLayout (TileFont *,const UTF16StringList &); ///<简易排版
|
||||||
// int SimpleLayout (TileFont *,const UTF32StringList &); ///<简易排版
|
// int SimpleLayout (TileFont *,const UTF32StringList &); ///<简易排版
|
||||||
|
@ -11,7 +11,7 @@ namespace hgl
|
|||||||
class FontSource;
|
class FontSource;
|
||||||
class TileFont;
|
class TileFont;
|
||||||
class TextLayout;
|
class TextLayout;
|
||||||
class TextRenderable;
|
class TextPrimitive;
|
||||||
|
|
||||||
class TextRender
|
class TextRender
|
||||||
{
|
{
|
||||||
@ -33,7 +33,7 @@ namespace hgl
|
|||||||
Color4f color;
|
Color4f color;
|
||||||
GPUBuffer * ubo_color;
|
GPUBuffer * ubo_color;
|
||||||
|
|
||||||
SortedSets<TextRenderable *> tr_sets;
|
SortedSets<TextPrimitive *> tr_sets;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
|
||||||
@ -53,14 +53,14 @@ namespace hgl
|
|||||||
|
|
||||||
public:
|
public:
|
||||||
|
|
||||||
TextRenderable *CreateRenderable();
|
TextPrimitive *CreatePrimitive();
|
||||||
TextRenderable *CreateRenderable(const UTF16String &str);
|
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
|
};//class TextRender
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -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
2
res
@ -1 +1 @@
|
|||||||
Subproject commit 70b697f13ef20e957d51efcb0ff8632f4615e3c0
|
Subproject commit 2f9727410cbe53f9867c544d8b6bd9f8ecdb97bf
|
@ -61,10 +61,10 @@ SET(TILE_FONT_SOURCE ${SG_INCLUDE_PATH}/font/TileFont.h
|
|||||||
SET(FONT_LAYOUT_SOURCE ${SG_INCLUDE_PATH}/font/TextLayout.h
|
SET(FONT_LAYOUT_SOURCE ${SG_INCLUDE_PATH}/font/TextLayout.h
|
||||||
font/TextLayout.cpp)
|
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
|
${SG_INCLUDE_PATH}/font/TextRender.h
|
||||||
font/TextRender.cpp
|
font/TextRender.cpp
|
||||||
font/TextRenderable.cpp)
|
font/TextPrimitive.cpp)
|
||||||
|
|
||||||
SOURCE_GROUP("Font" FILES ${FONT_MANAGE_SOURCE})
|
SOURCE_GROUP("Font" FILES ${FONT_MANAGE_SOURCE})
|
||||||
SOURCE_GROUP("Font\\Source" FILES ${FONT_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})
|
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
|
${SG_INCLUDE_PATH}/VKRenderableInstance.h
|
||||||
Vulkan/VKRenderable.cpp
|
Vulkan/VKPrimitive.cpp
|
||||||
Vulkan/VKRenderableInstance.cpp
|
Vulkan/VKRenderableInstance.cpp
|
||||||
Vulkan/VKTileData.cpp
|
Vulkan/VKTileData.cpp
|
||||||
Vulkan/VKTileFont.cpp)
|
Vulkan/VKTileFont.cpp)
|
||||||
|
@ -12,7 +12,7 @@ namespace hgl
|
|||||||
{
|
{
|
||||||
namespace graph
|
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);
|
RenderableCreater rc(db,vab);
|
||||||
|
|
||||||
@ -29,7 +29,7 @@ namespace hgl
|
|||||||
return rc.Finish();
|
return rc.Finish();
|
||||||
}
|
}
|
||||||
|
|
||||||
Renderable *CreateRenderableGBufferComposition(RenderResource *db,const VAB *vab)
|
Primitive *CreateRenderableGBufferComposition(RenderResource *db,const VAB *vab)
|
||||||
{
|
{
|
||||||
RectangleCreateInfo rci;
|
RectangleCreateInfo rci;
|
||||||
|
|
||||||
@ -38,7 +38,7 @@ namespace hgl
|
|||||||
return CreateRenderableRectangle(db,vab,&rci);
|
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);
|
RenderableCreater rc(db,vab);
|
||||||
|
|
||||||
@ -112,7 +112,7 @@ namespace hgl
|
|||||||
return rc.Finish();
|
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);
|
RenderableCreater rc(db,vab);
|
||||||
|
|
||||||
@ -160,7 +160,7 @@ namespace hgl
|
|||||||
return rc.Finish();
|
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);
|
RenderableCreater rc(db,vab);
|
||||||
|
|
||||||
@ -207,7 +207,7 @@ namespace hgl
|
|||||||
return rc.Finish();
|
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 };
|
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 };
|
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();
|
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
|
* 4 5
|
||||||
@ -440,7 +440,7 @@ namespace hgl
|
|||||||
* @param numberSlices 切片数
|
* @param numberSlices 切片数
|
||||||
* @return 可渲染数据
|
* @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);
|
RenderableCreater rc(db,vab);
|
||||||
|
|
||||||
@ -516,7 +516,7 @@ namespace hgl
|
|||||||
return rc.Finish();
|
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);
|
RenderableCreater rc(db,vab);
|
||||||
|
|
||||||
@ -637,7 +637,7 @@ namespace hgl
|
|||||||
}
|
}
|
||||||
}//namespace
|
}//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);
|
RenderableCreater rc(db,vab);
|
||||||
|
|
||||||
@ -793,7 +793,7 @@ namespace hgl
|
|||||||
}
|
}
|
||||||
}//namespace
|
}//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;
|
uint numberIndices = cci->numberSlices * 3 * 2 + cci->numberSlices * 6;
|
||||||
|
|
||||||
@ -1012,7 +1012,7 @@ namespace hgl
|
|||||||
}
|
}
|
||||||
}//namespace
|
}//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);
|
RenderableCreater rc(db,vab);
|
||||||
|
|
||||||
@ -1139,7 +1139,7 @@ namespace hgl
|
|||||||
return rc.Finish();
|
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);
|
if(!db||!vab||!aci)return(nullptr);
|
||||||
|
|
||||||
@ -1166,7 +1166,7 @@ namespace hgl
|
|||||||
return rc.Finish();
|
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.
|
// 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,
|
/* 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,
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
#include<hgl/graph/Camera.h>
|
#include<hgl/graph/Camera.h>
|
||||||
#include<hgl/graph/SceneNode.h>
|
#include<hgl/graph/SceneNode.h>
|
||||||
#include<hgl/graph/VKBuffer.h>
|
#include<hgl/graph/VKBuffer.h>
|
||||||
#include<hgl/graph/VKRenderable.h>
|
#include<hgl/graph/VKPrimitive.h>
|
||||||
#include<hgl/graph/VKCommandBuffer.h>
|
#include<hgl/graph/VKCommandBuffer.h>
|
||||||
#include<hgl/graph/VertexAttribDataAccess.h>
|
#include<hgl/graph/VertexAttribDataAccess.h>
|
||||||
#include<hgl/graph/VKMaterialParameters.h>
|
#include<hgl/graph/VKMaterialParameters.h>
|
||||||
@ -151,7 +151,7 @@ namespace hgl
|
|||||||
//为所有的材质绑定
|
//为所有的材质绑定
|
||||||
for(Material *mtl:material_sets)
|
for(Material *mtl:material_sets)
|
||||||
{
|
{
|
||||||
MaterialParameters *mp=mtl->GetMP(DescriptorSetsType::Renderable);
|
MaterialParameters *mp=mtl->GetMP(DescriptorSetsType::Primitive);
|
||||||
|
|
||||||
if(mp)
|
if(mp)
|
||||||
{
|
{
|
||||||
@ -219,7 +219,7 @@ namespace hgl
|
|||||||
MaterialParameters *mp;
|
MaterialParameters *mp;
|
||||||
|
|
||||||
for(int i=(int)DescriptorSetsType::BEGIN_RANGE;
|
for(int i=(int)DescriptorSetsType::BEGIN_RANGE;
|
||||||
i<(int)DescriptorSetsType::Renderable;
|
i<(int)DescriptorSetsType::Primitive;
|
||||||
i++)
|
i++)
|
||||||
{
|
{
|
||||||
mp=ri->GetMP((DescriptorSetsType)i);
|
mp=ri->GetMP((DescriptorSetsType)i);
|
||||||
@ -242,7 +242,7 @@ namespace hgl
|
|||||||
}
|
}
|
||||||
|
|
||||||
{
|
{
|
||||||
mp=ri->GetMP(DescriptorSetsType::Renderable);
|
mp=ri->GetMP(DescriptorSetsType::Primitive);
|
||||||
|
|
||||||
if(mp)
|
if(mp)
|
||||||
{
|
{
|
||||||
|
@ -105,14 +105,14 @@ namespace hgl
|
|||||||
return (uint32 *)ibo->Map();
|
return (uint32 *)ibo->Map();
|
||||||
}
|
}
|
||||||
|
|
||||||
Renderable *RenderableCreater::Finish()
|
Primitive *RenderableCreater::Finish()
|
||||||
{
|
{
|
||||||
const uint si_count=vab->GetVertexAttrCount();
|
const uint si_count=vab->GetVertexAttrCount();
|
||||||
|
|
||||||
if(ssb_map.GetCount()!=si_count)
|
if(ssb_map.GetCount()!=si_count)
|
||||||
return(nullptr);
|
return(nullptr);
|
||||||
|
|
||||||
Renderable *render_obj=db->CreateRenderable(vertices_number);
|
Primitive *render_obj=db->CreatePrimitive(vertices_number);
|
||||||
|
|
||||||
const auto *sp=ssb_map.GetDataList();
|
const auto *sp=ssb_map.GetDataList();
|
||||||
for(uint i=0;i<si_count;i++)
|
for(uint i=0;i<si_count;i++)
|
||||||
|
@ -123,7 +123,7 @@ bool RenderCmdBuffer::BindDescriptorSets(RenderableInstance *ri)
|
|||||||
ds[count]=mp->GetVkDescriptorSet();
|
ds[count]=mp->GetVkDescriptorSet();
|
||||||
++count;
|
++count;
|
||||||
|
|
||||||
if((DescriptorSetsType)i==DescriptorSetsType::Renderable)
|
if((DescriptorSetsType)i==DescriptorSetsType::Primitive)
|
||||||
{
|
{
|
||||||
dynamic_count=mp->GetCount();
|
dynamic_count=mp->GetCount();
|
||||||
|
|
||||||
|
@ -30,8 +30,9 @@ namespace
|
|||||||
#ifdef _DEBUG
|
#ifdef _DEBUG
|
||||||
VK_EXT_DEBUG_MARKER_EXTENSION_NAME,
|
VK_EXT_DEBUG_MARKER_EXTENSION_NAME,
|
||||||
#endif//_DEBUG
|
#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_PRIMITIVE_TOPOLOGY_LIST_RESTART_EXTENSION_NAME,
|
||||||
|
VK_EXT_CONDITIONAL_RENDERING_EXTENSION_NAME,
|
||||||
// VK_KHR_PUSH_DESCRIPTOR_EXTENSION_NAME,
|
// VK_KHR_PUSH_DESCRIPTOR_EXTENSION_NAME,
|
||||||
// VK_EXT_HDR_METADATA_EXTENSION_NAME,
|
// VK_EXT_HDR_METADATA_EXTENSION_NAME,
|
||||||
// VK_EXT_FULL_SCREEN_EXCLUSIVE_EXTENSION_NAME,
|
// VK_EXT_FULL_SCREEN_EXCLUSIVE_EXTENSION_NAME,
|
||||||
|
@ -109,7 +109,7 @@ Material *GPUDevice::CreateMaterial(const UTF8String &mtl_name,ShaderModuleMap *
|
|||||||
|
|
||||||
data->pipeline_layout_data=pld;
|
data->pipeline_layout_data=pld;
|
||||||
data->mp.m=CreateMP(mds,pld,DescriptorSetsType::Material );
|
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 );
|
data->mp.g=CreateMP(mds,pld,DescriptorSetsType::Global );
|
||||||
|
|
||||||
return(new Material(data));
|
return(new Material(data));
|
||||||
|
@ -72,11 +72,11 @@ MaterialInstance *RenderResource::CreateMaterialInstance(const OSString &mtl_fil
|
|||||||
return CreateMaterialInstance(mtl,vab_cfg);
|
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);
|
if(!vertex_count)return(nullptr);
|
||||||
|
|
||||||
Renderable *ro=new Renderable(vertex_count);
|
Primitive *ro=new Primitive(vertex_count);
|
||||||
|
|
||||||
if(ro)
|
if(ro)
|
||||||
Add(ro);
|
Add(ro);
|
||||||
@ -84,7 +84,7 @@ Renderable *RenderResource::CreateRenderable(const uint32_t vertex_count)
|
|||||||
return ro;
|
return ro;
|
||||||
}
|
}
|
||||||
|
|
||||||
RenderableInstance *RenderResource::CreateRenderableInstance(Renderable *r,MaterialInstance *mi,Pipeline *p)
|
RenderableInstance *RenderResource::CreateRenderableInstance(Primitive *r,MaterialInstance *mi,Pipeline *p)
|
||||||
{
|
{
|
||||||
if(!p||!mi||!r)
|
if(!p||!mi||!r)
|
||||||
return(nullptr);
|
return(nullptr);
|
||||||
|
@ -49,7 +49,7 @@ void LoadShaderDescriptor(const uint8 *data,ShaderDescriptor *sd_list,const uint
|
|||||||
|
|
||||||
sd->set_type=CheckDescriptorSetsType(sd->name);
|
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_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;
|
if(sd->desc_type==VK_DESCRIPTOR_TYPE_STORAGE_BUFFER)sd->desc_type=VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC;
|
||||||
|
@ -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
|
|
@ -8,7 +8,7 @@
|
|||||||
VK_NAMESPACE_BEGIN
|
VK_NAMESPACE_BEGIN
|
||||||
using namespace util;
|
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;
|
render_obj=r;
|
||||||
pipeline=p;
|
pipeline=p;
|
||||||
@ -32,7 +32,7 @@ RenderableInstance::~RenderableInstance()
|
|||||||
delete[] buffer_size;
|
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);
|
if(!r||!mi||!p)return(nullptr);
|
||||||
|
|
||||||
|
@ -11,7 +11,7 @@ VK_NAMESPACE_BEGIN
|
|||||||
{
|
{
|
||||||
if(str[0]=='m')return DescriptorSetsType::Material;
|
if(str[0]=='m')return DescriptorSetsType::Material;
|
||||||
if(str[0]=='g')return DescriptorSetsType::Global;
|
if(str[0]=='g')return DescriptorSetsType::Global;
|
||||||
if(str[0]=='r')return DescriptorSetsType::Renderable;
|
if(str[0]=='r')return DescriptorSetsType::Primitive;
|
||||||
}
|
}
|
||||||
|
|
||||||
return DescriptorSetsType::Value;
|
return DescriptorSetsType::Value;
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
#include<hgl/graph/font/TextLayout.h>
|
#include<hgl/graph/font/TextLayout.h>
|
||||||
#include<hgl/graph/font/TileFont.h>
|
#include<hgl/graph/font/TileFont.h>
|
||||||
#include<hgl/graph/font/TextRenderable.h>
|
#include<hgl/graph/font/TextPrimitive.h>
|
||||||
#include<hgl/type/Extent.h>
|
#include<hgl/type/Extent.h>
|
||||||
|
|
||||||
namespace hgl
|
namespace hgl
|
||||||
@ -48,7 +48,7 @@ namespace hgl
|
|||||||
* 预处理所有的字符,获取所有字符的宽高,以及是否标点符号等信息
|
* 预处理所有的字符,获取所有字符的宽高,以及是否标点符号等信息
|
||||||
*/
|
*/
|
||||||
template<typename T>
|
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
|
if(!tr
|
||||||
||!tile_font
|
||!tile_font
|
||||||
@ -243,7 +243,7 @@ namespace hgl
|
|||||||
* 简易文本排版。无任何特殊处理,不支持任何转义符,不支持\r\n
|
* 简易文本排版。无任何特殊处理,不支持任何转义符,不支持\r\n
|
||||||
*/
|
*/
|
||||||
template<typename T>
|
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)
|
if(!tr)
|
||||||
return(-1);
|
return(-1);
|
||||||
@ -292,8 +292,8 @@ namespace hgl
|
|||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
int TextLayout::SimpleLayout(TextRenderable *tr,TileFont *tf,const UTF16String &str){return this->SimpleLayout<u16char>(tr,tf,str);}
|
int TextLayout::SimpleLayout(TextPrimitive *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 UTF32String &str){return this->SimpleLayout<u32char>(tr,tf,str);}
|
||||||
|
|
||||||
//template<typename T>
|
//template<typename T>
|
||||||
//int TextLayout::SimpleLayout(TileFont *tf,const StringList<String<T>> &sl)
|
//int TextLayout::SimpleLayout(TileFont *tf,const StringList<String<T>> &sl)
|
||||||
|
@ -1,8 +1,7 @@
|
|||||||
#include<hgl/graph/font/TextRender.h>
|
#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/TileFont.h>
|
||||||
#include<hgl/graph/font/TextLayout.h>
|
#include<hgl/graph/font/TextLayout.h>
|
||||||
#include<hgl/graph/font/TextRenderable.h>
|
|
||||||
#include<hgl/graph/VKDevice.h>
|
#include<hgl/graph/VKDevice.h>
|
||||||
#include<hgl/type/Color.h>
|
#include<hgl/type/Color.h>
|
||||||
|
|
||||||
@ -27,7 +26,7 @@ namespace hgl
|
|||||||
|
|
||||||
TextRender::~TextRender()
|
TextRender::~TextRender()
|
||||||
{
|
{
|
||||||
for(TextRenderable *tr:tr_sets)
|
for(TextPrimitive *tr:tr_sets)
|
||||||
{
|
{
|
||||||
tile_font->Unregistry(tr->GetCharsSets().GetList());
|
tile_font->Unregistry(tr->GetCharsSets().GetList());
|
||||||
delete tr;
|
delete tr;
|
||||||
@ -145,18 +144,18 @@ namespace hgl
|
|||||||
return(true);
|
return(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
TextRenderable *TextRender::CreateRenderable()
|
TextPrimitive *TextRender::CreatePrimitive()
|
||||||
{
|
{
|
||||||
TextRenderable *tr=new TextRenderable(device,material);
|
TextPrimitive *tr=new TextPrimitive(device,material);
|
||||||
|
|
||||||
tr_sets.Add(tr);
|
tr_sets.Add(tr);
|
||||||
|
|
||||||
return 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)
|
if(tl_engine->SimpleLayout(tr,tile_font,str)<=0)
|
||||||
return(tr);
|
return(tr);
|
||||||
@ -164,7 +163,7 @@ namespace hgl
|
|||||||
return tr;
|
return tr;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool TextRender::Layout(TextRenderable *tr,const UTF16String &str)
|
bool TextRender::Layout(TextPrimitive *tr,const UTF16String &str)
|
||||||
{
|
{
|
||||||
if(!tr)
|
if(!tr)
|
||||||
return(false);
|
return(false);
|
||||||
@ -175,12 +174,12 @@ namespace hgl
|
|||||||
return true;
|
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);
|
return db->CreateRenderableInstance(text_render_obj,material_instance,pipeline);
|
||||||
}
|
}
|
||||||
|
|
||||||
void TextRender::Release(TextRenderable *tr)
|
void TextRender::Release(TextPrimitive *tr)
|
||||||
{
|
{
|
||||||
if(!tr)return;
|
if(!tr)return;
|
||||||
|
|
||||||
|
@ -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
|
|
Loading…
x
Reference in New Issue
Block a user