update Export interface

This commit is contained in:
2020-08-22 21:50:41 +08:00
parent d7af0d0304
commit e73493cf59

View File

@@ -171,20 +171,14 @@ EShLanguage FindLanguage(const VkShaderStageFlagBits shader_type)
extern "C" extern "C"
{ {
#ifdef WIN32 bool InitShaderCompiler()
#define EXPORT_FUNC __declspec(dllexport)
#else
#define EXPORT_FUNC
#endif
EXPORT_FUNC bool InitShaderCompiler()
{ {
init_default_build_in_resource(); init_default_build_in_resource();
return glslang::InitializeProcess(); return glslang::InitializeProcess();
} }
EXPORT_FUNC void CloseShaderCompiler() void CloseShaderCompiler()
{ {
glslang::FinalizeProcess(); glslang::FinalizeProcess();
} }
@@ -233,12 +227,12 @@ extern "C"
} }
};//struct SPVData };//struct SPVData
EXPORT_FUNC void FreeSPVData(SPVData *spv) void FreeSPVData(SPVData *spv)
{ {
delete spv; delete spv;
} }
EXPORT_FUNC SPVData *GLSL2SPV(const uint32_t shader_type,const char *shader_source) SPVData *GLSL2SPV(const uint32_t shader_type,const char *shader_source)
{ {
EShLanguage stage = FindLanguage((VkShaderStageFlagBits)shader_type); EShLanguage stage = FindLanguage((VkShaderStageFlagBits)shader_type);
@@ -276,7 +270,7 @@ extern "C"
return(new SPVData(spirv)); return(new SPVData(spirv));
} }
EXPORT_FUNC uint32_t GetShaderStageFlagByExtName(const char *ext_name) uint32_t GetShaderStageFlagByExtName(const char *ext_name)
{ {
if (stricmp(ext_name,"vert") == 0)return VK_SHADER_STAGE_VERTEX_BIT; else if (stricmp(ext_name,"vert") == 0)return VK_SHADER_STAGE_VERTEX_BIT; else
if (stricmp(ext_name,"tesc") == 0)return VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT; else if (stricmp(ext_name,"tesc") == 0)return VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT; else
@@ -290,4 +284,35 @@ extern "C"
return 0; return 0;
} }
} }
struct GLSLCompilerInterface
{
bool (*Init)();
void (*Close)();
uint32_t (*GetType)(const char *ext_name);
SPVData * (*Compile)(const uint32_t type,const char *source);
void (*Free)(SPVData *);
};
static GLSLCompilerInterface plug_in_interface
{
&InitShaderCompiler,
&CloseShaderCompiler,
&GetShaderStageFlagByExtName,
&GLSL2SPV,
&FreeSPVData
};
#ifdef WIN32
#define EXPORT_FUNC __declspec(dllexport)
#else
#define EXPORT_FUNC
#endif
EXPORT_FUNC GLSLCompilerInterface *GetInterface()
{
return &plug_in_interface;
}
}//extern "C" }//extern "C"