現在、エンジン用の Direct3D レンダラーを作成しています。
ここに問題があります
。OpenGL では、簡単glClearColor()
に clear を呼び出すことができます。
Direct3D では、clearg_pd3dDevice
を呼び出すためだけに使用する必要があります。ClearRenderTargetView()
エンジンの設計は次のようになります。
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
。
私の質問は、この問題を解決するための最良のアプローチは何ですか? グローバル変数、シングルトン クラス、または単にクラスを関数に渡すことを考えています。