42 lines
1000 B
C++
42 lines
1000 B
C++
/*
|
|
* This Source Code Form is subject to the terms of the Mozilla Public
|
|
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
* file, You can obtain one at https://mozilla.org/MPL/2.0/.
|
|
*/
|
|
|
|
#include "DrawEncoder.hpp"
|
|
#include <map>
|
|
#include <stdexcept>
|
|
|
|
namespace OpenVulkano::Scene
|
|
{
|
|
namespace
|
|
{
|
|
auto& GetDrawEncoderRegistry()
|
|
{
|
|
static std::map<const std::type_info*, DrawEncoder> drawEncoderRegistry;
|
|
return drawEncoderRegistry;
|
|
}
|
|
|
|
template<class... args>
|
|
void EncoderNotImplementedFunction(args... ignored)
|
|
{
|
|
throw std::runtime_error("No implementation for encoder!");
|
|
}
|
|
}
|
|
|
|
void* DrawEncoder::RegisterVulkanEncodeFunction(const std::type_info* type, DrawEncoder::VkEncodeFunc func)
|
|
{
|
|
GetDrawEncoderRegistry()[type].vulkan = func;
|
|
return nullptr;
|
|
}
|
|
|
|
DrawEncoder& DrawEncoder::GetDrawEncoder(const std::type_info* type)
|
|
{
|
|
return GetDrawEncoderRegistry()[type];
|
|
}
|
|
|
|
DrawEncoder::DrawEncoder()
|
|
: vulkan(&EncoderNotImplementedFunction)
|
|
{}
|
|
} |