GL CHOCO ENGINE
Loading...
Searching...
No Matches
Platform System Guide(Japanese)

Platform SystemへのConcreteモジュールの追加方法ガイドライン

このページでは、エンジン開発者が安全に対応プラットフォームを追加するためのガイドラインを提供する。

なお、Platform Systemの全体像については、Platform System architectureを参照のこと。

対応プラットフォーム追加ガイドライン

  • platform_types.hplatform_type_tに追加プラットフォーム名称を追加
  • include/platform/platform_concretes/以下にconcreteモジュール用ヘッダファイルを追加
  • src/platform/platform_concretes/以下にconcreteモジュール用実装ファイルを追加し、platform_backend_tのフィールドを定義する。

platform_backend_tには上位層が下記の情報を取得できるフィールドを備えること(上位層はplatform_contextの公開APIを通じて取得する(backend構造体の直接参照はしない))。

  • マウス座標(x, y)
  • ウィンドウ幅、高さ
  • フレームバッファサイズ(幅、高さ)
  • マウスボタン押下状態
  • キーボードボタン押下状態
  • ウィンドウタイトル文字列(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 上位層から渡されたコールバック関数にイベントを渡す

*1: 将来的にはビルドオプションで指定するように変更予定