我有3个项目:
GameEngine.Rendering 项目的一个界面如下所示:
public interface IRenderContext
{
void SwapBuffers();
}
此接口的OpenGL 4.0实现需要一个IWindowInfo
接口作为要创建的参数,而Direct3D 11实现则不需要。 Direct3D 11的实现需要窗口的IntPtr
句柄。
在我想轻松轻松地创建渲染上下文之前,我认为这不会成为一个大问题:
var renderContext = CreateRenderContext(DriverType.Direct3D11, windowHandle);
我想到的唯一解决方案是在 GameEngine.Rendering 项目中创建类似的结构,该结构实现IWindowInfo
:
public struct RenderContextInfo : IWindowInfo
{
public IntPtr OutputHandle { get; set; }
}
但是,这并不是一个很好的设计选择,因为我宁愿 GameEngine.Rendering 项目对任何实现一无所知。
我只是想知道如何解决这个问题?有什么花哨的技巧可以让我实例化IWindowInfo
接口吗?