私はこの領域の周りにたくさんの質問を見てきましたが、この正確な質問ではないので、これが重複している場合はお詫びします。
小さな3Dゲームを作っています。正直なところ、それはほんの少しの趣味のプロジェクトであり、実際のゲームにはならない可能性があります。素敵なグラフィックデモを作成し、3DレンダリングとC ++デザインについて学びたいと思います。
私の意図は、レンダリングにdirect3d9を使用することです。これについては少し経験があり、私の要件を満たしているようです。ただし、プログラマーとして1つのことを学んだ場合は、「このコンポーネントが別の実装に置き換えられる可能性があると考えられる理由はありますか」と答えます。答えが「はい」の場合、適切な抽象化とそのコンポーネントへのインターフェイスを設計する必要があります。 。そのため、d3d9を実装するつもりでも、d3d11、openglに実装できる3dインターフェイスを設計する必要があります...
私の質問は、これを行うのに最適なレベルは何ですか?作成して後で描画できるインターフェースだと思います
- 頂点バッファーとインデックスバッファー
- テクスチャー
- 頂点とピクセルの「シェーダー」
- 描画状態のいくつかの表現(ブレンドモードなど...)
言い換えれば、たとえばアニメーションモデルを描画するためのコードが、抽象頂点バッファーなどを取得するためにインターフェイスを使用するかなり低レベルのインターフェイスです。低すぎるので、必要なすべての機能を抽象化できないのではないかと心配しています。
別の方法は、インターフェイスがオブジェクト、アニメーション、風景などを描画し、各システムに実装できる、より高いレベルでこれを行うことです。これはもっと手間がかかっているように見えますが、私はもっと柔軟だと思います。
だから、それが私の質問です。描画システムを抽象化するとき、どのレベルのインターフェイスが最適ですか。