diff --git a/examples/common/bgfx_utils.cpp b/examples/common/bgfx_utils.cpp index 0236060a8..2ee9c0a6a 100644 --- a/examples/common/bgfx_utils.cpp +++ b/examples/common/bgfx_utils.cpp @@ -683,6 +683,53 @@ void meshSubmit(const Mesh* _mesh, const MeshState*const* _state, uint8_t _numPa _mesh->submit(_state, _numPasses, _mtx, _numMatrices); } +struct RendererTypeRemap +{ + bx::StringView name; + bgfx::RendererType::Enum type; +}; + +static RendererTypeRemap s_rendererTypeRemap[] = +{ + { "d3d11", bgfx::RendererType::Direct3D11 }, + { "d3d12", bgfx::RendererType::Direct3D12 }, + { "d3d9", bgfx::RendererType::Direct3D9 }, + { "gl", bgfx::RendererType::OpenGL }, + { "mtl", bgfx::RendererType::Metal }, + { "noop", bgfx::RendererType::Noop }, + { "vk", bgfx::RendererType::Vulkan }, +}; + +bx::StringView getName(bgfx::RendererType::Enum _type) +{ + for (uint32_t ii = 0; ii < BX_COUNTOF(s_rendererTypeRemap); ++ii) + { + const RendererTypeRemap& remap = s_rendererTypeRemap[ii]; + + if (_type == remap.type) + { + return remap.name; + } + } + + return ""; +} + +bgfx::RendererType::Enum getType(const bx::StringView& _name) +{ + for (uint32_t ii = 0; ii < BX_COUNTOF(s_rendererTypeRemap); ++ii) + { + const RendererTypeRemap& remap = s_rendererTypeRemap[ii]; + + if (0 == bx::strCmpI(_name, remap.name) ) + { + return remap.type; + } + } + + return bgfx::RendererType::Count; +} + Args::Args(int _argc, const char* const* _argv) : m_type(bgfx::RendererType::Count) , m_pciId(BGFX_PCI_ID_NONE) diff --git a/examples/common/bgfx_utils.h b/examples/common/bgfx_utils.h index 03b48f546..37d11c411 100644 --- a/examples/common/bgfx_utils.h +++ b/examples/common/bgfx_utils.h @@ -7,6 +7,7 @@ #define BGFX_UTILS_H_HEADER_GUARD #include +#include #include #include #include "bounds.h" @@ -90,7 +91,7 @@ struct Primitive uint32_t m_numIndices; uint32_t m_startVertex; uint32_t m_numVertices; - + Sphere m_sphere; Aabb m_aabb; Obb m_obb; @@ -102,7 +103,7 @@ struct Group { Group(); void reset(); - + bgfx::VertexBufferHandle m_vbh; bgfx::IndexBufferHandle m_ibh; uint16_t m_numVertices; @@ -145,6 +146,12 @@ void meshSubmit(const Mesh* _mesh, bgfx::ViewId _id, bgfx::ProgramHandle _progra /// void meshSubmit(const Mesh* _mesh, const MeshState*const* _state, uint8_t _numPasses, const float* _mtx, uint16_t _numMatrices = 1); +/// bgfx::RendererType::Enum to name. +bx::StringView getName(bgfx::RendererType::Enum _type); + +/// Name to bgfx::RendererType::Enum. +bgfx::RendererType::Enum getType(const bx::StringView& _name); + /// struct Args { diff --git a/tools/texturev/texturev.cpp b/tools/texturev/texturev.cpp index 5dbf33943..1d7c28064 100644 --- a/tools/texturev/texturev.cpp +++ b/tools/texturev/texturev.cpp @@ -818,22 +818,7 @@ struct View m_height = 720; } - bx::StringView rendererType = settings.get("view/renderer"); - if (!rendererType.isEmpty() ) - { - m_rendererType = bgfx::RendererType::Count; - - for (uint32_t ii = 0; ii < BX_COUNTOF(s_rendererTypeRemap); ++ii) - { - const RendererTypeRemap& remap = s_rendererTypeRemap[ii]; - - if (0 == bx::strCmpI(rendererType, remap.name) ) - { - m_rendererType = remap.type; - break; - } - } - } + m_rendererType = getType(settings.get("view/renderer") ); } } @@ -858,16 +843,7 @@ struct View if (m_rendererType != bgfx::RendererType::Count) { - for (uint32_t ii = 0; ii < BX_COUNTOF(s_rendererTypeRemap); ++ii) - { - const RendererTypeRemap& remap = s_rendererTypeRemap[ii]; - - if (m_rendererType == remap.type) - { - settings.set("view/renderer", remap.name); - break; - } - } + settings.set("view/renderer", getName(m_rendererType) ); } bx::FileWriter writer;