OSXでGUI開発を始めていますが、グラフィックを描画するシステムのVERY BASEレイヤーとは何ですか?上位レベルの抽象化(AppKit、OpenGL、CGなど)が非常に多く、時間の節約になるように見えますが、ベースレイヤーを理解するまでは使用できません(バイナリまたはアセンブリを除いて、その場合はスローインします)タオル)。
2 に答える
OSXでGUI開発を始めていますが、グラフィックを描画するシステムのVERY BASEレイヤーとは何ですか?
信じられないかもしれませんが、MacOS X Tiger以来、グラフィック全体がOpenGLに基づいてスタックしています。OpenGLの下には、GPUドライバーとベアメタルのみがあります。
上位レベルの抽象化(AppKit、OpenGL、CGなど)が非常に多く、時間の節約になるように見えますが、ベースレイヤーを理解するまでは使用できません(バイナリまたはアセンブリを除いて、その場合はスローインします)タオル)。
なぜそれらはあなたにとって使用できないのですか?追加された知識から何を得ると思いますか?使用しているレベルが低いほど、それを効率的に使用するためにどのように機能するかについて、より親密にならなければなりません。OpenGL自体はすでにかなり低レベルです。OpenGL実装は、高速から通常のメモリへのオンデマンドテクスチャデータスワッピングなど、いくつかの厄介な詳細を隠します。また、GLSLコンパイラもかなり高レベルです。ただし、OpenGLを効率的に使用するには、GPUがネイティブに動作する形式でデータを配信する必要があります。シェーダーはバイナリ形式でキャッシュでき、バッファーオブジェクトはDMA転送用のAPIを提供します。
最下層に本当に興味がある場合は、GPUの設計、つまり金属を調べる必要があります。AMDは実際に一部のGPU(Google for OpenGPU)で完全なプログラミングドキュメントを公開しました。
Quartz2Dプログラミングガイドを見るよりもはるかに悪いことをする可能性があります。これは、最も頻繁に使用するレイヤーであり、これを理解することで、さらに調査を行うための基礎が形成されます。