diff options
| author | 2016-04-14 17:22:08 +0200 | |
|---|---|---|
| committer | 2016-04-14 17:22:24 +0200 | |
| commit | 99aa7eacd7a2bb7a3711f8ff3f918e8fbe1f2819 (patch) | |
| tree | a681a4407878fcf7cc89973e6bb5bc09dcb22c3c /src/osd/modules/render/bgfx/effectreader.cpp | |
| parent | 0ff1223fe85b054b3b8ef3a8e5ca6ad859154ed8 (diff) | |
bgfx: Add data-driven render target clearing [Ryan Holtz]
Diffstat (limited to 'src/osd/modules/render/bgfx/effectreader.cpp')
| -rw-r--r-- | src/osd/modules/render/bgfx/effectreader.cpp | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/src/osd/modules/render/bgfx/effectreader.cpp b/src/osd/modules/render/bgfx/effectreader.cpp index f8e21974ead..f2a00cff562 100644 --- a/src/osd/modules/render/bgfx/effectreader.cpp +++ b/src/osd/modules/render/bgfx/effectreader.cpp @@ -19,6 +19,7 @@ #include "writereader.h" #include "shadermanager.h" #include "uniformreader.h" +#include "uniform.h" #include "effectreader.h" @@ -52,6 +53,17 @@ bgfx_effect* effect_reader::read_from_value(const Value& value, std::string pref std::string vertex_name(value["vertex"].GetString()); bgfx::ShaderHandle vertex_shader = shaders.shader(vertex_name); + if (vertex_shader.idx == 0xffff) + { + for (bgfx_uniform* uniform : uniforms) + { + if (uniform != nullptr) + { + delete uniform; + } + } + return nullptr; + } std::string fragment_name(""); if (value.HasMember("fragment")) @@ -63,6 +75,17 @@ bgfx_effect* effect_reader::read_from_value(const Value& value, std::string pref fragment_name = value["pixel"].GetString(); } bgfx::ShaderHandle fragment_shader = shaders.shader(fragment_name); + if (fragment_shader.idx == 0xffff) + { + for (bgfx_uniform* uniform : uniforms) + { + if (uniform != nullptr) + { + delete uniform; + } + } + return nullptr; + } return new bgfx_effect(blend | depth | cull | write, vertex_shader, fragment_shader, uniforms); } |
