From 73065816160c644ef896b94d73dd5ddeeefc1c4b Mon Sep 17 00:00:00 2001 From: hyzboy Date: Fri, 14 Mar 2025 00:16:53 +0800 Subject: [PATCH] fixed a bug at vdm compare in PrimitiveDataBuffer --- src/SceneGraph/MaterialRenderList.cpp | 2 +- src/SceneGraph/Vulkan/VKRenderable.cpp | 9 ++++++--- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/src/SceneGraph/MaterialRenderList.cpp b/src/SceneGraph/MaterialRenderList.cpp index 30eefce9..78dc0990 100644 --- a/src/SceneGraph/MaterialRenderList.cpp +++ b/src/SceneGraph/MaterialRenderList.cpp @@ -398,7 +398,7 @@ void MaterialRenderList::ProcIndirectRender() void MaterialRenderList::Render(RenderItem *ri) { - if(*(ri->pdb)!=*last_data_buffer) //换buf了 + if(!last_data_buffer||*(ri->pdb)!=*last_data_buffer) //换buf了 { if(indirect_draw_count) //如果有间接绘制的数据,赶紧给画了 ProcIndirectRender(); diff --git a/src/SceneGraph/Vulkan/VKRenderable.cpp b/src/SceneGraph/Vulkan/VKRenderable.cpp index 0ed3831c..347dcbdf 100644 --- a/src/SceneGraph/Vulkan/VKRenderable.cpp +++ b/src/SceneGraph/Vulkan/VKRenderable.cpp @@ -28,9 +28,12 @@ const int PrimitiveDataBuffer::compare(const PrimitiveDataBuffer &pdb)const { ptrdiff_t off; - off=&vdm-&pdb.vdm; - if(off) - return off; + if(vdm&&pdb.vdm) + { + off=(ptrdiff_t)vdm-(ptrdiff_t)pdb.vdm; + if(off) + return off; + } off=vab_count-pdb.vab_count; if(off)