Androidグラフィックスの内部
-
14-10-2019 - |
質問
Androidグラフィックシステムがどのように機能するかについて明確な説明を見つけていません。具体的には、DirectFBまたはX11などに基づいているディスプレイサーバーを使用していますか。
私がなんとかして一緒につなぐことができたものから、Androidは Linuxフレームバッファー. 。どのようなディスプレイサーバーや ウィンドウマネージャー AndroidはFrameBufferへのマルチプレックスアクセスに使用するため、どんなポインターも大歓迎です!
最後に、私が理解していることから、ARM命令セットはOpenGLを加速するための命令を提供しますが、これがディスプレイサーバーと統合する方法は明確ではありません。クライアントアプリケーションは、クライアントが直接書き込む共有メモリバッファーを交渉しますか?
プラットフォームアクセラレータのOpenGLライブラリはオープンソースですか?私はそれらが閉じたソースのバイナリであることを示唆するいくつかの参照を見つけました。繰り返しますが、どんなポインターも感謝しています。
解決
Androidグラフィックスには、SurfaceFlingerとSkiaの2つのコアピースがあります。 SurfaceFlingerはAndroidのCompositorであり、ウィンドウマネージャーがウィンドウを作成および表示するために使用します(実際にはサーフェスと呼ばれます。)SurfaceFlingerは現在OpenGL ES 1.xの上に実装されており、利用可能な場合は他のハードウェアアクセラレーション技術を使用できます(MDP、2DブリッターでT-Mobile G1、またはXoomのハードウェアオーバーレイ。)
各アプリケーションは、主にSkiaを使用してWindows(またはサーフェス)にレンダリングします。 SkiaはAndroidの2Dグラフィックライブラリです。 OpenGL ES 1.xと2.0を使用して、表面にレンダリングすることもできます。
Androidは、DirectFBまたはX11、またはその他の既存のLinuxソリューションを使用しません。
他のヒント
Androidグラフィックスに関する簡単な紹介プレゼンテーションがあります。 http://www.slideshare.net/jserv/design-anceptss-of-android-graphics
ロマンの男は間違いなく正しかった。しかし、Android 3.0以降は状況が変わりました。 Skiaはもはやそれほど重要ではありません。ほとんどの2D図面は、OpenGL、別名HWUIコンポーネントを使用して加速されます。
Androidグラフィックスに関するすべての情報は、こちらにあります。