Windows、Linux、MacOSX、Android、および IOS で実行されるクロスプラットフォームのマルチメディア アプリケーションを開発する必要があります。このアプリケーションは、オーディオ/ビデオ コンテンツを再生し、写真やグラフを表示し、おそらく単純な 2D アニメーションを表示できる必要があります。多くの検索を行った結果、この問題に対する「最も移植性の高いアプローチ」は、C++
言語OpenGL ES
として、および描画 API として使用することであると思われます。どちらもほぼすべてのデバイス/OS のペアでサポートされているため、パフォーマンス レベルは良好で、視覚的な外観も優れています。各(グループの)デバイスでほぼ同じである必要があります。
明らかに、さまざまなディスプレイ サイズと解像度を持つさまざまなデバイスで "スケーリング" するために、アプリの外観を微調整する必要があることはわかっています。また、このような異なるアーキテクチャのコードに対してまったく同じ動作を要求するのは非現実的であることも知っています。書かれたコードを最小限に抑えたいだけです (たとえば、インターフェイスの一部を最初に C++ で書き直し、次に Java で書き直すことは避けなければなりません)。
私は OpenGL ES プログラミングの専門家ではありませんが、いくつかのサンプルを見ると、既製のウィジェット (メニュー、ボタン、テキストボックス) を持つフレームワークが必要なようです。車輪の再発明はしたくありません。
これは低予算のプロジェクトなので、完全に無料でオープンソースのフレームワークが必要です。後者の要件により、何か重要なものが欠落している場合や動作がおかしい場合に、フレームワークの API を追加/変更する自由も与えられます。入力、ネットワーキング、ストレージなどを処理できる多目的フレームワーク (Qt など) を求めているわけではありません。これは、私が言及したプラットフォームにそのようなフレームワークが存在しないと強く疑っているからです。低レベルの詳細の多くを抽象化できるだけでなく、Qt のようにいくつかの UI ウィジェットを提供できる、ある種の OpenGL ラッパーが欲しいだけです。ここで提案されているように、おそらく他のクロスプラットフォームのオープンソースライブラリを使用して、入力、ネットワーク、ストレージ、センサーを個別に処理します。
私は Stackoverflow とGamedevで同様の質問をたくさん読んだことがあり、主にゲーム開発のために作成された多くのフレームワーク ( Unity、Corona SDK、LÖVE、LibGDX、Ogre、Cocos2D-x ) について聞いたことがあります。たとえば、Ogre と Cocos2D-x は私の要件の一部と一致しているように見えますが、そのうちの 1 つを使用することにした場合、ほとんどすべての UI 要素をコーディングする必要があります (それほど大きな負担ではない、と誰かが主張するかもしれません)。
いくつかの注意事項:
- アプリケーションは 2D であるため、OpenGL は過剰に思えるかもしれません。ただし、OpenGL ES が選択されたのは、移植性が非常に高く、古いハードウェアでも高いパフォーマンス レベルであるためです。
- 私は基本的に Linux C++ 開発者なので、HTML5 (まだ若すぎる) や .NET/Mono (効率が悪い) に切り替えたくないのですが、見返りとして顕著な利点が得られます。さらに、短期間でこれらの言語を現実的に習得することはできませんでした。
- この 記事の 話 に 感銘 を 受け まし た. プロジェクトのニーズに合ったオープンソースのツールとライブラリを組み合わせる、これが正しいアプローチであると私は信じています。しかし、最も重要な要素であるグラフィックス フレームワークがまだ欠けています。
- この質問を書いて、私はこの落胆する答えを見つけました。私の要件が空のセットを生成しないことを願っています。n 個の異なるプラットフォームでn 個の異なる UIを維持する余裕はありません。プラットフォームにとらわれないものが本当に必要です。
ヘルプやアドバイスをいただければ幸いです。