尝试使用SceneDB/SceneNode/RenderList绘制多个几何体
This commit is contained in:
parent
eff630558c
commit
5615f0492e
@ -37,7 +37,9 @@ private:
|
||||
vulkan::Material * material =nullptr;
|
||||
vulkan::DescriptorSets * descriptor_sets =nullptr;
|
||||
|
||||
vulkan::Renderable * render_obj =nullptr;
|
||||
vulkan::Renderable *ro_rectangle =nullptr,
|
||||
*ro_circle =nullptr,
|
||||
*ro_round_rectangle =nullptr;
|
||||
|
||||
vulkan::Buffer * ubo_mvp =nullptr;
|
||||
|
||||
@ -71,21 +73,39 @@ private:
|
||||
return(true);
|
||||
}
|
||||
|
||||
bool CreateRenderObject()
|
||||
void CreateRenderObject()
|
||||
{
|
||||
{
|
||||
struct RectangleCreateInfo rci;
|
||||
|
||||
rci.scope.Set(10,10,20,20);
|
||||
|
||||
ro_rectangle=CreateRectangle(db,material,&rci);
|
||||
}
|
||||
|
||||
{
|
||||
struct RoundRectangleCreateInfo rrci;
|
||||
|
||||
rrci.scope.Set(SCREEN_WIDTH-30,10,20,20);
|
||||
rrci.radius=5;
|
||||
rrci.round_per=5;
|
||||
|
||||
ro_round_rectangle=CreateRoundRectangle(db,material,&rrci);
|
||||
}
|
||||
|
||||
{
|
||||
struct CircleCreateInfo cci;
|
||||
|
||||
cci.center.x=SCREEN_WIDTH/2;
|
||||
cci.center.y=SCREEN_HEIGHT/2;
|
||||
|
||||
cci.radius.x=SCREEN_WIDTH*0.45;
|
||||
cci.radius.y=SCREEN_HEIGHT*0.45;
|
||||
cci.radius.x=SCREEN_WIDTH*0.35;
|
||||
cci.radius.y=SCREEN_HEIGHT*0.35;
|
||||
|
||||
cci.field_count=8;
|
||||
|
||||
render_obj=CreateCircle(db,material,&cci);
|
||||
|
||||
return render_obj;
|
||||
ro_circle=CreateCircle(db,material,&cci);
|
||||
}
|
||||
}
|
||||
|
||||
bool InitUBO()
|
||||
@ -127,15 +147,14 @@ private:
|
||||
|
||||
bool InitScene()
|
||||
{
|
||||
RenderableInstance *ri=db->CreateRenderableInstance(pipeline,descriptor_sets,render_obj);
|
||||
|
||||
if(!ri)
|
||||
return(false);
|
||||
|
||||
render_root=new SceneNode();
|
||||
render_list=new RenderList();
|
||||
|
||||
render_root->Add(ri);
|
||||
render_root->Add(db->CreateRenderableInstance(pipeline,descriptor_sets,ro_rectangle));
|
||||
render_root->Add(db->CreateRenderableInstance(pipeline,descriptor_sets,ro_round_rectangle));
|
||||
render_root->Add(db->CreateRenderableInstance(pipeline,descriptor_sets,ro_circle));
|
||||
|
||||
render_root->ExpendToList(render_list);
|
||||
|
||||
return(true);
|
||||
@ -176,8 +195,7 @@ public:
|
||||
if(!InitMaterial())
|
||||
return(false);
|
||||
|
||||
if(!CreateRenderObject())
|
||||
return(false);
|
||||
CreateRenderObject();
|
||||
|
||||
if(!InitUBO())
|
||||
return(false);
|
||||
|
Loading…
x
Reference in New Issue
Block a user