![]() |
GL CHOCO ENGINE
|
このページでは、エンジン開発者が安全に対応プラットフォームを追加するためのガイドラインを提供する。
なお、Platform Systemの全体像については、Platform System architectureを参照のこと。
platform_types.hのplatform_type_tに追加プラットフォーム名称を追加include/platform/platform_concretes/以下にconcreteモジュール用ヘッダファイルを追加src/platform/platform_concretes/以下にconcreteモジュール用実装ファイルを追加し、platform_backend_tのフィールドを定義する。platform_backend_tには上位層が下記の情報を取得できるフィールドを備えること(上位層はplatform_contextの公開APIを通じて取得する(backend構造体の直接参照はしない))。
choco_string_tで保有する)concreteモジュール用実装ファイルにはPlatform Interface用仮想関数テーブルの実装として、以下の機能を実装する。
各関数の実装においては下記に留意する
platform_core/platform_err_utilsが提供するAPIを使用すること| カテゴリー | 関数名称 | 役割 |
|---|---|---|
| Lifecycle | platform_preinit | 内部状態管理構造体platform_backend_tの構造体サイズ、アライメント要件を上位層に渡す |
| Lifecycle | platform_init | プラットフォームAPIの初期化(必要であれば)とplatform_backend_tの初期化を行う |
| Lifecycle | platform_destroy | プラットフォームAPIの終了処理(必要であれば)とplatform_backend_tで保持しているデータのリソースを解放する |
| Window | platform_window_create | ウィンドウを生成する |
| Window | platform_swap_buffers | ダブルバッファリングによるバッファスワップ処理を行う |
| Event pipeline | platform_snapshot_collect | イベントを収集する |
| Event pipeline | platform_snapshot_process | 収集したイベントを処理し、上位層が処理できるデータ形式に変換する |
| Event pipeline | platform_pump_messages | 上位層から渡されたコールバック関数にイベントを渡す |
platform_context.cのplatform_vtable_get()に追加したプラットフォーム用vtableを追加platform_context.cのplatform_type_valid_check()で追加したプラットフォームを有効化するapplication_create()内のplatform_initialize()でプラットフォーム種別を指定する(*1)*1: 将来的にはビルドオプションで指定するように変更予定