Бранимир Караџић 4 سال پیش
والد
کامیت
67e628d8e3
3فایلهای تغییر یافته به همراه58 افزوده شده و 28 حذف شده
  1. 47 0
      examples/common/bgfx_utils.cpp
  2. 9 2
      examples/common/bgfx_utils.h
  3. 2 26
      tools/texturev/texturev.cpp

+ 47 - 0
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)

+ 9 - 2
examples/common/bgfx_utils.h

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

+ 2 - 26
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;