diff options
author | 2016-03-23 15:11:12 +0100 | |
---|---|---|
committer | 2016-03-23 15:11:12 +0100 | |
commit | 9f48ad4fbb303d9ac7ca50a8b6f9e68739227f49 (patch) | |
tree | 11a933b642d6b815089cdbce5569734d0a970c40 /src/osd/modules/render/bgfx/effectmanager.cpp | |
parent | 5fa870ccee2dfd5c803d3fc2533a379f2ea19b18 (diff) |
Add screen-specific shader chain support, nw
Diffstat (limited to 'src/osd/modules/render/bgfx/effectmanager.cpp')
-rw-r--r-- | src/osd/modules/render/bgfx/effectmanager.cpp | 24 |
1 files changed, 21 insertions, 3 deletions
diff --git a/src/osd/modules/render/bgfx/effectmanager.cpp b/src/osd/modules/render/bgfx/effectmanager.cpp index 7522a88dc8c..a34b5c52d82 100644 --- a/src/osd/modules/render/bgfx/effectmanager.cpp +++ b/src/osd/modules/render/bgfx/effectmanager.cpp @@ -12,6 +12,7 @@ #include "emu.h" #include <rapidjson/document.h> +#include <rapidjson/error/en.h> #include <bgfx/bgfxplatform.h> #include <bgfx/bgfx.h> @@ -52,7 +53,11 @@ bgfx_effect* effect_manager::load_effect(std::string name) std::string path = std::string(m_options.bgfx_path()) + "/effects/" + name; bx::CrtFileReader reader; - bx::open(&reader, path.c_str()); + if (!bx::open(&reader, path.c_str())) + { + printf("Unable to open effect file %s\n", path.c_str()); + return nullptr; + } int32_t size (bx::getSize(&reader)); @@ -63,9 +68,22 @@ bgfx_effect* effect_manager::load_effect(std::string name) Document document; document.Parse<0>(data); - bgfx_effect* effect = effect_reader::read_from_value(document, "Effect '" + name + "': ", m_shaders); - m_effects[name] = effect; + if (document.HasParseError()) { + std::string error(GetParseError_En(document.GetParseError())); + printf("Unable to parse effect %s. Errors returned:\n", path.c_str()); + printf("%s\n", error.c_str()); + return nullptr; + } + + bgfx_effect* effect = effect_reader::read_from_value(document, "Effect '" + name + "': ", m_shaders); + + if (effect == nullptr) { + printf("Unable to load effect %s\n", path.c_str()); + return nullptr; + } + + m_effects[name] = effect; return effect; } |