APIの「ラッパー」部分から実際に必要なものを識別することから始めます。通常、非常にシンプルです。基本的なリソース(バッファー、シェーダー、テクスチャ、パイプライン状態)と、それらのリソースを使用していくつかの描画呼び出しを送信してフレームを構築する方法が必要です。
任意の高レベルのロジックを保つようにしてください外の APIのラッパー部分。APIのこの部分に巧妙なシーンカリングテクニックを実装する場合、すべてのバックエンド実装でそのロジックを複製するためのフックになりました。それは多くの余分な労力ですので、単純にしてください。シーン管理は、ラッパー自体の一部ではなく、ラッパーを使用するAPIの上位レベルの一部である必要があります。
サポートするターゲットを選択し、それらを理解します。「すべて」のきちんとしたラッパーを書くのは難しく、おそらく必要はありません(おそらく、Philippの回答に記載されているように、単一のラッパーを記述する必要はありません)。ラップするAPIがわからない場合、適切なラッパーを作成することはほとんど不可能です。
APIの状態を定期的に評価します。一般的に、基礎となるラップされたAPIよりも小さな表面積を持つ必要があります。すべてのD3D構造体またはすべてのOpenGL関数呼び出しに対して1対1のラッパータイプを作成していることに気付いた場合、おそらくコースから外れているでしょう。
以前に行った作業を見てください。SokolとBGFXは、あなたに役立つかもしれないレベルの不可知論を提供するAPIであり、比較的簡単に理解できます(特に前者)。