use AnsiString in shader
This commit is contained in:
parent
416b7bfcb3
commit
8f0cd9f35b
@ -28,11 +28,11 @@ public:
|
|||||||
bool End(){return(vkEndCommandBuffer(cmd_buf)==VK_SUCCESS);}
|
bool End(){return(vkEndCommandBuffer(cmd_buf)==VK_SUCCESS);}
|
||||||
|
|
||||||
#ifdef _DEBUG
|
#ifdef _DEBUG
|
||||||
void SetDebugName(const UTF8String &);
|
void SetDebugName(const AnsiString &);
|
||||||
void BeginRegion(const UTF8String &,const Color4f &);
|
void BeginRegion(const AnsiString &,const Color4f &);
|
||||||
void EndRegion();
|
void EndRegion();
|
||||||
#else
|
#else
|
||||||
void BeginRegion(const UTF8String &,const Color4f &){}
|
void BeginRegion(const AnsiString &,const Color4f &){}
|
||||||
void EndRegion(){}
|
void EndRegion(){}
|
||||||
#endif//_DEBUG
|
#endif//_DEBUG
|
||||||
};//class GPUCmdBuffer
|
};//class GPUCmdBuffer
|
||||||
|
@ -90,11 +90,11 @@ VK_NAMESPACE_BEGIN
|
|||||||
}
|
}
|
||||||
|
|
||||||
template<typename T>
|
template<typename T>
|
||||||
T *GetDeviceProc(const char *name)
|
T *GetDeviceProc(VkDevice *dev,const char *name)
|
||||||
{
|
{
|
||||||
if(!GetDeviceProcAddr)return(nullptr);
|
if(!GetDeviceProcAddr)return(nullptr);
|
||||||
|
|
||||||
return reinterpret_cast<T>(GetDeviceProcAddr(name));
|
return reinterpret_cast<T>(GetDeviceProcAddr(dev,name));
|
||||||
}
|
}
|
||||||
|
|
||||||
void DestroySurface(VkSurfaceKHR);
|
void DestroySurface(VkSurfaceKHR);
|
||||||
|
@ -7,7 +7,7 @@
|
|||||||
VK_NAMESPACE_BEGIN
|
VK_NAMESPACE_BEGIN
|
||||||
class MaterialDescriptorManager
|
class MaterialDescriptorManager
|
||||||
{
|
{
|
||||||
UTF8String mtl_name;
|
AnsiString mtl_name;
|
||||||
|
|
||||||
BindingMapArray binding_map[DESCRIPTOR_SET_TYPE_COUNT];
|
BindingMapArray binding_map[DESCRIPTOR_SET_TYPE_COUNT];
|
||||||
|
|
||||||
@ -19,11 +19,11 @@ private:
|
|||||||
|
|
||||||
public:
|
public:
|
||||||
|
|
||||||
MaterialDescriptorManager(const UTF8String &,ShaderDescriptor *,const uint);
|
MaterialDescriptorManager(const AnsiString &,ShaderDescriptor *,const uint);
|
||||||
MaterialDescriptorManager(const UTF8String &,const ShaderDescriptorSetArray &);
|
MaterialDescriptorManager(const AnsiString &,const ShaderDescriptorSetArray &);
|
||||||
~MaterialDescriptorManager();
|
~MaterialDescriptorManager();
|
||||||
|
|
||||||
const UTF8String &GetMaterialName()const{return mtl_name;}
|
const AnsiString &GetMaterialName()const{return mtl_name;}
|
||||||
|
|
||||||
const uint GetBindCount(const DescriptorSetType &set_type)const
|
const uint GetBindCount(const DescriptorSetType &set_type)const
|
||||||
{
|
{
|
||||||
|
@ -171,7 +171,7 @@ namespace hgl
|
|||||||
|
|
||||||
AABB GetAABB()const
|
AABB GetAABB()const
|
||||||
{
|
{
|
||||||
vec min_point,max_point;
|
glm::vec4 min_point,max_point;
|
||||||
|
|
||||||
GetBoundingBox(min_point,max_point);
|
GetBoundingBox(min_point,max_point);
|
||||||
|
|
||||||
@ -264,7 +264,7 @@ namespace hgl
|
|||||||
|
|
||||||
AABB GetAABB()const
|
AABB GetAABB()const
|
||||||
{
|
{
|
||||||
vec min_point,max_point;
|
glm::vec4 min_point,max_point;
|
||||||
|
|
||||||
GetBoundingBox(min_point,max_point);
|
GetBoundingBox(min_point,max_point);
|
||||||
|
|
||||||
@ -462,10 +462,10 @@ namespace hgl
|
|||||||
template<typename V>
|
template<typename V>
|
||||||
bool WriteRect(const T left,const T top,const T width,const T height)
|
bool WriteRect(const T left,const T top,const T width,const T height)
|
||||||
{
|
{
|
||||||
const vec2<V> lt(left ,top);
|
const glm::vec<2,V,glm::defaultp> lt(left ,top);
|
||||||
const vec2<V> rt(left+width,top);
|
const glm::vec<2,V,glm::defaultp> rt(left+width,top);
|
||||||
const vec2<V> rb(left+width,top+height);
|
const glm::vec<2,V,glm::defaultp> rb(left+width,top+height);
|
||||||
const vec2<V> lb(left ,top+height);
|
const glm::vec<2,V,glm::defaultp> lb(left ,top+height);
|
||||||
|
|
||||||
return WriteQuad(lt,rt,rb,lb);
|
return WriteQuad(lt,rt,rb,lb);
|
||||||
}
|
}
|
||||||
@ -580,7 +580,7 @@ namespace hgl
|
|||||||
|
|
||||||
AABB GetAABB()const
|
AABB GetAABB()const
|
||||||
{
|
{
|
||||||
vec min_point,max_point;
|
glm::vec4 min_point,max_point;
|
||||||
|
|
||||||
GetBoundingBox(min_point,max_point);
|
GetBoundingBox(min_point,max_point);
|
||||||
|
|
||||||
@ -850,7 +850,7 @@ namespace hgl
|
|||||||
|
|
||||||
AABB GetAABB()const
|
AABB GetAABB()const
|
||||||
{
|
{
|
||||||
vec min_point,max_point;
|
glm::vec4 min_point,max_point;
|
||||||
|
|
||||||
GetBoundingBox(min_point,max_point);
|
GetBoundingBox(min_point,max_point);
|
||||||
|
|
||||||
|
@ -58,7 +58,7 @@ public:
|
|||||||
|
|
||||||
bool AddConstValue(ConstValueDescriptor *sd);
|
bool AddConstValue(ConstValueDescriptor *sd);
|
||||||
|
|
||||||
void SetPushConstant(const AnsiString name,uint8_t offset,uint8_t size);
|
void SetPushConstant(const AnsiString &name,uint8_t offset,uint8_t size);
|
||||||
};//class ShaderDescriptorInfo
|
};//class ShaderDescriptorInfo
|
||||||
|
|
||||||
template<VkShaderStageFlagBits SS,typename IArray,typename I,typename OArray,typename O> class CustomShaderDescriptorInfo:public ShaderDescriptorInfo
|
template<VkShaderStageFlagBits SS,typename IArray,typename I,typename OArray,typename O> class CustomShaderDescriptorInfo:public ShaderDescriptorInfo
|
||||||
@ -98,7 +98,7 @@ public:
|
|||||||
using CustomShaderDescriptorInfo<VK_SHADER_STAGE_VERTEX_BIT,VIAArray,VIA,SVArray,ShaderVariable>::CustomShaderDescriptorInfo;
|
using CustomShaderDescriptorInfo<VK_SHADER_STAGE_VERTEX_BIT,VIAArray,VIA,SVArray,ShaderVariable>::CustomShaderDescriptorInfo;
|
||||||
~VertexShaderDescriptorInfo()override=default;
|
~VertexShaderDescriptorInfo()override=default;
|
||||||
|
|
||||||
bool AddSubpassInput(const AnsiString name,uint8_t index);
|
bool AddSubpassInput(const AnsiString &name,uint8_t index);
|
||||||
};//class VertexShaderDescriptorInfo
|
};//class VertexShaderDescriptorInfo
|
||||||
|
|
||||||
using TessCtrlShaderDescriptorInfo=CustomShaderDescriptorInfo<VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT, SVArray, ShaderVariable, SVArray, ShaderVariable >;
|
using TessCtrlShaderDescriptorInfo=CustomShaderDescriptorInfo<VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT, SVArray, ShaderVariable, SVArray, ShaderVariable >;
|
||||||
|
@ -77,7 +77,7 @@ namespace hgl
|
|||||||
|
|
||||||
DataChain::UserNode *un=ibo_data_chain.Acquire(hgl_align<int>(count,4));
|
DataChain::UserNode *un=ibo_data_chain.Acquire(hgl_align<int>(count,4));
|
||||||
|
|
||||||
if(!un)return(false);
|
if(!un)return(nullptr);
|
||||||
|
|
||||||
ibo_cur_size+=un->GetCount();
|
ibo_cur_size+=un->GetCount();
|
||||||
|
|
||||||
|
@ -21,7 +21,7 @@ bool LoadTexture2DLayerFromFile(GPUDevice *device,Texture2DArray *ta,const uint3
|
|||||||
VkTextureLoader<Texture2D,Texture2DLoader> loader(device,auto_mipmaps);
|
VkTextureLoader<Texture2D,Texture2DLoader> loader(device,auto_mipmaps);
|
||||||
|
|
||||||
if(!loader.Load(filename))
|
if(!loader.Load(filename))
|
||||||
return(nullptr);
|
return(false);
|
||||||
|
|
||||||
DeviceBuffer *buf=loader.GetBuffer();
|
DeviceBuffer *buf=loader.GetBuffer();
|
||||||
|
|
||||||
|
@ -26,13 +26,13 @@ bool GPUCmdBuffer::Begin()
|
|||||||
}
|
}
|
||||||
|
|
||||||
#ifdef _DEBUG
|
#ifdef _DEBUG
|
||||||
void GPUCmdBuffer::SetDebugName(const UTF8String &object_name)
|
void GPUCmdBuffer::SetDebugName(const AnsiString &object_name)
|
||||||
{
|
{
|
||||||
if(dev_attr->debug_utils)
|
if(dev_attr->debug_utils)
|
||||||
dev_attr->debug_utils->SetCommandBuffer(cmd_buf,object_name);
|
dev_attr->debug_utils->SetCommandBuffer(cmd_buf,object_name);
|
||||||
}
|
}
|
||||||
|
|
||||||
void GPUCmdBuffer::BeginRegion(const UTF8String ®ion_name,const Color4f &color)
|
void GPUCmdBuffer::BeginRegion(const AnsiString ®ion_name,const Color4f &color)
|
||||||
{
|
{
|
||||||
if(dev_attr->debug_utils)
|
if(dev_attr->debug_utils)
|
||||||
dev_attr->debug_utils->CmdBegin(cmd_buf,region_name,color);
|
dev_attr->debug_utils->CmdBegin(cmd_buf,region_name,color);
|
||||||
|
@ -51,7 +51,7 @@ namespace
|
|||||||
{
|
{
|
||||||
ext_list->Add(VK_KHR_SWAPCHAIN_EXTENSION_NAME);
|
ext_list->Add(VK_KHR_SWAPCHAIN_EXTENSION_NAME);
|
||||||
|
|
||||||
constexpr char *require_ext_list[]=
|
constexpr const char *require_ext_list[]=
|
||||||
{
|
{
|
||||||
#ifdef _DEBUG
|
#ifdef _DEBUG
|
||||||
VK_EXT_DEBUG_MARKER_EXTENSION_NAME,
|
VK_EXT_DEBUG_MARKER_EXTENSION_NAME,
|
||||||
|
@ -48,9 +48,9 @@ MaterialParameters *GPUDevice::CreateMP(const MaterialDescriptorManager *desc_ma
|
|||||||
if(!ds)return(nullptr);
|
if(!ds)return(nullptr);
|
||||||
|
|
||||||
#ifdef _DEBUG
|
#ifdef _DEBUG
|
||||||
const UTF8String addr_string=HexToString<char,uint64_t>((uint64_t)(ds->GetDescriptorSet()));
|
const UTF8String addr_string=HexToString<u8char,uint64_t>((uint64_t)(ds->GetDescriptorSet()));
|
||||||
|
|
||||||
LOG_INFO(U8_TEXT("Create [DescriptSets:")+addr_string+("] OK! Material Name: \"")+desc_manager->GetMaterialName()+U8_TEXT("\" Type: ")+GetDescriptorSetTypeName(desc_set_type));
|
LOG_INFO(U8_TEXT("Create [DescriptSets:")+addr_string+U8_TEXT("] OK! Material Name: \"")+(const UTF8String &)(desc_manager->GetMaterialName())+U8_TEXT("\" Type: ")+(u8char *)(GetDescriptorSetTypeName(desc_set_type)));
|
||||||
#endif//_DEBUG
|
#endif//_DEBUG
|
||||||
|
|
||||||
return(new MaterialParameters(desc_manager,desc_set_type,ds));
|
return(new MaterialParameters(desc_manager,desc_set_type,ds));
|
||||||
|
@ -62,7 +62,7 @@ RTSwapchain *GPUDevice::CreateSwapchainRenderTarget()
|
|||||||
Swapchain *sc=CreateSwapchain(attr->surface_caps.currentExtent);
|
Swapchain *sc=CreateSwapchain(attr->surface_caps.currentExtent);
|
||||||
|
|
||||||
if(!sc)
|
if(!sc)
|
||||||
return(false);
|
return(nullptr);
|
||||||
|
|
||||||
DeviceQueue *q=CreateQueue(sc->color_count,false);
|
DeviceQueue *q=CreateQueue(sc->color_count,false);
|
||||||
Semaphore *render_complete_semaphore=CreateGPUSemaphore();
|
Semaphore *render_complete_semaphore=CreateGPUSemaphore();
|
||||||
|
@ -25,7 +25,7 @@ VulkanInstance *CreateInstance(const AnsiString &app_name,VKDebugOut *out,Create
|
|||||||
ext_list.Add(VK_KHR_SURFACE_EXTENSION_NAME);
|
ext_list.Add(VK_KHR_SURFACE_EXTENSION_NAME);
|
||||||
ext_list.Add(HGL_VK_SURFACE_EXTENSION_NAME); //此宏在VKSurfaceExtensionName.h中定义
|
ext_list.Add(HGL_VK_SURFACE_EXTENSION_NAME); //此宏在VKSurfaceExtensionName.h中定义
|
||||||
|
|
||||||
constexpr char *require_ext_list[]=
|
constexpr const char *require_ext_list[]=
|
||||||
{
|
{
|
||||||
#ifdef _DEBUG
|
#ifdef _DEBUG
|
||||||
VK_EXT_DEBUG_REPORT_EXTENSION_NAME,
|
VK_EXT_DEBUG_REPORT_EXTENSION_NAME,
|
||||||
|
@ -12,7 +12,7 @@ void WriteDescriptorSetLayoutBinding(VkDescriptorSetLayoutBinding *dslb,ShaderDe
|
|||||||
dslb->pImmutableSamplers=nullptr;
|
dslb->pImmutableSamplers=nullptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
MaterialDescriptorManager::MaterialDescriptorManager(const UTF8String &name,ShaderDescriptor *sd_list,const uint sd_count)
|
MaterialDescriptorManager::MaterialDescriptorManager(const AnsiString &name,ShaderDescriptor *sd_list,const uint sd_count)
|
||||||
{
|
{
|
||||||
mtl_name=name;
|
mtl_name=name;
|
||||||
|
|
||||||
@ -66,7 +66,7 @@ MaterialDescriptorManager::MaterialDescriptorManager(const UTF8String &name,Shad
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
MaterialDescriptorManager::MaterialDescriptorManager(const UTF8String &name,const ShaderDescriptorSetArray &sds_array)
|
MaterialDescriptorManager::MaterialDescriptorManager(const AnsiString &name,const ShaderDescriptorSetArray &sds_array)
|
||||||
{
|
{
|
||||||
mtl_name=name;
|
mtl_name=name;
|
||||||
|
|
||||||
|
@ -7,7 +7,7 @@ namespace
|
|||||||
{
|
{
|
||||||
void debug_queue_family_properties_out(const char *front,const List<VkQueueFamilyProperties> &qfp_list)
|
void debug_queue_family_properties_out(const char *front,const List<VkQueueFamilyProperties> &qfp_list)
|
||||||
{
|
{
|
||||||
constexpr char *queue_bit_name[]=
|
constexpr const char *queue_bit_name[]=
|
||||||
{
|
{
|
||||||
"Graphics",
|
"Graphics",
|
||||||
"Compute",
|
"Compute",
|
||||||
|
@ -158,9 +158,9 @@ Texture2D *RenderResource::LoadTexture2D(const OSString &filename,bool auto_mipm
|
|||||||
|
|
||||||
if(du)
|
if(du)
|
||||||
{
|
{
|
||||||
const UTF8String name=ToUTF8String(filename);
|
const UTF8String name=U8_TEXT("Tex2D:")+ToUTF8String(filename);
|
||||||
|
|
||||||
du->SetImage(tex->GetImage(),"Tex2D:"+name);
|
du->SetImage(tex->GetImage(),(char *)(name.c_str()));
|
||||||
}
|
}
|
||||||
#endif//_DEBUG
|
#endif//_DEBUG
|
||||||
}
|
}
|
||||||
|
@ -65,7 +65,7 @@ Renderable *CreateRenderable(Primitive *prim,MaterialInstance *mi,Pipeline *p)
|
|||||||
return(nullptr);
|
return(nullptr);
|
||||||
|
|
||||||
const uint32_t input_count=vil->GetVertexAttribCount(VertexInputGroup::Basic); //不统计Bone/LocalToWorld组的
|
const uint32_t input_count=vil->GetVertexAttribCount(VertexInputGroup::Basic); //不统计Bone/LocalToWorld组的
|
||||||
const UTF8String &mtl_name=mi->GetMaterial()->GetName();
|
const AnsiString &mtl_name=mi->GetMaterial()->GetName();
|
||||||
|
|
||||||
if(prim->GetVABCount()<input_count) //小于材质要求的数量?那自然是不行的
|
if(prim->GetVABCount()<input_count) //小于材质要求的数量?那自然是不行的
|
||||||
{
|
{
|
||||||
@ -96,20 +96,20 @@ Renderable *CreateRenderable(Primitive *prim,MaterialInstance *mi,Pipeline *p)
|
|||||||
|
|
||||||
if(vab->GetFormat()!=vif->format)
|
if(vab->GetFormat()!=vif->format)
|
||||||
{
|
{
|
||||||
LOG_ERROR( "[FATAL ERROR] VAB \""+UTF8String(vif->name)+
|
LOG_ERROR( "[FATAL ERROR] VAB \""+AnsiString(vif->name)+
|
||||||
UTF8String("\" format can't match Renderable, Material(")+mtl_name+
|
AnsiString("\" format can't match Renderable, Material(")+mtl_name+
|
||||||
UTF8String(") Format(")+GetVulkanFormatName(vif->format)+
|
AnsiString(") Format(")+GetVulkanFormatName(vif->format)+
|
||||||
UTF8String("), VAB Format(")+GetVulkanFormatName(vab->GetFormat())+
|
AnsiString("), VAB Format(")+GetVulkanFormatName(vab->GetFormat())+
|
||||||
")");
|
")");
|
||||||
return(nullptr);
|
return(nullptr);
|
||||||
}
|
}
|
||||||
|
|
||||||
if(vab->GetStride()!=vif->stride)
|
if(vab->GetStride()!=vif->stride)
|
||||||
{
|
{
|
||||||
LOG_ERROR( "[FATAL ERROR] VAB \""+UTF8String(vif->name)+
|
LOG_ERROR( "[FATAL ERROR] VAB \""+AnsiString(vif->name)+
|
||||||
UTF8String("\" stride can't match Renderable, Material(")+mtl_name+
|
AnsiString("\" stride can't match Renderable, Material(")+mtl_name+
|
||||||
UTF8String(") stride(")+UTF8String::numberOf(vif->stride)+
|
AnsiString(") stride(")+AnsiString::numberOf(vif->stride)+
|
||||||
UTF8String("), VAB stride(")+UTF8String::numberOf(vab->GetStride())+
|
AnsiString("), VAB stride(")+AnsiString::numberOf(vab->GetStride())+
|
||||||
")");
|
")");
|
||||||
return(nullptr);
|
return(nullptr);
|
||||||
}
|
}
|
||||||
|
@ -10,7 +10,7 @@ namespace hgl
|
|||||||
{
|
{
|
||||||
namespace graph
|
namespace graph
|
||||||
{
|
{
|
||||||
// µÈͬÓÚEShTargetLanguageVersion
|
// <EFBFBD><EFBFBD>ͬ<EFBFBD><EFBFBD>EShTargetLanguageVersion
|
||||||
constexpr const uint32_t SPV_VERSION_1_0 = (1 << 16); // SPIR-V 1.0
|
constexpr const uint32_t SPV_VERSION_1_0 = (1 << 16); // SPIR-V 1.0
|
||||||
constexpr const uint32_t SPV_VERSION_1_1 = (1 << 16) | (1 << 8); // SPIR-V 1.1
|
constexpr const uint32_t SPV_VERSION_1_1 = (1 << 16) | (1 << 8); // SPIR-V 1.1
|
||||||
constexpr const uint32_t SPV_VERSION_1_2 = (1 << 16) | (2 << 8); // SPIR-V 1.2
|
constexpr const uint32_t SPV_VERSION_1_2 = (1 << 16) | (2 << 8); // SPIR-V 1.2
|
||||||
@ -172,7 +172,7 @@ namespace hgl
|
|||||||
|
|
||||||
if(!result)
|
if(!result)
|
||||||
{
|
{
|
||||||
LOG_ERROR(U8_TEXT("Compile shader failed, error info: ")+UTF8String(spv->log));
|
LOG_ERROR("Compile shader failed, error info: "+AnsiString(spv->log));
|
||||||
|
|
||||||
FreeSPVData(spv);
|
FreeSPVData(spv);
|
||||||
return(nullptr);
|
return(nullptr);
|
||||||
|
@ -67,6 +67,8 @@ namespace material_file
|
|||||||
code_length=0;
|
code_length=0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
virtual ~ShaderData()=default;
|
||||||
|
|
||||||
const VkShaderStageFlagBits GetShaderStage()const{return shader_stage;}
|
const VkShaderStageFlagBits GetShaderStage()const{return shader_stage;}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -37,7 +37,7 @@ namespace
|
|||||||
|
|
||||||
struct MaterialFileBlockInfo
|
struct MaterialFileBlockInfo
|
||||||
{
|
{
|
||||||
char *name;
|
const char *name;
|
||||||
int len;
|
int len;
|
||||||
MaterialFileBlock state;
|
MaterialFileBlock state;
|
||||||
};
|
};
|
||||||
|
@ -45,7 +45,7 @@ bool ShaderDescriptorInfo::AddConstValue(ConstValueDescriptor *sd)
|
|||||||
return(true);
|
return(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool VertexShaderDescriptorInfo::AddSubpassInput(const UTF8String name,uint8_t index)
|
bool VertexShaderDescriptorInfo::AddSubpassInput(const AnsiString &name,uint8_t index)
|
||||||
{
|
{
|
||||||
for(auto *si:subpass_input)
|
for(auto *si:subpass_input)
|
||||||
{
|
{
|
||||||
@ -62,7 +62,7 @@ bool VertexShaderDescriptorInfo::AddSubpassInput(const UTF8String name,uint8_t i
|
|||||||
return(true);
|
return(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
void ShaderDescriptorInfo::SetPushConstant(const UTF8String name,uint8_t offset,uint8_t size)
|
void ShaderDescriptorInfo::SetPushConstant(const AnsiString &name,uint8_t offset,uint8_t size)
|
||||||
{
|
{
|
||||||
push_constant.name =name;
|
push_constant.name =name;
|
||||||
push_constant.offset=offset;
|
push_constant.offset=offset;
|
||||||
|
@ -9,7 +9,7 @@ STD_MTL_NAMESPACE_BEGIN
|
|||||||
|
|
||||||
namespace
|
namespace
|
||||||
{
|
{
|
||||||
ObjectMap<AnsiString,UTF8String> shader_library;
|
ObjectMap<AnsiString,AnsiString> shader_library;
|
||||||
}
|
}
|
||||||
|
|
||||||
// 因为是Debug阶段,所以现在直接从文件系统加载
|
// 因为是Debug阶段,所以现在直接从文件系统加载
|
||||||
@ -19,7 +19,7 @@ const AnsiString *LoadShader(const AnsiString &shader_name)
|
|||||||
if(shader_name.IsEmpty())
|
if(shader_name.IsEmpty())
|
||||||
return(nullptr);
|
return(nullptr);
|
||||||
|
|
||||||
UTF8String *shader;
|
AnsiString *shader;
|
||||||
|
|
||||||
if(shader_library.Get(shader_name,shader))
|
if(shader_library.Get(shader_name,shader))
|
||||||
return shader;
|
return shader;
|
||||||
@ -33,9 +33,9 @@ const AnsiString *LoadShader(const AnsiString &shader_name)
|
|||||||
if(!filesystem::FileExist(os_fn))
|
if(!filesystem::FileExist(os_fn))
|
||||||
return(nullptr);
|
return(nullptr);
|
||||||
|
|
||||||
shader=new UTF8String;
|
shader=new AnsiString;
|
||||||
|
|
||||||
if(LoadStringFromTextFile(*shader,os_fn)<=0)
|
if(LoadStringFromTextFile((UTF8String &)*shader,os_fn)<=0)
|
||||||
{
|
{
|
||||||
delete shader;
|
delete shader;
|
||||||
shader=nullptr;
|
shader=nullptr;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user