#ifndef URDE_CNESSHADER_HPP #define URDE_CNESSHADER_HPP #include "boo/graphicsdev/GL.hpp" #include "boo/graphicsdev/Metal.hpp" #include "boo/graphicsdev/D3D.hpp" #include "boo/graphicsdev/Vulkan.hpp" namespace urde::MP1 { class CNESShader { public: #if BOO_HAS_GL static void Initialize(boo::GLDataFactory::Context& ctx); static boo::ObjToken BuildShaderDataBinding(boo::GLDataFactory::Context& ctx, boo::ObjToken vbo, boo::ObjToken uniBuf, boo::ObjToken tex); #endif #if _WIN32 static void Initialize(boo::ID3DDataFactory::Context& ctx); static boo::ObjToken BuildShaderDataBinding(boo::ID3DDataFactory::Context& ctx, boo::ObjToken vbo, boo::ObjToken uniBuf, boo::ObjToken tex); #endif #if BOO_HAS_METAL static void Initialize(boo::MetalDataFactory::Context& ctx); static boo::ObjToken BuildShaderDataBinding(boo::MetalDataFactory::Context& ctx, boo::ObjToken vbo, boo::ObjToken uniBuf, boo::ObjToken tex); #endif #if BOO_HAS_VULKAN static void Initialize(boo::VulkanDataFactory::Context& ctx); static boo::ObjToken BuildShaderDataBinding(boo::VulkanDataFactory::Context& ctx, boo::ObjToken vbo, boo::ObjToken uniBuf, boo::ObjToken tex); #endif static void Initialize(); static void Shutdown(); static boo::ObjToken BuildShaderDataBinding(boo::IGraphicsDataFactory::Context& ctx, boo::ObjToken vbo, boo::ObjToken uniBuf, boo::ObjToken tex); static boo::ObjToken g_Pipeline; static boo::ObjToken g_VtxFmt; }; } #endif // URDE_CNESSHADER_HPP