From c780662ff663173ca73c23347e79cd6ab9f613c8 Mon Sep 17 00:00:00 2001 From: hyzboy Date: Fri, 31 May 2024 23:07:05 +0800 Subject: [PATCH] fixed draw without VDM --- example/Basic/draw_triangle_use_UBO.cpp | 14 ++++++++------ src/SceneGraph/MaterialRenderList.cpp | 10 +++++----- 2 files changed, 13 insertions(+), 11 deletions(-) diff --git a/example/Basic/draw_triangle_use_UBO.cpp b/example/Basic/draw_triangle_use_UBO.cpp index b50154e1..3dc06c88 100644 --- a/example/Basic/draw_triangle_use_UBO.cpp +++ b/example/Basic/draw_triangle_use_UBO.cpp @@ -5,7 +5,7 @@ #include #include #include -#include +#include #include using namespace hgl; @@ -79,17 +79,19 @@ private: bool InitVBO() { - RenderablePrimitiveCreater rpc(db,"Triangle",VERTEX_COUNT); + PrimitiveCreater rpc(device,material_instance->GetVIL()); + + rpc.Init("Triangle",VERTEX_COUNT); #ifdef USE_ZERO2ONE_COORD //使用0 to 1坐标系 - if(!rpc.SetVAB(VAN::Position, VF_V2F, position_data_float ))return(false); + if(!rpc.WriteVAB(VAN::Position, VF_V2F, position_data_float ))return(false); #else //使用ortho坐标系 - if(!rpc.SetVAB(VAN::Position, VF_V2U16, position_data_u16 ))return(false); + if(!rpc.WriteVAB(VAN::Position, VF_V2U16, position_data_u16 ))return(false); #endif//USE_ZERO2ONE_COORD - if(!rpc.SetVAB(VAN::Color, VF_V4UN8, color_data ))return(false); + if(!rpc.WriteVAB(VAN::Color, VF_V4UN8, color_data ))return(false); - render_obj=rpc.Create(material_instance,pipeline); + render_obj=db->CreateRenderable(&rpc,material_instance,pipeline); return(true); } diff --git a/src/SceneGraph/MaterialRenderList.cpp b/src/SceneGraph/MaterialRenderList.cpp index c00e8a01..d4b4a486 100644 --- a/src/SceneGraph/MaterialRenderList.cpp +++ b/src/SceneGraph/MaterialRenderList.cpp @@ -337,17 +337,17 @@ void MaterialRenderList::Render(RenderItem *ri) cmd_buf->BindIBO(ri->pdb->ibo); } - //if(device-> support indirect) + if(ri->pdb->vdm) { if(indirect_draw_count==0) first_indirect_draw_index=ri->first_instance; ++indirect_draw_count; } - //else - //{ - // cmd_buf->Draw(ri->pdb,ri->prd,ri->instance_count,ri->first_instance); - //} + else + { + cmd_buf->Draw(ri->pdb,ri->prd,ri->instance_count,ri->first_instance); + } } void MaterialRenderList::Render(RenderCmdBuffer *rcb)