導入

Fabric Core C/C++ API, ――以下この文書では CAPI と呼称―― は Fabricプラットフォームのアプリケーションスタックにとって最低レイヤの API です。 CAPIは Fabric Core Python バインディングへ、ネイティブ言語レイヤを提供するためにあります。ただし必要があれば Fabricプラットフォームアプリから CAPI へと直接やり取りすることもできます。

../_images/CAPI-Stack.png

CAPI とのやりとりが適した使用箇所例:

  • Fabric プラットフォームアプリ ⇔ Python APIを欠いたサードパーティ製アプリあるいはエクステンションAPI でのやりとり
  • 事前ビルドされた Fabric プラットフォームコンテンツ ⇔ ゲームエンジンなどのようなランタイムエンジン でのやりとり
  • Python インタプリタの実行オーバーヘッドを無視できないようなアプリ

CAPI は <C言語、C++言語> と <Fabric Core> との直接のインタフェースです。CAPIにより C/C++言語のプログラム環境へと、Fabric Core を完全に公開しています。CAPIを用いることで例えば、Fabric Core dependency graph を作成し、ノードグループへとデータを流し込み、KLオペレータを起動させ、結果をビューポートへと描画、さらにはさらなる作業のために実行結果を保存することさえできます。Fabric Core の機能全てが利用可能です。Fabric プラットフォームの強力なエクステンション機構も含みます。このガイドでは、Fabric Coreの基礎概念を前提とします。Fabricプラットフォームと Fabric Core についての文書の全容 Fabric Engine Unofficial Documentation 日本語版 から確認できます。

一つのAPI, 二つのインタフェース

CAPI はピュア C なAPI ――C++インタフェースをインライン化し、C++アプリからも利用容易にしつつ―― として実装されています。つまりリンクにまつわる問題を最小限にとどめています。Fabric プラットフォームのサポートする環境上での、Cのリンクインタフェースは、C++のそれよりもより良くコントロールされているためです。C++ インタフェースはしたがって C++ プログラマの利便性のために存在します。もちろんこれはプログラマ皆にとって偉大な利便性です。可能な限りこちらを使いましょう。C,C++どちらのインタフェースも、同じ共有ライブラリ(DLL)にリンクします。

このガイド内で API について言及した場合、C と C++ 両方のバリエーションが常に存在します。この2つの間には、いくつか重要な違いがあります。以下に記述します。

作業進行中

この文書は現在、まだ作業途上にあります。いくつもセクションが抜けています。ですがコード掘り下げたいのであれば、CAPIをためしてみたり、サンプルをコピーしたりすることは可能です。 CAPIビルド環境 では、CAPIを使用しCAPIヘッダがどこにあるかなどの、サンプルコードのビルド方法を解説します。このサンプルは、CAPIアプリケーションを作成する際の土台となり、CAPIを使って何ができるのかについての確認にもなるでしょう。CAPI ヘッダファイルは $FABRIC_DIR/include/FabricEngine/FabricCore.h から。

ここからさきは

このガイドの残りは以下:

  • CAPIビルド環境 :はじめに CAPI アプリケーションのビルド環境の構築からです。CAPIサンプルがどこにあり、どうやってビルドするかについてもここです。CAPI コードを実際に試してみるのに最適でしょう。
  • C言語インタフェース , C++言語インタフェース :上述の CAPIの <C と C++> 二つのインタフェースです。この二つについての一般的な扱いについて記述します。
  • クライアントとアプリケーションの生存サイクル Fabric Core の client :アプリケーション(もしくはプラグイン)が CAPIの使用前には、まずCAPIの初期化と Fabric Core の CAPI client の作成を行う必要があります。 クライアントとアプリケーションの生存サイクル では CAPI アプリケーションのライフサイクルと client の作成と使用方法について記述します。
  • (未定) よいアプリケーションプログラミングテクニックというものは、つねに実行時のコードの結果をチェックし起こりうるエラーについて備えるものです。CAPIを使用した例外ハンドルについて詳述します exceptions
  • (未定) CAPI での variant と呼ばれる基本型について取り扱います。ヘテロジニアスなデータを、Fabric Core 外へと受け渡す際によく用います。 variants に詳述します。
  • (未定) CAPIPG.registered-types で registered types システムへの CAPIを用いたインタフェースについて説明します。
  • (未定) Fabric Core への主なインタフェースは、Fabric Core dependency graph によって扱われる個々のオブジェクを通して成り立ちます。 dg-objects ではCAPIの dependency graph API について詳述します。