MaterialFileData added origin data.

This commit is contained in:
hyzboy 2023-10-10 01:19:05 +08:00
parent 018a72c09a
commit 03750832c8
No known key found for this signature in database
GPG Key ID: 067EE4525D4FB6D3
3 changed files with 28 additions and 13 deletions

2
CMCore

@ -1 +1 @@
Subproject commit 252f2f6a1f4546d84e105e9f76462576e1b26a25 Subproject commit 70b6567029f3278692ca41c99bdf422af3365b8b

View File

@ -59,11 +59,31 @@ namespace material_file
struct MaterialFileData struct MaterialFileData
{ {
private:
char * data=nullptr;
int data_length=0;
public:
MaterialInstanceData mi{}; MaterialInstanceData mi{};
List<UniformAttrib> vi; List<UniformAttrib> vi;
ObjectMap<VkShaderStageFlagBits,ShaderData> shader; ObjectMap<VkShaderStageFlagBits,ShaderData> shader;
public:
MaterialFileData(char *d,int dl)
{
data=d;
data_length=dl;
}
~MaterialFileData()
{
delete[] data;
}
};//struct MaterialFileData };//struct MaterialFileData
}//namespace material_file }//namespace material_file

View File

@ -4,7 +4,6 @@
#include<hgl/graph/VKShaderStage.h> #include<hgl/graph/VKShaderStage.h>
#include<hgl/io/TextInputStream.h> #include<hgl/io/TextInputStream.h>
#include<hgl/io/FileInputStream.h>
#include<hgl/filesystem/FileSystem.h> #include<hgl/filesystem/FileSystem.h>
#include"MaterialFileData.h" #include"MaterialFileData.h"
@ -463,7 +462,7 @@ namespace
}; };
}//namespace MaterialFile }//namespace MaterialFile
MaterialFileData *LoadMaterialFromFile(const AnsiString &mtl_filename) MaterialCreateInfo *LoadMaterialFromFile(const AnsiString &mtl_filename)
{ {
const OSString mtl_osfn=ToOSString(mtl_filename+".mtl"); const OSString mtl_osfn=ToOSString(mtl_filename+".mtl");
@ -472,26 +471,22 @@ MaterialFileData *LoadMaterialFromFile(const AnsiString &mtl_filename)
if(!filesystem::FileExist(mtl_os_filename)) if(!filesystem::FileExist(mtl_os_filename))
return(nullptr); return(nullptr);
io::OpenFileInputStream fis(mtl_os_filename); char *data;
if(!fis) int size=filesystem::LoadFileToMemory(mtl_os_filename,(void **)&data,true);
return(nullptr);
MaterialFileData *mfd=new MaterialFileData; MaterialFileData mfd(data,size);
MaterialTextParse mtp(mfd); MaterialTextParse mtp(&mfd);
io::TextInputStream tis(fis,0); io::TextInputStream tis(data,size);
tis.SetParseCallback(&mtp); tis.SetParseCallback(&mtp);
if(!tis.Run()) if(!tis.Run())
{
delete mfd;
return nullptr; return nullptr;
}
return mfd; return(nullptr);
} }
MaterialCreateInfo *LoadMaterialFromFile(const AnsiString &name,const MaterialCreateConfig *cfg) MaterialCreateInfo *LoadMaterialFromFile(const AnsiString &name,const MaterialCreateConfig *cfg)