3DAPIを活用するのは簡単な作業ではありません。私はまだその目的に向かって取り組んでいますが、OpenGLサポートはほとんど欠落しているため、APIは非常に理論的です。少なくとも、Direct3D実装でまともなマイルストーンに到達し、OpenGLでまともなドキュメントを見つけて、 OpenGLバリアントを構築して、私がどこまで到達できるか、そして私の仮定のどれだけが実際に現実に準拠しているかを確認します。
それはおそらく、OpenGLの実装が既存の設計で簡単であることがわかったとき、または(より可能性が高い)OpenGL(およびMacOS + Linux)を削除することを決定したときに、そのような天才であることに本当に驚かされるときです。それと一緒に)完全に:-)
とにかく終わらないプライベートペットプロジェクトなので、私はそれを行うことができます。やる可能性がほとんどないものや、やらなければならないことがあるものについては、やらないことをお勧めします。大変な作業です。
少なくとも、あなたがしなければならないことは次のとおりです。
- APIを十分に抽象化して、パフォーマンスを低下させずに2つのレンダリングAPIの間にアプリケーションに見える違いがないようにします(したがって、常に変換することによって物事を行わないでください。いくつかの抽象データ収集と変換に100万の頂点があるのは素晴らしいことです柔軟性を最大限に高めるために毎回Direct3DまたはOpenGLに適用しますが、スライドショーを提供するだけです。したがって、私の意見では、レンダリングAPIは、頂点ではなく、モデルやシナリオなどのより高いレベルのデータで実際に機能します。および三角形)
もちろん、私にとっての大きな問題は、パフォーマンスを損なうことなくDirect3DとOpenGLを抽象化しようとしているだけでなく、その過程で3D-gfx-know-howを構築しようとしていることです。そのため、「最高の」デザインを思いつくのは難しく、多くのことをやり直す必要があります。
- シェーダーをどのように処理するかを決定します(現在、シェーダーはまったく処理せず、アプリケーションに両方の実装を提供するように要求することにしました)。私の主な希望は現在、シェーダーにあります。技術的な詳細とAPI固有のものをすべてまとめたら、2012年の3Dグラフィックスは、ほとんどの場合、データとバッファーでシェーダーを実行することになるはずです。
もちろん、私はすべて間違っている可能性があり、Direct3D / OpenGLは、マクロを使用した1:1マッピングを介して処理できるものと実際には同じですが、それほど単純ではないことは確かです。それは、固定された機能セットを備えた同じハードウェア上で引き続き機能し、HLSLとGLSLは、最終的に両方に対して単一の統一言語を作成するのに十分類似しているとさえ信じています。
それでも、私がここでとりとめのないことをすべて書いている理由は、あなたを落胆させるためです。私が知る限り(そして何を推測するか、おそらく私の名前を聞いたことがないでしょう-それが何を意味するかを自分で推測してください)、それはかなりの挑戦です。