From 1c8998f3e6a2f2b785a1f3a2c7aef73d8f93e3fc Mon Sep 17 00:00:00 2001 From: hyzboy Date: Mon, 27 Jul 2020 14:14:03 +0800 Subject: [PATCH] add LoadBitmapFromFile --- CMSceneGraph | 2 +- inc/hgl/graph/vulkan/VKTexture.h | 4 +++ .../Vulkan/POD/VKTextureLoader.cpp | 34 ++++++++----------- 3 files changed, 20 insertions(+), 20 deletions(-) diff --git a/CMSceneGraph b/CMSceneGraph index 7a07f280..7e9f9604 160000 --- a/CMSceneGraph +++ b/CMSceneGraph @@ -1 +1 @@ -Subproject commit 7a07f280f1c82dfbc4a9964556b34c87d5e62cb4 +Subproject commit 7e9f9604a8560899bdfee52730e75a72baf9843a diff --git a/inc/hgl/graph/vulkan/VKTexture.h b/inc/hgl/graph/vulkan/VKTexture.h index 957f0c5c..fc62bac0 100644 --- a/inc/hgl/graph/vulkan/VKTexture.h +++ b/inc/hgl/graph/vulkan/VKTexture.h @@ -4,7 +4,11 @@ #include #include #include +#include VK_NAMESPACE_BEGIN + +BitmapData *LoadBitmapFromFile(const OSString &filename); + struct TextureData { Memory * memory =nullptr; diff --git a/src/RenderDevice/Vulkan/POD/VKTextureLoader.cpp b/src/RenderDevice/Vulkan/POD/VKTextureLoader.cpp index aeb49d57..4852b6cb 100644 --- a/src/RenderDevice/Vulkan/POD/VKTextureLoader.cpp +++ b/src/RenderDevice/Vulkan/POD/VKTextureLoader.cpp @@ -1,6 +1,7 @@ #include #include #include +#include #include #include @@ -158,15 +159,7 @@ Texture2D *CreateTextureFromFile(Device *device,const OSString &filename) } } -struct Texture2DData -{ - uint32 width; - uint32 height; - VkFormat format; - uint32 bytes; -};// - -void *LoadTextureFromFile(const OSString &filename) +BitmapData *LoadBitmapFromFile(const OSString &filename) { io::OpenFileInputStream fis(filename); @@ -203,21 +196,24 @@ void *LoadTextureFromFile(const OSString &filename) return(nullptr); { - vulkan::Buffer *buf=device->CreateBuffer(VK_BUFFER_USAGE_TRANSFER_SRC_BIT,total_bytes); + BitmapData *bmp=new BitmapData; - if(!buf) + bmp->data=new char[total_bytes]; + + if(!bmp->data) + { + delete bmp; return(nullptr); + } - void *pixel_data=buf->Map(); + fis->Read(bmp->data,total_bytes); - fis->Read(pixel_data,total_bytes); + bmp->width =file_header.width; + bmp->height =file_header.height; + bmp->vulkan_format =format; + bmp->total_bytes =total_bytes; - buf->Unmap(); - - Texture2D *tex=device->CreateTexture2D(format,buf,file_header.width,file_header.height); - - delete buf; - return tex; + return bmp; } } VK_NAMESPACE_END