qTやwxwidgetsなどのツールキットと同様に、APIデザイナーは、まったく異なるシステムコールを呼び出す場合でも、同じAPIをどのように提供しますか?たとえば、Windows OSでは、GDIの多くの機能をいじくり回す必要があります。Linuxでは、XLibの多くの機能や、ディストリビューションがその上にある他のレイヤーをいじくり回す必要があります。では、これらすべての機能を統合できるwidgitキットをどのように設計できますか?つまり、CreateWindow()は、どのプラットフォームでもウィンドンを作成しますか?私はこれがどのように行われるのか理解していません。
質問する
128 次
1 に答える
1
XlibまたはGDIを使用する代わりに、より普遍的なものを使用することができます。たとえば、どこでもサポートされているOpenGLを使用できます。それがBlenderのUIが行うことだと思います。
一部のツールキットは、サポートするプラットフォームごとに何らかのバックエンドを使用するように変更できます。これは基本的にQtが行うことです。Mac OS Xでは、QtアプリはCocoaをバックエンドとして使用します。Qt for OS Xは、そのOS専用に作成されました。ただし、他のプラットフォームには他のQt実装があるため、Qtが複数のプラットフォームで機能するのはそのためです。SWT for Javaは同じように機能します(OSのネイティブツールキットをバックエンドとして使用します)。
他のツールキットは、ある種の高レベルのレイヤーを使用してレンダリングできます。たとえば、Swing forJavaは純粋にJavaAPIを使用してレンダリングされ、どのプラットフォームにもまったく関連付けられていません。
于 2012-10-09T10:45:51.030 に答える