5

モバイル プラットフォーム用の 3D プロジェクトを開始する必要があります。まず、主な目的である骨格アニメーションの概要を説明したいと思います。解決策としては、OpenGL ES と C++ を考えていました。質問は次のとおりです。

  1. OpenGL ES はスケルタル アニメーション (スキニング シェーダーを含む) を処理するのに十分な堅牢性を備えていますか?
  2. OpenGL ES はモバイル プラットフォーム全体で広くサポートされていますか?また、最も有名なものは何ですか? (たとえば、iPad はサポートされていますか?)
  3. とにかくこれは可能ですか、つまり、十分な計算能力がありますか?
  4. SIMD 最適化のため、XNA 数学ライブラリを使用する価値はありますか?
  5. これにはC++を使用するのが良いですか? はいの場合、開発とテストにはどのコンパイラを選択する必要がありますか? さらに、モバイル プラットフォームにどのコンパイラが使用されているかわかりません。

お気づきかもしれませんが、私はまだモバイル プラットフォーム用にプログラミングしたことがありません。したがって、いくつかの一般的な推奨事項を歓迎します。

4

2 に答える 2

7

はい、OpenGL ES 2.0 は骨格アニメーションの頂点スキニングを非常にうまく処理できます。OpenGL ES 1.1 は、シェーダーなしで固定関数パイプラインを使用していたため、古い API でこれを行うのは困難ですが、2.0 ではシェーダーのサポートが追加されています。OpenGL ES 2.0 は、出荷されているすべての iOS デバイス (両方の iPad を含む iPhone 3G S 以降でサポートされています) と、ほぼすべての Android デバイス (サポートされていない非常にローエンドの携帯電話をいくつか見つけることができました) に存在します。Windows Phone 7 は OpenGL ES をサポートしていないようですが、BlackBerry はサポートしていると思います。

これに興味があるなら、フィリップ・ライドアウトの本「iPhone 3D Programming」を読むことを強くお勧めします。タイトルに「iPhone」と付いていますが、彼は本のほとんどすべてのコードに汎用 C++ を使用しているため、他のプラットフォームにもうまく翻訳され、理解しやすいはずです。彼は、「最適化」の章に、OpenGL ES 2.0 および 1.1 で頂点スキニングを実行するためのコードを含むセクションさえ持っています。このスキンのデモンストレーションを含む本のサンプル コードは、こちらから入手できます。

C++ は、Objective-C++ を介して iOS でサポートされます。この場合、Objective-Cでプラットフォーム固有の UI 要素を設定し、すべてのバックエンドとレンダリング ロジックを C++ で実行できます。繰り返しになりますが、Philip は彼の著書でこれを行っており、彼のソース コード サンプル アプリケーションで、彼がこれをどのように構築しているかを見ることができます。Imagination Technologies の担当者は、 PowerVR SDKでプラットフォームに依存しない足場もいくつかセットアップしました。一部の担当者は、モバイル デバイスで 3D レンダリングをすばやく実行できるようにするために使用しています。また、その SDK には、OpenGL から OpenGL ES への移行、およびこれらの GPU でのさまざまな効果の実行に関するいくつかの優れたドキュメントがあります。

CPU で変換を実行することで小さな頂点セットのパフォーマンスがわずかに向上するという人もいると聞いていますが (iOS では Accelerate フレームワークを使用してこれを実行できます)、大きなジオメトリでは頂点シェーダーの方がはるかに高速になると思います。私がモバイル デバイスで使用した PowerVR GPU は、特に iPad 2 に搭載された新しい GPU は、皆さんが思っているよりもはるかに強力です。

iOS デバイスをターゲットにするためには、GCC または LLVM コンパイラのいずれかを備えた Xcode IDE を使用する必要がありますが、Android にはその点でさらにいくつかのオプションがあると思います。

于 2011-05-22T14:48:50.593 に答える
2

要するに:

  1. はい、もちろん。なぜだめですか?
  2. はい、そう思います。ほかに何か?DirectX は間違いなくそうではありません。
  3. はい、そう思います。しかし、他に何をしたいかによって異なります。
  4. いいえ、少なくともSIMDのためだけではありません.モバイルプラットフォームではあまりサポートされていないと思います.XNAが最適化されているSIMD命令です。
  5. はい、なぜですか?私は主にObjective-Cを使用していると思いますが、C++用のコンパイラもあるはずです。私もモバイルの経験がないので、グーグルに聞いてください。
于 2011-05-21T14:04:54.090 に答える