Minor fixes

This commit is contained in:
SirLynix
2024-01-13 15:10:53 +01:00
committed by Jérôme Leclercq
parent f45c2c5008
commit 5c7059c8fc
32 changed files with 101 additions and 108 deletions

View File

@@ -88,7 +88,7 @@ namespace Nz
for (auto& drawCall : m_drawCalls)
{
builder.BindVertexBuffer(0, *drawCall.vertexBuffer);
builder.Draw(SafeCast<UInt32>(drawCall.vertexCount));
builder.Draw(SafeCaster(drawCall.vertexCount));
}
}

View File

@@ -9,6 +9,7 @@
#include <Nazara/Core/Log.hpp>
#include <Nazara/Renderer/RendererImpl.hpp>
#include <NazaraUtils/EnumArray.hpp>
#include <NazaraUtils/TypeTraits.hpp>
#include <frozen/string.h>
#include <frozen/unordered_map.h>
#include <filesystem>
@@ -80,10 +81,12 @@ namespace Nz
void Renderer::LoadBackend(const Config& config)
{
using FactoryFunc = FunctionPtr<std::unique_ptr<RendererImpl>()>;
struct RendererImplementations
{
#ifdef NAZARA_RENDERER_EMBEDDEDBACKENDS
std::function<std::unique_ptr<RendererImpl>()> factory;
FactoryFunc factory;
#else
std::filesystem::path fileName;
#endif
@@ -97,20 +100,20 @@ namespace Nz
preferredAPI = RenderAPI::OpenGL;
#ifdef NAZARA_RENDERER_EMBEDDEDBACKENDS
auto RegisterImpl = [&](RenderAPI api, auto ComputeScore, std::function<std::unique_ptr<RendererImpl>()> factory)
auto RegisterImpl = [&]<typename T>(RenderAPI api, auto ComputeScore, TypeTag<T> RendererTag)
{
int score = ComputeScore();
if (score >= 0)
{
auto& impl = implementations.emplace_back();
impl.factory = std::move(factory);
impl.factory = []() -> std::unique_ptr<RendererImpl> { return std::make_unique<T>(); };
impl.score = (preferredAPI == api) ? std::numeric_limits<int>::max() : score;
}
};
RegisterImpl(RenderAPI::OpenGL, [] { return 50; }, [] { return std::make_unique<OpenGLRenderer>(); });
RegisterImpl(RenderAPI::OpenGL, [] { return 50; }, TypeTag<OpenGLRenderer>{});
#ifndef NAZARA_PLATFORM_WEB
RegisterImpl(RenderAPI::Vulkan, [] { return 100; }, [] { return std::make_unique<VulkanRenderer>(); });
RegisterImpl(RenderAPI::Vulkan, [] { return 100; }, TypeTag<VulkanRenderer>{});
#endif
#else
@@ -202,7 +205,7 @@ namespace Nz
m_rendererLib = std::move(chosenLib);
#endif
NazaraDebug("Using " + m_rendererImpl->QueryAPIString() + " as renderer");
NazaraDebug("Using {0} as renderer", m_rendererImpl->QueryAPIString());
}
Renderer* Renderer::s_instance = nullptr;