我现在正在为我们的引擎编写 Direct3D 渲染器。
这就是问题所在:
在 OpenGL 中,我可以轻松地调用glClearColor()
clear。
在 Direct3D 中,我需要使用g_pd3dDevice
just to callClearRenderTargetView()
来清除。
我们引擎的设计是这样的:
class Renderer
{
// ...
}
class Direct3dWin32 : public Renderer
{
private ID3D10Device* g_pd3dDevice;
}
class OpenGLWin32 : public Renderer
{
// Nothing, I can call a function easily without relying on something
}
当我的ShaderManager
班级想要编译着色器时,问题就出现了。我需要使用上课的g_pd3dDevice
那个。Direct3dWin32
我的问题是,解决这个问题的最佳方法是什么?我正在考虑全局变量、单例类,或者只是在函数中传递类。