答えは、ユーザー アプリケーションによって異なります。すべてがベア メタルであり、アプリケーション チームがすべてを作成している場合、Fredrik が提案するようにDirectFB APIを使用できます。GTK のフレームバッファ バージョンを使用している場合、これは特に興味深いかもしれません。
ただし、Qt を使用している場合、これは最善の方法ではありません。Qt5.0 では、QWS ( Qt 組み込みアクセラレーション) が廃止されました。Qt は、現在QPAとして知られているLightHouseに移行しています。公開するカーネル メカニズムによってグラフィックス アクセラレーションを使用するQPAプラグイン を作成すると、 Qt グラフィックスがアクセラレートされたことになります。また興味深いのは、Wayland アーキテクチャです。Wayland用のQPAプラグインがあります。Qt4.8+ および Qt5.0+ では QPAがサポートされています。Skiaは、OpenGL バックエンドをサポートする興味深いグラフィックス API でもあります。Skia は Android デバイスで使用されます。
グラフィックアクセラレーションを取得するのは簡単です。合成しますか?あなたの記憶の足跡は何ですか?APIにプログラミングする開発者の対象者は誰ですか? オブジェクト機能が必要ですか、それともプリミティブを描画するだけですか? SKIA、PegUI、WindMLと本格的なグラフィックス フレームワーク (Gtk、Qt)の間には大きな違いがあり、今日人々が期待するすべてのウィジェットとダイナミクス効果があります。OpenGL ES APIへのプログラミングは一見問題ないように見えるかもしれませんが、アプリケーションが複雑な場合は、よりリッチなグラフィックス フレームワークが必要になります。主にMats Petersson のコメントを繰り返します。
編集:Qt組み込みアクセラレーションリンクから、
- CPUブリッター - 最も遅い
- ハードウェアブリッター - たとえば、directFB。DMA などの機械語ではなく、通常はビット操作による高速メモリ移動。
- 2D ベクター - OpenVG、スティック図描画、ビット操作あり。
- 3D 描画 - OpenGL(ES) にはポリゴン塗りつぶしなどがあります。
これは、実行したいタイプの描画です。QtやGtkのようなフレームワークは、ラジオ ボタン、チェックボックス、編集ボックスなどを画面に配置するための API を提供します。また、テキストのスタイル設定と、キーボード、マウス、タッチ スクリーン、およびその他の要素との対話も行います。フレームワークは、描画エンジンを使用してオブジェクトを画面に配置します。
グラフィックス アクセラレーションは、ブレゼンハム アルゴリズムのようなアルゴリズムを別の CPU または専用ハードウェアに配置するだけです。選択したフレームワークが3Dオブジェクトをサポートしていない場合、そのフレームワークは OpenGL サポートを必要とする可能性は低く、パフォーマンスが向上しない可能性があります。
パズルの最後のピースは、ウィンドウ マネージャーです。多くの組み込みデバイスはこれを必要としません。ただし、多くのハンドセットは合成とアルファ値を使用して透明なウィンドウを作成し、複数のアプリを同時に表示できるようにしています。これは、グラフィックス API にも影響を与える可能性があります。
さらに、X を使用しない DRIは、これが良いことではない理由をいくつか示しています。単一のユーザー タスクの場合、DRIは必要ありません。
以下は、 Wayland のブログに掲載されているWaylandグラフィックス スタックの図です。