do variable substitution in bgfx_path #2201

This commit is contained in:
Vas Crabb 2017-04-23 16:48:52 +10:00
parent b2fda77d30
commit 2e14f39a07
3 changed files with 21 additions and 12 deletions

View File

@ -61,7 +61,9 @@ void chain_manager::refresh_available_chains()
m_available_chains.clear(); m_available_chains.clear();
m_available_chains.push_back(chain_desc("none", "")); m_available_chains.push_back(chain_desc("none", ""));
find_available_chains(std::string(m_options.bgfx_path()) + "/chains", ""); std::string chains_path;
osd_subst_env(chains_path, util::string_format("%s" PATH_SEPARATOR "chains", m_options.bgfx_path()));
find_available_chains(chains_path, "");
destroy_unloaded_chains(); destroy_unloaded_chains();
} }
@ -137,7 +139,9 @@ bgfx_chain* chain_manager::load_chain(std::string name, uint32_t screen_index)
{ {
name = name + ".json"; name = name + ".json";
} }
std::string path = std::string(m_options.bgfx_path()) + "/chains/" + name; std::string path;
osd_subst_env(path, util::string_format("%s" PATH_SEPARATOR "chains" PATH_SEPARATOR, m_options.bgfx_path()));
path += name;
bx::CrtFileReader reader; bx::CrtFileReader reader;
if (!bx::open(&reader, path.c_str())) if (!bx::open(&reader, path.c_str()))

View File

@ -51,7 +51,9 @@ bgfx_effect* effect_manager::load_effect(std::string name)
if (full_name.length() < 5 || (full_name.compare(full_name.length() - 5, 5, ".json") != 0)) { if (full_name.length() < 5 || (full_name.compare(full_name.length() - 5, 5, ".json") != 0)) {
full_name = full_name + ".json"; full_name = full_name + ".json";
} }
std::string path = std::string(m_options.bgfx_path()) + "/effects/" + full_name; std::string path;
osd_subst_env(path, util::string_format("%s" PATH_SEPARATOR "effects" PATH_SEPARATOR, m_options.bgfx_path()));
path += full_name;
bx::CrtFileReader reader; bx::CrtFileReader reader;
if (!bx::open(&reader, path.c_str())) if (!bx::open(&reader, path.c_str()))

View File

@ -41,42 +41,45 @@ bgfx::ShaderHandle shader_manager::shader(std::string name)
bgfx::ShaderHandle shader_manager::load_shader(std::string name) bgfx::ShaderHandle shader_manager::load_shader(std::string name)
{ {
std::string shader_path; std::string shader_path(m_options.bgfx_path());
shader_path += PATH_SEPARATOR "shaders" PATH_SEPARATOR;
switch (bgfx::getRendererType()) switch (bgfx::getRendererType())
{ {
case bgfx::RendererType::Noop: case bgfx::RendererType::Noop:
case bgfx::RendererType::Direct3D9: case bgfx::RendererType::Direct3D9:
shader_path = m_options.bgfx_path() + std::string("/shaders/dx9/"); shader_path += "dx9";
break; break;
case bgfx::RendererType::Direct3D11: case bgfx::RendererType::Direct3D11:
case bgfx::RendererType::Direct3D12: case bgfx::RendererType::Direct3D12:
shader_path = m_options.bgfx_path() + std::string("/shaders/dx11/"); shader_path += "dx11";
break; break;
case bgfx::RendererType::Gnm: case bgfx::RendererType::Gnm:
shader_path = m_options.bgfx_path() + std::string("/shaders/pssl/"); shader_path += "pssl";
break; break;
case bgfx::RendererType::Metal: case bgfx::RendererType::Metal:
shader_path = m_options.bgfx_path() + std::string("/shaders/metal/"); shader_path += "metal";
break; break;
case bgfx::RendererType::OpenGL: case bgfx::RendererType::OpenGL:
shader_path = m_options.bgfx_path() + std::string("/shaders/glsl/"); shader_path += "glsl";
break; break;
case bgfx::RendererType::OpenGLES: case bgfx::RendererType::OpenGLES:
shader_path = m_options.bgfx_path() + std::string("/shaders/essl/"); shader_path += "essl";
break; break;
case bgfx::RendererType::Vulkan: case bgfx::RendererType::Vulkan:
shader_path = m_options.bgfx_path() + std::string("/shaders/spirv/"); shader_path += "spirv";
break; break;
default: default:
fatalerror("Unknown BGFX renderer type %d", bgfx::getRendererType()); fatalerror("Unknown BGFX renderer type %d", bgfx::getRendererType());
} }
shader_path += PATH_SEPARATOR;
osd_subst_env(shader_path, shader_path);
const bgfx::Memory* mem = load_mem(shader_path + name + ".bin"); const bgfx::Memory* mem = load_mem(shader_path + name + ".bin");
if (mem != nullptr) if (mem != nullptr)