#include "Renderer.h" #include "GraphicsPlatformInterface.h" #include "Direct3D12/D3D12Interface.h" namespace XEngine::graphics { namespace { platform_interface gfx{}; /** * @brief 设置图形渲染平台的接口 * @details 根据指定的平台类型,调用对应的初始化与关闭函数指针 * @param platform 图形渲染平台类型 * @return true 如果初始化成功,否则返回 false */ bool set_platform_interface(graphics_platform platform) { switch (platform) { case graphics_platform::direct3d12: d3d12::get_platform_interface(gfx); break; case graphics_platform::vulkan: //vulkan::get_platform_interface(gfx); break; case graphics_platform::opengl: //opengl::get_platform_interface(gfx); break; default: return false; } return true; } }// anonymous namespace /** * @brief 初始化图形渲染平台 * @details 调用设置平台接口函数,初始化指定的图形渲染平台 * @param platform 图形渲染平台类型 * @return true 如果初始化成功,否则返回 false */ bool initialize(graphics_platform platform) { return set_platform_interface(platform) && gfx.initialize(); } void shutdown() { gfx.shutdown(); } void render() { gfx.render(); } surface create_surface(platform::window window) { return gfx.surface.create(window); } void remove_surface(surface_id id) { assert(id::is_valid(id)); gfx.surface.remove(id); } void surface::resize(u32 width, u32 height) const { assert(is_valid()); gfx.surface.resize(_id, width, height); } u32 surface::width() const { assert(is_valid()); return gfx.surface.width(_id); } u32 surface::height() const { assert(is_valid()); return gfx.surface.height(_id); } void surface::render() const { assert(is_valid()); gfx.surface.render(_id); } }// namespace XEngine::graphics