Add GE::getResizedImage using IReadFile

This commit is contained in:
Benau 2022-04-18 10:46:23 +08:00
parent 2876032630
commit 059fc9ebfd
5 changed files with 23 additions and 2 deletions

View File

@ -5,6 +5,7 @@
#include <string>
#include <ITexture.h>
#include <IImage.h>
#include <IReadFile.h>
namespace GE
{
@ -15,6 +16,9 @@ irr::video::ITexture* createTexture(irr::video::IImage* img,
irr::video::IImage* getResizedImage(const std::string& path,
const irr::core::dimension2d<irr::u32>& max_size,
irr::core::dimension2d<irr::u32>* orig_size = NULL);
irr::video::IImage* getResizedImage(irr::io::IReadFile* file,
const irr::core::dimension2d<irr::u32>& max_size,
irr::core::dimension2d<irr::u32>* orig_size = NULL);
irr::video::ITexture* createTexture(const std::string& path,
std::function<void(irr::video::IImage*)> image_mani = nullptr);
}; // GE

View File

@ -291,7 +291,6 @@ namespace GE
{ return m_features; }
const VkPhysicalDeviceProperties& getPhysicalDeviceProperties() const
{ return m_properties; }
io::IFileSystem* getFileSystem() const { return FileSystem; }
VkExtent2D getSwapChainExtent() const { return m_swap_chain_extent; }
size_t getSwapChainImagesCount() const
{ return m_vk->swap_chain_images.size(); }

View File

@ -4,6 +4,7 @@
#include "ge_vulkan_texture.hpp"
#include "ge_texture.hpp"
#include <IFileSystem.h>
#include <IVideoDriver.h>
namespace GE
@ -13,7 +14,21 @@ video::IImage* getResizedImage(const std::string& path,
const core::dimension2du& max_size,
core::dimension2d<u32>* orig_size)
{
video::IImage* image = getDriver()->createImageFromFile(path.c_str());
io::IReadFile* file =
getDriver()->getFileSystem()->createAndOpenFile(path.c_str());
if (file == NULL)
return NULL;
video::IImage* image = getResizedImage(file, max_size, orig_size);
file->drop();
return image;
} // getResizedImage
// ----------------------------------------------------------------------------
video::IImage* getResizedImage(irr::io::IReadFile* file,
const core::dimension2du& max_size,
core::dimension2d<u32>* orig_size)
{
video::IImage* image = getDriver()->createImageFromFile(file);
if (image == NULL)
return NULL;
if (orig_size)

View File

@ -25,6 +25,7 @@ namespace irr
namespace io
{
class IAttributes;
class IFileSystem;
struct SAttributeReadWriteOptions;
class IReadFile;
class IWriteFile;
@ -1483,6 +1484,7 @@ namespace video
virtual void disableScissorTest() {}
virtual void pauseRendering() {}
virtual void unpauseRendering() {}
virtual io::IFileSystem* getFileSystem() const = 0;
};
} // end namespace video

View File

@ -672,6 +672,7 @@ namespace video
virtual bool checkDriverReset() {return false;}
virtual u32 getDefaultFramebuffer() const { return 0; }
virtual io::IFileSystem* getFileSystem() const { return FileSystem; }
protected:
//! deletes all textures