test ok that LoadPureColor2D material from file.
This commit is contained in:
parent
019e9964fa
commit
bead8128b7
2
CMCore
2
CMCore
@ -1 +1 @@
|
|||||||
Subproject commit d5264e1da655390bdef2ce99550024c69b7c4cb1
|
Subproject commit 15b86eaf3bf661cff9f21d9b53a334a7b5e358e4
|
@ -7,7 +7,7 @@ Length 16
|
|||||||
Stage Fragment
|
Stage Fragment
|
||||||
Code
|
Code
|
||||||
{
|
{
|
||||||
vec4 Color
|
vec4 Color;
|
||||||
}
|
}
|
||||||
|
|
||||||
#Vertex
|
#Vertex
|
||||||
|
@ -7,7 +7,7 @@ Length 16
|
|||||||
Stage Vertex
|
Stage Vertex
|
||||||
Code
|
Code
|
||||||
{
|
{
|
||||||
vec4 Color
|
vec4 Color;
|
||||||
}
|
}
|
||||||
|
|
||||||
#VertexInput
|
#VertexInput
|
||||||
|
@ -25,6 +25,8 @@ constexpr float position_data[VERTEX_COUNT*2]=
|
|||||||
|
|
||||||
constexpr uint DRAW_OBJECT_COUNT=12;
|
constexpr uint DRAW_OBJECT_COUNT=12;
|
||||||
|
|
||||||
|
#define USE_MATERIAL_FILE true //是否使用材质文件
|
||||||
|
|
||||||
class TestApp:public VulkanApplicationFramework
|
class TestApp:public VulkanApplicationFramework
|
||||||
{
|
{
|
||||||
private:
|
private:
|
||||||
@ -52,7 +54,11 @@ private:
|
|||||||
cfg.coordinate_system=CoordinateSystem2D::NDC;
|
cfg.coordinate_system=CoordinateSystem2D::NDC;
|
||||||
cfg.local_to_world=true;
|
cfg.local_to_world=true;
|
||||||
|
|
||||||
AutoDelete<mtl::MaterialCreateInfo> mci=mtl::CreatePureColor2D(&cfg);
|
#ifndef USE_MATERIAL_FILE
|
||||||
|
AutoDelete<mtl::MaterialCreateInfo> mci=mtl::CreatePureColor2D(&cfg); //走程序内置材质创建函数
|
||||||
|
#else
|
||||||
|
AutoDelete<mtl::MaterialCreateInfo> mci=LoadMaterialFromFile("Std2D/PureColor2D",&cfg); //走材质文件加载
|
||||||
|
#endif//USE_MATERIAL_FILE
|
||||||
|
|
||||||
material=db->CreateMaterial(mci);
|
material=db->CreateMaterial(mci);
|
||||||
|
|
||||||
|
@ -39,6 +39,17 @@ MaterialCreateInfo *CreatePureTexture2D(const Material2DCreateConfig *);
|
|||||||
MaterialCreateInfo *CreateRectTexture2D(Material2DCreateConfig *);
|
MaterialCreateInfo *CreateRectTexture2D(Material2DCreateConfig *);
|
||||||
MaterialCreateInfo *CreateRectTexture2DArray(Material2DCreateConfig *);
|
MaterialCreateInfo *CreateRectTexture2DArray(Material2DCreateConfig *);
|
||||||
|
|
||||||
MaterialCreateInfo *LoadMaterialFromFile(const AnsiString &,const Material2DCreateConfig *);
|
// 为什么有了LoadMaterialFromFile,还需要保留以上Create系列函数?
|
||||||
|
|
||||||
|
// 1.LoadMaterialFromFile载的材质,是从文件中加载的。但我们要考虑文件损坏不能加载的情况。
|
||||||
|
// 2.从文件加载材质过于复杂,而且不利于调试。所以我们需要保留Create系列函数,以便于调试以及测试一些新的情况。同时让开发人员知道材质具体是如何创建的。
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 从文件加载材质
|
||||||
|
* @param mtl_name 材质名称
|
||||||
|
* @param cfg 材质创建参数
|
||||||
|
* @return 材质创建信息
|
||||||
|
*/
|
||||||
|
MaterialCreateInfo *LoadMaterialFromFile(const AnsiString &mtl_name,const Material2DCreateConfig *cfg); ///<从文件加载材质
|
||||||
STD_MTL_NAMESPACE_END
|
STD_MTL_NAMESPACE_END
|
||||||
#endif//HGL_GRAPH_MTL_2D_CREATE_CONFIG_INCLUDE
|
#endif//HGL_GRAPH_MTL_2D_CREATE_CONFIG_INCLUDE
|
||||||
|
@ -34,7 +34,6 @@ namespace
|
|||||||
mci->SetMaterialInstance( mfd->mi.code,
|
mci->SetMaterialInstance( mfd->mi.code,
|
||||||
mfd->mi.mi_bytes,
|
mfd->mi.mi_bytes,
|
||||||
mfd->mi.shader_stage_flag_bits);
|
mfd->mi.shader_stage_flag_bits);
|
||||||
return(false);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
@ -86,9 +85,6 @@ namespace
|
|||||||
|
|
||||||
bool CustomFragmentShader(ShaderCreateInfoFragment *fsc) override
|
bool CustomFragmentShader(ShaderCreateInfoFragment *fsc) override
|
||||||
{
|
{
|
||||||
if(!Std2DMaterial::CustomFragmentShader(fsc))
|
|
||||||
return(false);
|
|
||||||
|
|
||||||
material_file::ShaderData *sd=mfd->shader[VK_SHADER_STAGE_FRAGMENT_BIT];
|
material_file::ShaderData *sd=mfd->shader[VK_SHADER_STAGE_FRAGMENT_BIT];
|
||||||
|
|
||||||
if(!sd)
|
if(!sd)
|
||||||
|
@ -14,7 +14,7 @@ namespace
|
|||||||
{
|
{
|
||||||
using namespace material_file;
|
using namespace material_file;
|
||||||
|
|
||||||
using MaterialFileParse=io::TextInputStream::ParseCallback<char>;
|
using TextParse=io::TextInputStream::ParseCallback<char>;
|
||||||
|
|
||||||
enum class MaterialFileBlock
|
enum class MaterialFileBlock
|
||||||
{
|
{
|
||||||
@ -62,7 +62,7 @@ namespace
|
|||||||
return MaterialFileBlock::None;
|
return MaterialFileBlock::None;
|
||||||
}
|
}
|
||||||
|
|
||||||
struct MaterialFileBlockParse:public MaterialFileParse
|
struct MaterialFileBlockParse:public TextParse
|
||||||
{
|
{
|
||||||
MaterialFileBlock state;
|
MaterialFileBlock state;
|
||||||
|
|
||||||
@ -80,7 +80,7 @@ namespace
|
|||||||
}
|
}
|
||||||
};//struct MaterialFileBlockParse
|
};//struct MaterialFileBlockParse
|
||||||
|
|
||||||
struct CodeParse:public MaterialFileParse
|
struct CodeParse:public TextParse
|
||||||
{
|
{
|
||||||
char *start =nullptr;
|
char *start =nullptr;
|
||||||
char *end =nullptr;
|
char *end =nullptr;
|
||||||
@ -112,7 +112,7 @@ namespace
|
|||||||
}
|
}
|
||||||
};//struct CodeParse
|
};//struct CodeParse
|
||||||
|
|
||||||
struct MaterialInstanceStateParse:public MaterialFileParse
|
struct MaterialInstanceStateParse:public TextParse
|
||||||
{
|
{
|
||||||
bool code =false;
|
bool code =false;
|
||||||
CodeParse code_parse;
|
CodeParse code_parse;
|
||||||
@ -213,7 +213,7 @@ namespace
|
|||||||
return(true);
|
return(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
struct VertexInputBlockParse:public MaterialFileParse
|
struct VertexInputBlockParse:public TextParse
|
||||||
{
|
{
|
||||||
List<UniformAttrib> *vi_list=nullptr;
|
List<UniformAttrib> *vi_list=nullptr;
|
||||||
|
|
||||||
@ -238,7 +238,7 @@ namespace
|
|||||||
}
|
}
|
||||||
};//struct VertexInputBlockParse
|
};//struct VertexInputBlockParse
|
||||||
|
|
||||||
struct ShaderBlockParse:public MaterialFileParse
|
struct ShaderBlockParse:public TextParse
|
||||||
{
|
{
|
||||||
ShaderData * shader_data=nullptr;
|
ShaderData * shader_data=nullptr;
|
||||||
|
|
||||||
@ -372,11 +372,11 @@ namespace
|
|||||||
|
|
||||||
};//struct GeometryShaderBlockParse
|
};//struct GeometryShaderBlockParse
|
||||||
|
|
||||||
struct MaterialTextParse:public MaterialFileParse
|
struct MaterialTextParse:public TextParse
|
||||||
{
|
{
|
||||||
MaterialFileBlock state;
|
MaterialFileBlock state;
|
||||||
|
|
||||||
MaterialFileParse *parse;
|
TextParse *parse;
|
||||||
|
|
||||||
MaterialFileData *mfd;
|
MaterialFileData *mfd;
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user