This commit is contained in:
Бранимир Караџић
2021-04-25 20:23:36 -07:00
parent 7ae40fb95d
commit 67e628d8e3
3 changed files with 58 additions and 28 deletions

View File

@@ -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)

View File

@@ -7,6 +7,7 @@
#define BGFX_UTILS_H_HEADER_GUARD
#include <bx/pixelformat.h>
#include <bx/string.h>
#include <bgfx/bgfx.h>
#include <bimg/bimg.h>
#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
{

View File

@@ -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;