私は何年ものコンピュータを使ってプログラミングした後、実際に画面に描くソフトウェアのスタックはほとんど私にとって謎です。オペレーティングシステムは画面上にウィンドウをどのように描画しますか?
私はいくつかの組み込みLCD GUIアプリケーションに取り組んできましたが、これは単純なスタックについての手掛かりを提供しますが、Windowsオペレーティングシステムのようなものの全体像はまだ暗いです。
Iが知っているから:
- 最低レベル0は、画面上の特定の色またはグレースケール陰影のピクセルをオンにするデジタルインタフェースを提供し、電子ハードウェア(集積回路)です。インターフェイスはデータシートに記載されていますので、デジタルラインをどのように切り替えてピクセルを望み通りに変えるかを知っています。
- 次のレベル1はハードウェアドライバです。これは通常、ハードウェアを共通のインタフェースに抽象化します。 SetPixel()などのようなもの
次のレベル2は、2D/3Dグラフィックスライブラリです(そのうちのウィジェット/シングルスクリーンエクスペリエンスは制限されています)。下のレベルは、画面上のピクセルを表すバッファまたはメモリの範囲を提供するように見えます。グラフィックスライブラリはこれを抽象化するので、DrawText( "text"、10、10、 "font")のような関数を呼び出すことができ、適切な方法でピクセルを設定します。
次のレベルはOSの魔法です。ウィンドウ/ボタン/フォーム/ WPF/etcはメモリに作成され、適切なドライバにルーティングされ、画面の特定の部分にも導かれます。
しかし、Windowsのようなものはどのように機能しますか?
- 私はGPUがレベル0とレベル1の間に収まると仮定します。GPUはディスプレイ上のピクセルを直接駆動し、レベル1のドライバはGPUドライバです。 GPUが提供する追加機能を有効にするために利用可能な機能がさらにあります。 (OSは3D空間内の三角形の配列を通過し、GPUはこれを3Dパースペクティブビューで処理し、それを画面上にチャッキングしますか?)
私にとって最大の謎あなたが物事の窓の一部に入るときです。スケッチアップ、ビジュアルスタジオ、FPSゲームがすべて同時に実行され、それらの間で切り替えることができます。場合によっては、画面上にタイルを張ったり、複数の画面にまたがったりすることもできます。これはどのように追跡されレンダリングされますか?これらのそれぞれはバックグラウンドで実行されなければならず、OSは画面のどの部分にどのグラフィックス・パイプを接続しなければならないかを述べなければならない。 Windowsは画面のこの部分が3Dゲームであり、この部分は2D WPFアプリケーションなどとはどのように言いますか?
これ以外にも、DirectXはあるアプリケーションで使用し、Qtを別のアプリケーションで使用しています。同じ技術を使っている複数のゲームやアプリを実行していることを覚えています。私はあなたがアプリケーション - >グラフィックスライブラリ(DirectX、WPFなど) - >フレームバッファ - > Windowsディレクター(画面のどこに、このフレームバッファをスケーリングする必要がありますか?
最終的には、どのピクセルをどの色にするべきかをトグルビットで表していますが、そこに到達する途中で多くのトグルビットが発生します。
Visual Studioを起動して基本的なWPFアプリケーションを作成すると、画面にボタンをドロップして開始するとバックグラウンドで何が起こっているのですか?私はVSデザイナーをドロップしてXAMLで作成し、組み込みシステムではピクセル単位で手動で描画することもありましたが、このサンドイッチのいわゆる肉です。
私はAndroid、iOS、Windows、Linuxを使用していますが、一般的な機能と思われますが、私が上に概説したものの説明を見たことも聞いたこともありません。
これはどのように機能するのか誰にでも分かりますか? x86のを仮定
ありがとうございましたglauxosdever!私が知っていることから、これは上記の私の説明のレベル0 /レベル1のように聞こえる。しかし、これがより高いレベルをどのように見えるかまだ分かりません。 LinuxやWindows自体の「ウィンドウマネージャー」まで理解するのはかなり簡単です。非ウィンドウOSは単純だと思われますが、グラフィックスカードの有無にかかわらずウィンドウマネージャーを起動すると、ボンネットの下で何が起こるかについての情報を見つけることができません。内部的には、WindowsはグラフィックスAPIを参照するだけで、グラフィックスがグラフィックコントローラのハードウェアにパイプされているかどうかを、基本となるドライバシステムで処理しますか? – Dru
通常、ウィンドウマネージャは下位のグラフィックスAPIを呼び出します。下位のグラフィックスAPIはグラフィックスドライバを呼び出します(カーネルが呼び出してから呼び出されます)。かっこ内のテキストが関連するかどうかは、カーネルがモノリシックなものか、またはマイクロカーネルのものかによって異なります。 – glauxosdever