FloatSoda.Engine
FloatSoda.Engine 名前空間の公開型です。
GLFW の可視ウィンドウへレイヤーツリーを表示するデスクトップ向けエンジンウィンドウです。 描画結果を既定のフレームバッファへ転送し、ウィンドウ固有のポインター入力を提供します。
エンジンの開始と終了をまとめるためのシェルです。
スリープとスピン待機を組み合わせ、フレームループを指定した頻度に制限します。
GLFW ウィンドウのマウス入力を RawPointerEvent に変換する入力源。 イベントは GLFW をポンプしているスレッド(レンダースレッド)で発火します。
GLFW の OpenGL コンテキストと、描画先となる Skia サーフェスおよび OpenGL テクスチャを管理します。 OpenGL リソースを所有するレンダースレッド上で作成、使用、破棄してください。
I/Oリソースに関するスレッド所属処理を、専用の単一バックグラウンドスレッドで順番に実行します。
OpenVR オーバーレイのマウスイベント(ダッシュボードのレーザーポインタ)を
RawPointerEvent に変換する入力源。
事前に SetOverlayInputMethod(Mouse) とピクセルサイズの SetOverlayMouseScale が
設定されている前提です。
OpenVR の仕様上マウス座標は原点左下だが、本プロジェクトの OpenGL テクスチャ
(ボトムアップ格納)では SteamVR の表示時 v 軸反転と相殺され原点左上で届くことを
実測で確認済みのため、座標はそのまま使用します(y 反転すると上下鏡映になる)。
イベントは PollEvents を呼んだスレッドで発火します。
SteamVRオーバーレイを描画先とするIEngineWindowの実装です。
一定のフレーム間隔でライフサイクルフックを呼び出す専用バックグラウンドスレッドを管理します。
GLFWイベントの処理とウィンドウへの描画を、GLFW/OpenGLコンテキストを所有するレンダースレッドで実行します。
レイヤーツリーを GLView の Skia サーフェスへ描画します。
インターフェイス
Section titled “インターフェイス”専用スレッドの開始、停止、およびタスク投入を統一する契約を定義します。