diff --git a/inc/hgl/graph/PrimitiveCreater.h b/inc/hgl/graph/PrimitiveCreater.h index 03a6313b..9946141d 100644 --- a/inc/hgl/graph/PrimitiveCreater.h +++ b/inc/hgl/graph/PrimitiveCreater.h @@ -138,7 +138,10 @@ public: buf_map=pc->MapVAB(name,T::GetVulkanFormat()); if(buf_map) - map_ptr=(T *)(buf_map->Map()); + { + map_ptr=T::Create(buf_map->GetSize(),buf_map->Map()); + map_ptr->Begin(); + } else map_ptr=nullptr; } @@ -146,12 +149,20 @@ public: ~VABMap() { if(map_ptr) + { buf_map->Unmap(); + delete map_ptr; + } } - const bool IsValid()const{ return buf_map?buf_map->IsValid():false; } + const bool IsValid()const{ return map_ptr?map_ptr:false; } + + void Restart() + { + if(map_ptr) + map_ptr->Begin(); + } - operator T *(){ return map_ptr; } T *operator->(){ return map_ptr; } };//template class VABMap diff --git a/inc/hgl/graph/VKBufferMap.h b/inc/hgl/graph/VKBufferMap.h index 8bf9cb0b..cf3a567b 100644 --- a/inc/hgl/graph/VKBufferMap.h +++ b/inc/hgl/graph/VKBufferMap.h @@ -22,6 +22,7 @@ public: void Set(DeviceBuffer *buf_ptr,VkDeviceSize off,VkDeviceSize s); + const VkDeviceSize GetSize()const{ return size; } const bool IsValid()const{ return buffer; } void Clear(); diff --git a/src/SceneGraph/Vulkan/VKBufferMap.cpp b/src/SceneGraph/Vulkan/VKBufferMap.cpp index 1066077c..a1b8e439 100644 --- a/src/SceneGraph/Vulkan/VKBufferMap.cpp +++ b/src/SceneGraph/Vulkan/VKBufferMap.cpp @@ -1,6 +1,5 @@ #include #include -#include VK_NAMESPACE_BEGIN @@ -27,8 +26,6 @@ void VKBufferMap::Clear() VKBufferMap::VKBufferMap() { Set(nullptr,0,0); - - std::cout<<"VKBufferMap Create"<Unmap(); - - std::cout<<"VKBufferMap Destory"<Map(offset,size); return map_ptr; - } void VKBufferMap::Unmap()