html5.h のC++ APIは、ネイティブコードからHTML5イベントと対話するためのEmscripten低レベルグルーバインディングを定義しています。
ヒント
C++ APIは、同等のHTML5 JavaScript API と密接にマッピングされています。以下にリストされているHTML5仕様は、このドキュメントで提供されている情報に加えて、詳細な参照情報を提供しています。
さらに、テスト/サンプルコード を確認して、コードの使用方法を確認できます。
html5.h によってマッピングされるAPIのHTML5仕様には、次のものが含まれます。
スロー.
目次
これらのAPIのほとんどはイベントベースのアーキテクチャを使用しています。機能は、イベントが発生したときに呼び出されるコールバック関数を登録することでアクセスされます。
注記
ゲームパッドAPIは現在例外であり、ポーリングAPIのみが利用可能です。一部のAPIでは、イベントベースとポーリングベースの両方のモデルが公開されています。
登録関数の一般的な形式は次のとおりです(一部のメソッドでは、さまざまなパラメータが省略される場合があります)。
EMSCRIPTEN_RESULT emscripten_set_some_callback( const char *target, // ID of the target HTML element. void *userData, // User-defined data to be passed to the callback. bool useCapture, // Whether or not to use capture. em_someevent_callback_func callback // Callback function. );
target
パラメータは、コールバック登録を適用するHTML要素のIDです。このフィールドには、次の特別な意味があります。
EMSCRIPTEN_EVENT_TARGET_WINDOW
:イベントリスナはJavaScriptのwindow
オブジェクトに適用されます。
EMSCRIPTEN_EVENT_TARGET_DOCUMENT
:イベントリスナはJavaScriptのdocument
オブジェクトに適用されます。
EMSCRIPTEN_EVENT_TARGET_SCREEN
:イベントリスナはJavaScriptのwindow.screen
オブジェクトに適用されます。
0
またはNULL
:オプション-sDISABLE_DEPRECATED_FIND_EVENT_TARGET_BEHAVIOR
(デフォルト)でビルドする場合、NULL
は無効な要素を示します。レガシーオプション-sDISABLE_DEPRECATED_FIND_EVENT_TARGET_BEHAVIOR=0
(推奨されません)でビルドする場合、イベントタイプに基づいてデフォルトの要素が自動的に選択されます。
#canvas
:レガシーオプション-sDISABLE_DEPRECATED_FIND_EVENT_TARGET_BEHAVIOR=0
(推奨されません)でビルドする場合、イベントリスナはEmscriptenのデフォルトのWebGLキャンバス要素に適用されます。オプション-sDISABLE_DEPRECATED_FIND_EVENT_TARGET_BEHAVIOR
(デフォルト)でビルドする場合、#canvas
はCSSクエリセレクタとして解釈されます。「CSS ID 'canvas'を持つ最初の要素」。その他の文字列:渡された文字列を使用してDOMに対するCSSセレクタの検索が行われ、イベントリスナはクエリに一致する最初の要素に適用されます。
上記のものが不十分な場合は、次のようなJavaScriptを使用してカスタムマッピングを追加できます。
specialHTMLTargets["!canvas"] = Module.canvas;
これにより、!canvas
がModule.canvasに保持されているキャンバスにマッピングされます。(そのJavaScriptは、登録関数を呼び出す前に発生するEM_JS
またはEM_ASM
ブロックに記述できます)。
userData
パラメータは、登録されたイベントコールバックに(変更せずに)渡されるユーザー定義の値です。これは、たとえば、C++クラスへのポインタを渡したり、C APIをクリーンなオブジェクト指向の方法でカプセル化するために使用できます。
useCapture
パラメータは、EventTarget.addEventListenerのuseCapture
にマッピングされます。これは、キャプチャを開始するかどうかを示します。true
の場合、コールバックはDOMキャプチャフェーズとターゲットフェーズでのみ呼び出されます。false
の場合、コールバックはターゲットフェーズとバブリングフェーズでトリガーされます。DOMレベル3イベントで、より詳細な説明を参照してください。
ほとんどの関数は、EMSCRIPTEN_RESULT
型を使用して結果を返します。0と正の値は成功を示します。負の値は失敗を示します。どの関数も、JavaScriptまたはC++例外をスローすることによって失敗または中断することはありません。特定のブラウザが指定された機能をサポートしていない場合、コールバックが登録された時点でEMSCRIPTEN_RESULT_NOT_SUPPORTED
値が返されます。
イベントが発生すると、コールバックは関連するイベント「タイプ」(例:EMSCRIPTEN_EVENT_CLICK
)、発生したイベントの詳細を含むstruct
、および登録関数に最初に渡されたuserData
を使用して呼び出されます。コールバック関数の一般的な形式は次のとおりです。
typedef bool (*em_someevent_callback_func) // Callback function. Return true if event is "consumed".
(
int eventType, // The type of event.
const EmscriptenSomeEvent *someEvent, // Information about the event.
void *userData // User data passed from the registration function.
);
bool
を返すコールバックハンドラは、ハンドラがイベントを消費したことを示すためにtrue
を指定できます(これにより、.preventDefault();
メンバーを呼び出すことで、そのイベントのデフォルトのアクションが抑制されます)。false
を返すことは、イベントが消費されなかったことを示します—デフォルトのブラウザイベントアクションが実行され、イベントは通常どおり通過/バブリングアップが許可されます。
コールバックにnull
ポインタを使用して登録関数を呼び出すと、指定されたtarget
要素からそのコールバックの登録解除が行われます。すべてのイベントハンドラは、atexit
ハンドラパス中にCのexit()
関数が呼び出されたときにも自動的に登録解除されます。 emscripten_set_main_loop()
関数を使用するか、Module.noExitRuntime = true;
を設定して、main()
を離れることがすぐにexit()
を引き起こし、イベントハンドラをクリーンアップしないようにしてください。
いくつかの関数、例えば emscripten_request_pointerlock()
や emscripten_request_fullscreen()
は、Webセキュリティの影響を受けます。
これらの関数はどこからでも呼び出すことができますが、実際の「リクエスト」は、ユーザーが生成したイベント(例えば、キー、マウス、またはタッチの押下/解放)のハンドラ内でのみ発生させることができます。
コードを移植する際に、これらの関数が適切なイベントハンドラ内で呼び出されていることを確実にするのは難しい場合があります(これにより、リクエストが即座に発生します)。便宜上、開発者はdeferUntilInEventHandler=true
を設定して、ユーザーが次にキーボードまたはマウスボタンを押すまで、安全でないリクエストを自動的に遅らせることができます。これにより移植は簡素化されますが、多くの場合、ユーザーエクスペリエンスが悪化します。例えば、ポインタを隠したり、フルスクリーンに切り替えたりするには、キャンバスを一度クリックする必要があります。
可能な限り、これらの関数は適切なイベントハンドラ内でのみ呼び出す必要があります。deferUntilInEventHandler=false
を設定すると、セキュリティ上の制限によりリクエストが拒否された場合、関数はエラーで中断されます。これは、ユーザーが生成したイベントのハンドラ以外で関数が呼び出されているインスタンスを発見するための有用なメカニズムです。
HTML5テストコードは、このAPIの使用方法を示しています。
EM_UTF8
¶これは、UTF8文字列のエンスクリプテン型です(char
にマップされます)。これは、ノード名、要素IDなどに使われます。
このAPIのほとんどの関数は、EMSCRIPTEN_RESULT
型の結果を返します。どの関数も、JavaScriptまたはC++例外をスローすることによって失敗または中断することはありません。特定のブラウザが指定された機能をサポートしていない場合、コールバックが登録された時点でEMSCRIPTEN_RESULT_NOT_SUPPORTED
が返されます。
EMSCRIPTEN_RESULT
¶この型は、このAPIのほとんどの関数の結果を返すために使用されます。0および正の値は成功を示し、負の値は失敗を示します。可能な値を以下に示します。
EMSCRIPTEN_RESULT_SUCCESS
¶操作が成功しました。
EMSCRIPTEN_RESULT_DEFERRED
¶リクエストされた操作は、Webセキュリティ上の理由から現在完了できません。次のイベントハンドラで完了するために延期されました。
EMSCRIPTEN_RESULT_NOT_SUPPORTED
¶指定された操作は、このブラウザまたはターゲット要素ではサポートされていません。操作がサポートされていない場合、コールバックが登録された時点でこの値が返されます。
EMSCRIPTEN_RESULT_FAILED_NOT_DEFERRED
¶リクエストされた操作は、Webセキュリティ上の理由から現在完了できませんでした。ユーザーが操作の延期を要求しなかったため失敗しました。
EMSCRIPTEN_RESULT_INVALID_TARGET
¶指定されたターゲット要素が無効であるため、操作は失敗しました。
EMSCRIPTEN_RESULT_UNKNOWN_TARGET
¶指定されたターゲット要素が見つからなかったため、操作は失敗しました。
EMSCRIPTEN_RESULT_INVALID_PARAM
¶関数が無効なパラメータを渡されたため、操作は失敗しました。
EMSCRIPTEN_RESULT_FAILED
¶一般的な失敗結果メッセージ。特定の結果が利用できない場合に返されます。
EMSCRIPTEN_RESULT_NO_DATA
¶現在データが利用できないため、操作は失敗しました。
EmscriptenKeyboardEvent
¶キーボードイベント (keypress
、keydown
、keyup
)で渡されるイベント構造体。
執筆時点(2014年3月)ではDOMレベル3イベント仕様が非常に新しいので、仕様内のさまざまなフィールドに対する均一なサポートはまだ変動しています。複数のブラウザで結果を確認してください。マージされていないプルリクエスト#2222で、従来のキーイベントの解釈方法の例を参照してください。
timestamp
¶データが記録された絶対的なウォールクロック時間(ミリ秒)。
code
¶押されている物理キーを識別する文字列。この値は現在のキーボードレイアウトまたは修飾子の状態の影響を受けません。そのため、特定のキーは常に同じ値を返します。
最大サイズ32 char
(つまり、EM_UTF8 code[32]
)。
location
¶キーボード上のキーの位置を示します。DOM_KEY_LOCATION
値のいずれか。
repeat
¶このキーボードイベントが繰り返し押下を表すかどうかを指定します。
locale
¶構成されたキーボードロケールを示すロケール文字列。ブラウザまたはデバイスがキーボードのロケールを認識しない場合、これは空文字列になる可能性があります。
最大サイズ32 char(つまり、EM_UTF8 locale[32]
)。
charValue
¶以下のフィールドは、DOMキーイベント仕様の以前のバージョンからの値です。キーの文字表現を参照してください。これはドキュメントのchar
フィールドですが、C言語の予約語と重複を避けるためcharValue
に名前変更されました。
最大サイズ32 char
(つまり、EM_UTF8 charValue[32]
)。
警告
この属性は、DOM Level 3 イベントから削除されました。
charCode
¶キーのUnicode参照番号。この属性は、keypressイベントでのみ使用されます。char
属性に複数の文字が含まれるキーの場合、これはその属性の最初の文字のUnicode値です。
警告
この属性は非推奨です。可能であれば、代わりにkey
フィールドを使用してください。
keyCode
¶押されたキーの変更されていない値を識別する、システムと実装に依存する数値コード。
警告
この属性は非推奨です。可能であれば、代わりにkey
フィールドを使用してください。
which
¶押されたキーの変更されていない値を識別する、システムと実装に依存する数値コード。通常はkeyCode
と同じです。
警告
この属性は非推奨です。可能であれば、代わりにkey
フィールドを使用してください。ただし、このフィールドは非推奨である一方で、which
のクロスブラウザサポートは他のフィールドよりも優れている可能性があるため、実験をお勧めします。詳細については、https://github.com/emscripten-core/emscripten/issues/2817を参照してください。
em_key_callback_func
¶keypress callback functions
の関数ポインタ。以下のように定義されています。
typedef bool (*em_key_callback_func)(int eventType, const EmscriptenKeyboardEvent *keyEvent, void *userData);
eventType (int) – key event
の種類。
keyEvent (const EmscriptenKeyboardEvent*) – 発生したキーイベントに関する情報。
userData (void*) – 登録関数に最初に渡されたuserData
。
true
(ゼロ以外)は、イベントがコールバックハンドラによって消費されたことを示します。
bool
emscripten_set_keypress_callback
(const char *target, void *userData, bool useCapture, em_key_callback_func callback)¶emscripten_set_keydown_callback
(const char *target, void *userData, bool useCapture, em_key_callback_func callback)¶emscripten_set_keyup_callback
(const char *target, void *userData, bool useCapture, em_key_callback_func callback)¶ブラウザから生成されたキーボード入力イベントを受信するためのコールバック関数を登録します。
target (const char*) – ターゲットHTML要素ID。
userData (void*) – コールバックに渡されるユーザー定義データ(APIに対して不透明)。
useCapture (bool) – キャプチャを使用するにはtrue
を設定します。
callback (em_key_callback_func) – コールバック関数。この登録関数から渡されたイベントの種類、イベントに関する情報、ユーザーデータを使用して関数が呼び出されます。イベントが消費された場合は、コールバックはtrue
を返す必要があります。
EMSCRIPTEN_RESULT_SUCCESS
、またはその他の結果値のいずれか。
注記
イベントを受信するには、要素はフォーカス可能である必要があります。https://github.com/emscripten-core/emscripten/pull/7484#issuecomment-437887001を参照してください。
EmscriptenMouseEvent
¶マウスイベントで渡されるイベント構造体:click、mousedown、mouseup、dblclick、mousemove、mouseenter、mouseleave。
timestamp
¶データが記録された絶対的なウォールクロック時間(ミリ秒)。
状態が変化したポインタデバイスボタンを識別します(MouseEvent.buttonを参照)。
0:左ボタン
1:中央ボタン(存在する場合)
2:右ボタン
イベント発生時に押されていたマウスボタンの組み合わせを示すビットマスク。
movementX
¶long movementY;
ポインタロックがアクティブな場合、これらの2つの追加フィールドは、最後のイベント以降の相対的なマウスの移動量を示します。
targetX
¶targetY
¶これらのフィールドは、入力イベントを受信するターゲットDOM要素の座標空間にマッピングされたマウス座標を示します(Emscripten固有の拡張機能。座標は最も近い整数に切り捨てられます)。
canvasX
¶canvasY
¶これらのフィールドは、Emscriptenキャンバスクライアント領域にマッピングされたマウス座標を示します(Emscripten固有の拡張機能。座標は最も近い整数に切り捨てられます)。
padding
¶内部用で、無視できます。
注記
実装者のみ:WheelEvent
が8バイトに確実にアラインメントされるように、この構造体を8バイトの倍数にパディングします。
em_mouse_callback_func
¶mouse event callback functions
の関数ポインタ。以下のように定義されています。
typedef bool (*em_mouse_callback_func)(int eventType, const EmscriptenMouseEvent *mouseEvent, void *userData);
eventType (int) – mouse event
の種類。
mouseEvent (const EmscriptenMouseEvent*) – 発生したマウスイベントに関する情報。
userData (void*) – 登録関数に最初に渡されたuserData
。
true
(ゼロ以外)は、イベントがコールバックハンドラによって消費されたことを示します。
bool
EMSCRIPTEN_RESULT emscripten_set_click_callback(const char *target, void *userData, bool useCapture, em_mouse_callback_func callback)
¶EMSCRIPTEN_RESULT emscripten_set_mousedown_callback(const char *target, void *userData, bool useCapture, em_mouse_callback_func callback)
¶EMSCRIPTEN_RESULT emscripten_set_mouseup_callback(const char *target, void *userData, bool useCapture, em_mouse_callback_func callback)
¶EMSCRIPTEN_RESULT emscripten_set_dblclick_callback(const char *target, void *userData, bool useCapture, em_mouse_callback_func callback)
¶EMSCRIPTEN_RESULT emscripten_set_mousemove_callback(const char *target, void *userData, bool useCapture, em_mouse_callback_func callback)
¶EMSCRIPTEN_RESULT emscripten_set_mouseenter_callback(const char *target, void *userData, bool useCapture, em_mouse_callback_func callback)
¶EMSCRIPTEN_RESULT emscripten_set_mouseleave_callback(const char *target, void *userData, bool useCapture, em_mouse_callback_func callback)
¶ブラウザから生成されたマウス入力イベントを受け取るためのコールバック関数を登録します。マウス入力イベント
target (const char*) – ターゲットHTML要素ID。
userData (void*) – コールバックに渡されるユーザー定義データ(APIに対して不透明)。
useCapture (bool) – キャプチャを使用するにはtrue
を設定します。
callback (em_mouse_callback_func
) – コールバック関数。この登録関数から渡されたイベントの種類、イベントに関する情報、ユーザーデータを使用して関数が呼び出されます。イベントが消費された場合は、コールバックはtrue
を返す必要があります。
EMSCRIPTEN_RESULT_SUCCESS
、またはその他の結果値のいずれか。
EMSCRIPTEN_RESULT emscripten_get_mouse_status(EmscriptenMouseEvent *mouseState)
¶最後に受信したマウスイベントの状態を返します。
この関数呼び出しが成功するには、マウスイベントの種類の1つと0以外のコールバック関数ポインタを使用してemscripten_set_xxx_callback
を最初に呼び出して、マウス状態のキャプチャを有効にする必要があります。
mouseState (EmscriptenMouseEvent*
) – 最後に受信したマウスイベントの状態。
EMSCRIPTEN_RESULT_SUCCESS
、またはその他の結果値のいずれか。
EMSCRIPTEN_EVENT_WHEEL
¶Emscriptenホイールイベント。
DOM_DELTA_PIXEL
¶デルタの測定単位はピクセルである必要があります(仕様から)。
DOM_DELTA_LINE
¶デルタの測定単位はテキストの個々の行である必要があります(仕様から)。
DOM_DELTA_PAGE
¶デルタの測定単位はページで、単一の画面として定義されるか、または区切られたページとして定義されます(仕様から)。
EmscriptenWheelEvent
¶マウスホイールイベントで渡されるイベント構造体。
EmscriptenMouseEvent mouse
¶このイベントに関連する一般的なマウス情報を指定します。
double deltaX
¶double deltaY
¶double deltaZ
¶各軸のホイールの動き。これらの値は小数になる場合があるため、単純に整数にキャストしないでください。スクロール値が0になる可能性があります。正のYスクロール方向は、ページを下方向にスクロールする場合(ページCSSピクセル+Y方向)です。これは、Windows、Linux、および「自然なスクロール」オプションが無効になっているmacOSで、マウスホイールを下方向(画面から離れる方向)にスクロールする場合に対応します。
unsigned long deltaMode
¶デルタ値の測定単位を示すDOM_DELTA_
値の1つ。
em_wheel_callback_func
¶ホイールイベントコールバック関数
の関数ポインタは、次のように定義されます。
typedef bool (*em_wheel_callback_func)(int eventType, const EmscriptenWheelEvent *wheelEvent, void *userData);
eventType (int) – ホイールイベントの種類(EMSCRIPTEN_EVENT_WHEEL
)。
wheelEvent (const EmscriptenWheelEvent*) – 発生したホイールイベントに関する情報。
userData (void*) – 登録関数に最初に渡されたuserData
。
true
(ゼロ以外)は、イベントがコールバックハンドラによって消費されたことを示します。
bool
EMSCRIPTEN_RESULT emscripten_set_wheel_callback(const char *target, void *userData, bool useCapture, em_wheel_callback_func callback)
¶ブラウザから生成されたマウスホイールイベントを受け取るためのコールバック関数を登録します。
target (const char*) – ターゲットHTML要素ID。
userData (void*) – コールバックに渡されるユーザー定義データ(APIに対して不透明)。
useCapture (bool) – キャプチャを使用するにはtrue
を設定します。
callback (em_wheel_callback_func
) – コールバック関数。この登録関数から渡されたイベントの種類、イベントに関する情報、ユーザーデータを使用して関数が呼び出されます。イベントが消費された場合は、コールバックはtrue
を返す必要があります。
EMSCRIPTEN_RESULT_SUCCESS
、またはその他の結果値のいずれか。
EMSCRIPTEN_EVENT_RESIZE
¶EMSCRIPTEN_EVENT_SCROLL
¶Emscripten UIイベント。
EmscriptenUiEvent
¶DOM要素UIEventイベント(resizeとscroll)で渡されるイベント構造体。
long detail
¶resizeイベントとscrollイベントでは、これは常にゼロです。
int documentBodyClientWidth
¶int documentBodyClientHeight
¶document.body
要素のclientWidth/clientHeight。
int windowInnerWidth
¶int windowInnerHeight
¶ブラウザウィンドウのinnerWidth/innerHeight。
int windowOuterWidth
¶int windowOuterHeight;
ブラウザウィンドウのouterWidth/outerHeight。
int scrollTop
¶int scrollLeft
¶ページのスクロール位置(最も近いピクセルに切り捨て)。
em_ui_callback_func
¶UIイベントコールバック関数
の関数ポインタは、次のように定義されます。
typedef bool (*em_ui_callback_func)(int eventType, const EmscriptenUiEvent *uiEvent, void *userData);
eventType (int) – UIイベントの種類 (EMSCRIPTEN_EVENT_RESIZE
)。
uiEvent (const EmscriptenUiEvent*) – 発生したUIイベントに関する情報。
userData (void*) – 登録関数に最初に渡されたuserData
。
true
(ゼロ以外)は、イベントがコールバックハンドラによって消費されたことを示します。
bool
emscripten_set_resize_callback
(const char *target, void *userData, bool useCapture, em_ui_callback_func callback)¶emscripten_set_scroll_callback
(const char *target, void *userData, bool useCapture, em_ui_callback_func callback)¶DOM要素のresizeおよびscrollイベントを受信するためのコールバック関数を登録します。
注記
resize
コールバックの場合、`target = EMSCRIPTEN_EVENT_TARGET_WINDOW
` を渡すと、Window
オブジェクトからのresize
イベントを取得できます。
DOM3 Events仕様では、Window
オブジェクトがresizeイベントを送信することのみが要求されています。resize
コールバックを他のDOM要素に登録することも有効ですが、ブラウザはこれらの要素に対してresize
イベントを発生させる必要はありません。
target (const char*) – ターゲットHTML要素ID。
userData (void*) – コールバックに渡されるユーザー定義データ(APIに対して不透明)。
useCapture (bool) – キャプチャを使用するにはtrue
を設定します。
callback (em_ui_callback_func) – コールバック関数。この登録関数から渡されたイベントの種類、イベントに関する情報、およびユーザーデータを使用して関数が呼び出されます。イベントが消費された場合は、コールバックはtrue
を返す必要があります。
EMSCRIPTEN_RESULT_SUCCESS
、またはその他の結果値のいずれか。
em_focus_callback_func
¶focus event callback functions
の関数ポインタ。以下のように定義されています。
typedef bool (*em_focus_callback_func)(int eventType, const EmscriptenFocusEvent *focusEvent, void *userData);
eventType (int) – フォーカスイベントの種類 (EMSCRIPTEN_EVENT_BLUR
)。
focusEvent (const EmscriptenFocusEvent*) – 発生したフォーカスイベントに関する情報。
userData (void*) – 登録関数に最初に渡されたuserData
。
true
(ゼロ以外)は、イベントがコールバックハンドラによって消費されたことを示します。
bool
emscripten_set_blur_callback
(const char *target, void *userData, bool useCapture, em_focus_callback_func callback)¶emscripten_set_focus_callback
(const char *target, void *userData, bool useCapture, em_focus_callback_func callback)¶emscripten_set_focusin_callback
(const char *target, void *userData, bool useCapture, em_focus_callback_func callback)¶emscripten_set_focusout_callback
(const char *target, void *userData, bool useCapture, em_focus_callback_func callback)¶DOM要素のblur、focus、focusin、およびfocusoutイベントを受信するためのコールバック関数を登録します。
target (const char*) – ターゲットHTML要素ID。
userData (void*) – コールバックに渡されるユーザー定義データ(APIに対して不透明)。
useCapture (bool) – キャプチャを使用するにはtrue
を設定します。
callback (em_focus_callback_func) – コールバック関数。この登録関数から渡されたイベントの種類、イベントに関する情報、およびユーザーデータを使用して関数が呼び出されます。イベントが消費された場合は、コールバックはtrue
を返す必要があります。
EMSCRIPTEN_RESULT_SUCCESS
、またはその他の結果値のいずれか。
EMSCRIPTEN_EVENT_DEVICEORIENTATION
¶Emscripten deviceorientation
イベント。
EmscriptenDeviceOrientationEvent
¶deviceorientationイベントで渡されるイベント構造体。
alpha
¶beta
¶gamma
¶地球上に固定された座標系からデバイスに固定された座標系への変換という観点から見たデバイスの方向。
以下の図(出典:dev.opera.com)と定義は、座標系を示しています。
absolute
¶false
の場合、方向は固定座標系ではなく、他の基準方向に対する相対的な方向のみを示します。
em_deviceorientation_callback_func
¶orientation event callback functions
の関数ポインタ。以下のように定義されています。
typedef bool (*em_deviceorientation_callback_func)(int eventType, const EmscriptenDeviceOrientationEvent *deviceOrientationEvent, void *userData);
eventType (int) – 方向イベントの種類 (EMSCRIPTEN_EVENT_DEVICEORIENTATION
)。
deviceOrientationEvent (const EmscriptenDeviceOrientationEvent*) – 発生した方向イベントに関する情報。
userData (void*) – 登録関数に最初に渡されたuserData
。
true
(ゼロ以外)は、イベントがコールバックハンドラによって消費されたことを示します。
bool
emscripten_set_deviceorientation_callback
((void *userData, bool useCapture, em_deviceorientation_callback_func callback)¶deviceorientation イベントを受信するためのコールバック関数を登録します。
userData (void*) – コールバックに渡されるユーザー定義データ(APIに対して不透明)。
useCapture (bool) – キャプチャを使用するにはtrue
を設定します。
callback (em_deviceorientation_callback_func) – コールバック関数。イベントの種類、イベントに関する情報、この登録関数から渡されたユーザーデータと共に呼び出されます。イベントが消費された場合は、コールバックはtrue
を返す必要があります。
EMSCRIPTEN_RESULT_SUCCESS
、またはその他の結果値のいずれか。
emscripten_get_deviceorientation_status
((EmscriptenDeviceOrientationEvent *orientationState)¶最後に受信したdeviceorientation
イベントの状態を返します。
この関数呼び出しが成功するには、emscripten_set_deviceorientation_callback()
が、マウスイベントの種類のいずれかとゼロ以外のコールバック関数ポインタを使用して、deviceorientation
状態のキャプチャを有効にするために最初に呼び出されている必要があります。
orientationState (EmscriptenDeviceOrientationEvent*) – 最後に受信したdeviceorientation
イベントの状態。
EMSCRIPTEN_RESULT_SUCCESS
、またはその他の結果値のいずれか。
EMSCRIPTEN_EVENT_DEVICEMOTION
¶Emscripten devicemotion イベント。
EmscriptenDeviceMotionEvent
¶devicemotion イベントで渡されるイベント構造体。
accelerationIncludingGravityX
¶accelerationIncludingGravityY
¶accelerationIncludingGravityZ
¶重力を含むデバイスの加速度。
supportedFields
¶この構造体のさまざまなフィールドを現在のブラウザがサポートしていることを指定する、EMSCRIPTEN_DEVICE_MOTION_EVENT_SUPPORTS_*フィールドの組み合わせであるビットフィールド。たとえば、EMSCRIPTEN_DEVICE_MOTION_EVENT_SUPPORTS_ACCELERATIONビットがこのフィールドに存在しない場合、この構造体のaccelerationX/Y/Zフィールドは無効であると見なす必要があります。
em_devicemotion_callback_func
¶devicemotion event callback functions
の関数ポインタで、次のように定義されています。
typedef bool (*em_devicemotion_callback_func)(int eventType, const EmscriptenDeviceMotionEvent *deviceMotionEvent, void *userData);
eventType (int) – devicemotionイベントの種類(EMSCRIPTEN_EVENT_DEVICEMOTION
)。
deviceMotionEvent (const EmscriptenDeviceMotionEvent*) – 発生したdevicemotionイベントに関する情報。
userData (void*) – 登録関数に最初に渡されたuserData
。
true
(ゼロ以外)は、イベントがコールバックハンドラによって消費されたことを示します。
bool
emscripten_set_devicemotion_callback
((void *userData, bool useCapture, em_devicemotion_callback_func callback)¶devicemotion イベントを受信するためのコールバック関数を登録します。
userData (void*) – コールバックに渡されるユーザー定義データ(APIに対して不透明)。
useCapture (bool) – キャプチャを使用するにはtrue
を設定します。
callback (em_devicemotion_callback_func) – コールバック関数。イベントの種類、イベントに関する情報、この登録関数から渡されたユーザーデータと共に呼び出されます。イベントが消費された場合は、コールバックはtrue
を返す必要があります。
EMSCRIPTEN_RESULT_SUCCESS
、またはその他の結果値のいずれか。
emscripten_get_devicemotion_status
((EmscriptenDeviceMotionEvent *motionState)¶最後に受信したdevicemotionイベントの状態を返します。
この関数呼び出しが成功するには、emscripten_set_devicemotion_callback()
が、マウスイベントの種類のいずれかとゼロ以外のコールバック関数ポインタを使用して、devicemotion
状態のキャプチャを有効にするために最初に呼び出されている必要があります。
motionState (EmscriptenDeviceMotionEvent*) – 最後に受信したdevicemotion
イベントの状態。
EMSCRIPTEN_RESULT_SUCCESS
、またはその他の結果値のいずれか。
EMSCRIPTEN_EVENT_ORIENTATIONCHANGE
¶Emscripten orientationchange イベント。
EMSCRIPTEN_ORIENTATION_UNKNOWN
¶向きAPIがサポートされていないか、向きタイプが不明です。
EMSCRIPTEN_ORIENTATION_PORTRAIT_PRIMARY
¶プライマリポートレートモードの向き。
EMSCRIPTEN_ORIENTATION_PORTRAIT_SECONDARY
¶セカンダリポートレートモードの向き。
EMSCRIPTEN_ORIENTATION_LANDSCAPE_PRIMARY
¶プライマリランドスケープモードの向き。
EMSCRIPTEN_ORIENTATION_LANDSCAPE_SECONDARY
¶セカンダリランドスケープモードの向き。
EmscriptenOrientationChangeEvent
¶orientationchange イベントで渡されるイベント構造体。
orientationIndex
¶EM_ORIENTATION_PORTRAIT_xxx
フィールドのいずれか、または不明な場合はEMSCRIPTEN_ORIENTATION_UNKNOWN
。
orientationAngle
¶Emscripten固有の拡張機能:一部のブラウザはwindow.orientation
を参照するため、それも報告します。
角度単位の向き。0:「デフォルトの向き」、つまりモバイルデバイスを保持するデフォルトの垂直向き。ランドスケープまたはポートレートのいずれかになります。
em_orientationchange_callback_func
¶orientationchange event callback functions
の関数ポインタで、次のように定義されています。
typedef bool (*em_orientationchange_callback_func)(int eventType, const EmscriptenOrientationChangeEvent *orientationChangeEvent, void *userData);
eventType (int) – orientationchangeイベントの種類(EMSCRIPTEN_EVENT_ORIENTATIONCHANGE
)。
orientationChangeEvent (const EmscriptenOrientationChangeEvent*) – 発生したorientationchangeイベントに関する情報。
userData (void*) – 登録関数に最初に渡されたuserData
。
true
(ゼロ以外)は、イベントがコールバックハンドラによって消費されたことを示します。
bool
emscripten_set_orientationchange_callback
((void *userData, bool useCapture, em_orientationchange_callback_func callback)¶orientationchange イベントを受信するためのコールバック関数を登録します。
userData (void*) – コールバックに渡されるユーザー定義データ(APIに対して不透明)。
useCapture (bool) – キャプチャを使用するにはtrue
を設定します。
callback (em_orientationchange_callback_func) – コールバック関数。イベントの種類、イベントに関する情報、この登録関数から渡されたユーザーデータと共に呼び出されます。イベントが消費された場合は、コールバックはtrue
を返す必要があります。
EMSCRIPTEN_RESULT_SUCCESS
、またはその他の結果値のいずれか。
emscripten_get_orientation_status
((EmscriptenOrientationChangeEvent *orientationStatus)¶現在のデバイスの向き状態を返します。
orientationStatus (EmscriptenOrientationChangeEvent*) – 最後に受信した向き状態。
EMSCRIPTEN_RESULT_SUCCESS
、またはその他の結果値のいずれか。
emscripten_lock_orientation
((int allowedOrientations)¶指定されたallowed orientations
の集合に画面の向きをロックします。
allowedOrientations (int) – EMSCRIPTEN_ORIENTATION_xxx
フラグのビットフィールド集合。
EMSCRIPTEN_RESULT_SUCCESS
、またはその他の結果値のいずれか。
emscripten_unlock_orientation
(void)¶画面が任意の向きに回転できるように、向きのロックを解除します。
EMSCRIPTEN_RESULT_SUCCESS
、またはその他の結果値のいずれか。
EMSCRIPTEN_EVENT_FULLSCREENCHANGE
¶Emscripten fullscreenchange イベント。
EMSCRIPTEN_FULLSCREEN_SCALE
¶関数emscripten_request_fullscreen_strategy()
とemscripten_enter_soft_fullscreen()
を介してフルスクリーンモードで表示する際に、Emscriptenランタイムがターゲット要素のCSSサイズをどのように扱うべきかを指定する列挙型のような型です。
EMSCRIPTEN_FULLSCREEN_SCALE_DEFAULT
¶フルスクリーンモードとウィンドウモード間の遷移時に、DOM要素がEmscriptenランタイムによってサイズ変更されないことを指定します。ブラウザがDOM要素をフルスクリーンサイズに拡大縮小する役割を担います。このモードでの適切なブラウザの動作は、アスペクト比を無視して画面全体に合うように要素をストレッチすることですが、執筆時点では、ブラウザによって異なる動作が実装されています。詳細については、https://github.com/emscripten-core/emscripten/issues/2556の議論を参照してください。
EMSCRIPTEN_FULLSCREEN_SCALE_STRETCH
¶フルスクリーンモードへの遷移時に、Emscriptenランタイムがターゲット要素のCSSサイズを明示的にストレッチして画面全体を覆うようにすることを指定します。これにより、表示されるコンテンツのアスペクト比が変わります。
EMSCRIPTEN_FULLSCREEN_SCALE_ASPECT
¶Emscriptenランタイムがターゲット要素のCSSサイズを明示的に拡大縮小して画面全体を覆うようにしつつ、コンテンツのアスペクト比を維持するために垂直または水平方向にレターボックスパディングを追加することを指定します。ここで使用されるアスペクト比は、キャンバス要素のレンダリングターゲットサイズです。目的のアスペクト比を変更するには、フルスクリーンモードに入る前にemscripten_set_canvas_element_size()
を呼び出します。
EMSCRIPTEN_FULLSCREEN_CANVAS_SCALE
¶関数emscripten_request_fullscreen_strategy()
とemscripten_enter_soft_fullscreen()
を介してフルスクリーンモードで表示する際に、Emscriptenランタイムがターゲットキャンバス要素のピクセルサイズ(レンダリングターゲット解像度)をどのように扱うべきかを指定する列挙型のような型です。キャンバス要素のCSSサイズとキャンバス要素のレンダリングターゲットサイズの違いをよりよく理解するには、https://www.khronos.org/webgl/wiki/HandlingHighDPIを参照してください。
EMSCRIPTEN_FULLSCREEN_CANVAS_SCALE_NONE
¶フルスクリーンモードで表示されるターゲットキャンバス要素のレンダリングターゲット解像度に対して、Emscriptenランタイムが変更を行わないことを指定します。アプリケーションが、いかなる条件下でも変更できない単一の固定解像度にレンダリングするように設定されている場合に、このモードを使用します。
EMSCRIPTEN_FULLSCREEN_CANVAS_SCALE_STDDEF
¶フルスクリーンモードでは、キャンバス要素のレンダリングターゲットを要素のCSSサイズと1:1で一致するようにサイズ変更することを指定します。高DPIディスプレイ(window.devicePixelRatio > 1)では、CSSサイズはデバイスの物理的な画面解像度とは異なります。emscripten_get_device_pixel_ratio()
を呼び出して、CSSピクセルと画面の実際のデバイスピクセル間のピクセル比を取得します。DPIに依存しないピクセル解像度にレンダリングする場合に、このモードを使用します。
EMSCRIPTEN_FULLSCREEN_CANVAS_SCALE_HIDEF
¶デバイスの物理的な画面解像度と1:1で一致するようにキャンバスレンダリングターゲットサイズをサイズ変更することを指定します。これは、Retina iOSやその他の高DPIのモバイルおよびデスクトップデバイスの高解像度ディスプレイに対応します。ネイティブのディスプレイ解像度と一致してレンダリングする場合に、このモードを使用します。
EMSCRIPTEN_FULLSCREEN_FILTERING
¶フルスクリーンモードで要素が表示されるときに適用する画像フィルタリングアルゴリズムの種類を指定する列挙型のような型です。
EMSCRIPTEN_FULLSCREEN_FILTERING_DEFAULT
¶CSSスタイルの既存の設定から画像フィルタリングモードを変更しないことを指定します。
EMSCRIPTEN_FULLSCREEN_FILTERING_NEAREST
¶フルスクリーンモードで、最近傍の画像フィルタリングアルゴリズムを使用してコンテンツを表示する要素にCSSスタイルを適用します。
EMSCRIPTEN_FULLSCREEN_FILTERING_BILINEAR
¶フルスクリーンモードで、バイリニア画像フィルタリングアルゴリズムを使用してコンテンツを表示する要素にCSSスタイルを適用します。これはブラウザのデフォルトの動作です。
EmscriptenFullscreenChangeEvent
¶fullscreenchangeイベントで渡されるイベント構造体です。
isFullscreen
¶ブラウザページ上の要素が現在フルスクリーンになっているかどうかを指定します。
fullscreenEnabled
¶現在のページに要素をフルスクリーンで表示する機能があるかどうかを指定します。
EmscriptenFullscreenStrategy
¶関数emscripten_request_fullscreen_strategy()
とemscripten_enter_soft_fullscreen()
に渡されるオプション構造体で、ターゲット要素をフルスクリーンモードでどのように表示するかを構成します。
scaleMode
¶フルスクリーンモードで表示される際に、ターゲット要素のCSSサイズ(表示サイズ)がどのようにサイズ変更されるかを指定するルールです。
canvasResolutionScaleMode
¶フルスクリーンモードで表示される際に、ターゲット要素のレンダリングターゲットサイズ(ピクセル解像度)がどのように調整されるかを指定します。
filteringMode
¶フルスクリーンモードで要素に適用する画像フィルタリングアルゴリズムを指定します。
canvasResizedCallback
¶0以外の場合、CSSサイズまたはキャンバスレンダリングターゲットサイズが変更されるたびに呼び出される、ユーザーが提供したコールバック関数を指します。このコールバックを使用して、キャンバスのサイズ変更イベントに関する情報を確実に取得します。
canvasResizedCallbackUserData
¶ユーザーが提供したコールバック関数へのすべての呼び出しに渡されるカスタムデータフィールドを格納します。
em_fullscreenchange_callback_func
¶以下で定義されている、fullscreen event callback functions
のための関数ポインタ。
typedef bool (*em_fullscreenchange_callback_func)(int eventType, const EmscriptenFullscreenChangeEvent *fullscreenChangeEvent, void *userData);
eventType (int) – フルスクリーンイベントの種類 (EMSCRIPTEN_EVENT_FULLSCREENCHANGE
).
fullscreenChangeEvent (const EmscriptenFullscreenChangeEvent*) – 発生したフルスクリーンイベントに関する情報。
userData (void*) – 登録関数に最初に渡されたuserData
。
true
(ゼロ以外)は、イベントがコールバックハンドラによって消費されたことを示します。
bool
emscripten_set_fullscreenchange_callback
(const char *target, void *userData, bool useCapture, em_fullscreenchange_callback_func callback)¶fullscreenchange イベントを受信するためのコールバック関数を登録します。
target (const char*) – ターゲットHTML要素ID。
userData (void*) – コールバックに渡されるユーザー定義データ(APIに対して不透明)。
useCapture (bool) – キャプチャを使用するにはtrue
を設定します。
callback (em_fullscreenchange_callback_func) – コールバック関数。この登録関数から渡されたイベントの種類、イベントに関する情報、ユーザーデータを使用して関数が呼び出されます。コールバックは、イベントが消費された場合はtrue
を返す必要があります。
EMSCRIPTEN_RESULT_SUCCESS
、またはその他の結果値のいずれか。
emscripten_get_fullscreen_status
(EmscriptenFullscreenChangeEvent *fullscreenStatus)¶現在のページのフルスクリーン状態を返します。
fullscreenStatus (EmscriptenFullscreenChangeEvent*) – 最近受信したフルスクリーン状態。
EMSCRIPTEN_RESULT_SUCCESS
、またはその他の結果値のいずれか。
emscripten_request_fullscreen
(const char *target, bool deferUntilInEventHandler)¶指定されたターゲット要素がフルスクリーンモードに遷移することを要求します。
注記
この関数はどこからでも呼び出すことができますが、Webセキュリティ上の理由から、関連する*要求*は、ユーザーが生成したイベント(例:キー、マウス、またはタッチの押下/解放)のイベントハンドラー内でのみ発生させることができます。これには、移植とdeferUntilInEventHandler
の値に影響があります。詳細はWebセキュリティの影響を受ける関数を参照してください。
注記
この関数は、フルスクリーンモードで表示されるDOM要素のパラメータを変更せずに、フルスクリーン要求のみを実行します。執筆時点では、ブラウザがフルスクリーンモードで要素を表示する方法に違いがあります。詳細は、https://github.com/emscripten-core/emscripten/issues/2556のディスカッションを参照してください。ブラウザ間で一貫性のある方法でフルスクリーンモードで要素を表示するには、代わりにemscripten_request_fullscreen_strategy()
関数を呼び出すことをお勧めします。emscripten_request_fullscreen_strategy()
で定義された事前設定されたプリセットが開発者のユースケースと何らかの形で競合する場合にのみ、この関数を呼び出すのが最適です。
target (const char*) – ターゲットHTML要素ID。
deferUntilInEventHandler (bool) – true
の場合、ユーザー生成イベントハンドラーの外で行われた要求は、ユーザーが次にキーボードまたはマウスボタンを押すまで自動的に延期されます。false
の場合、ユーザー生成イベントハンドラーの外から呼び出された場合、要求は失敗します。
EMSCRIPTEN_RESULT_SUCCESS
、またはその他の結果値のいずれか。
EMSCRIPTEN_RESULT
emscripten_request_fullscreen_strategy
(const char *target, bool deferUntilInEventHandler, const EmscriptenFullscreenStrategy *fullscreenStrategy)¶要素のカスタム表示モードを使用して、指定されたターゲット要素がフルスクリーンモードに遷移することを要求します。この関数は、emscripten_request_fullscreen()
とほぼ同じですが、サイズ変更とアスペクト比の制御オプションを追加し、ブラウザ間で動作が確実に一貫するようにします。
注記
この関数は、ブラウザ間で一貫した表示を満たすためにDOMに変更を加えます。これらの変更は可能な限り干渉しないように設計されており、ウィンドウブラウジングが復元されると変更はクリアされます。これらの変更が競合する場合は、DOMへの変更なしに単純なフルスクリーン要求を実行するemscripten_request_fullscreen()
関数を参照してください。
fullscreenStrategy (const EmscriptenFullscreenStrategy*) – [in] 呼び出し元によって埋められ、フルスクリーンモードの表示オプションを指定する構成構造体を指します。
emscripten_exit_fullscreen
(void)¶適切なフルスクリーンモードからウィンドウブラウジングモードに戻ります。
ソフトフルスクリーンモードからウィンドウブラウジングモードに戻るために、この関数を呼び出さないでください。その逆も同様です。
EMSCRIPTEN_RESULT_SUCCESS
、またはその他の結果値のいずれか。
emscripten_enter_soft_fullscreen
(const char *target, const EmscriptenFullscreenStrategy *fullscreenStrategy)¶指定されたターゲット要素がページ全体のクライアント領域に表示され、他のすべての要素が非表示になる「ソフト」フルスクリーンモードに入ります。ただし、ブラウザのフルスクリーンモードを実際に要求することはありません。この関数は、実際のフルスクリーンAPIが望ましくない場合や不要な場合(例:アプリケーションが本質的に既に画面全体をカバーしているFirefox OSのパッケージ化されたアプリ)に役立ちます。
Escキーを押しても、ソフトフルスクリーンモードは自動的に終了しません。ウィンドウ表示モードに戻るには、emscripten_exit_soft_fullscreen()
関数を手動で呼び出してください。
emscripten_exit_soft_fullscreen
()¶ソフトフルスクリーンモードからウィンドウブラウジングモードに戻ります。実際のフルスクリーンモードからウィンドウブラウジングモードに戻るために、この関数を呼び出さないでください。その逆も同様です。
EMSCRIPTEN_EVENT_POINTERLOCKCHANGE
¶Emscripten pointerlockchange イベント。
EMSCRIPTEN_EVENT_POINTERLOCKERROR
¶Emscripten pointerlockerror イベント。
EmscriptenPointerlockChangeEvent
¶pointerlockchange イベントで渡されるイベント構造体。
isActive
¶ブラウザページ上の要素で現在ポインターロックが有効になっているかどうかを指定します。
em_pointerlockchange_callback_func
¶以下で定義されている、pointerlockchange event callback functions
のための関数ポインタ。
typedef bool (*em_pointerlockchange_callback_func)(int eventType, const EmscriptenPointerlockChangeEvent *pointerlockChangeEvent, void *userData);
eventType (int) – pointerlockchange イベントの種類 (EMSCRIPTEN_EVENT_POINTERLOCKCHANGE
).
pointerlockChangeEvent (const EmscriptenPointerlockChangeEvent*) – 発生したpointerlockchangeイベントに関する情報。
userData (void*) – 登録関数に最初に渡されたuserData
。
true
(ゼロ以外)は、イベントがコールバックハンドラによって消費されたことを示します。
bool
em_pointerlockerror_callback_func
¶以下で定義されている、pointerlockerror event callback functions
のための関数ポインタ。
typedef bool (*em_pointerlockerror_callback_func)(int eventType, const void *reserved, void *userData);
eventType (int) – pointerlockerror イベントの種類 (EMSCRIPTEN_EVENT_POINTERLOCKERROR
).
void* reserved (const) – 今後の使用のために予約されています。0を渡してください。
userData (void*) – 登録関数に最初に渡されたuserData
。
true
(ゼロ以外)は、イベントがコールバックハンドラによって消費されたことを示します。
bool
emscripten_set_pointerlockchange_callback
(const char *target, void *userData, bool useCapture, em_pointerlockchange_callback_func callback)¶`pointerlockchange` イベントを受信するためのコールバック関数を登録します。
ポインターロックはマウスカーソルを隠し、ターゲット要素に対して`mousemove` イベントを介して、相対的なマウス移動イベントを排他的に提供します。
target (const char*) – ターゲットHTML要素ID。
userData (void*) – コールバックに渡されるユーザー定義データ(APIに対して不透明)。
useCapture (bool) – キャプチャを使用するにはtrue
を設定します。
callback (em_pointerlockchange_callback_func) – コールバック関数。この登録関数から渡されたイベントの種類、イベントに関する情報、ユーザーデータと共に呼び出されます。イベントが消費された場合は、true
を返す必要があります。
EMSCRIPTEN_RESULT_SUCCESS
、またはその他の結果値のいずれか。
emscripten_set_pointerlockerror_callback
(const char *target, void *userData, bool useCapture, em_pointerlockerror_callback_func callback)¶`pointerlockerror` イベントを受信するためのコールバック関数を登録します。
target (const char*) – ターゲットHTML要素ID。
userData (void*) – コールバックに渡されるユーザー定義データ(APIに対して不透明)。
useCapture (bool) – キャプチャを使用するにはtrue
を設定します。
callback (em_pointerlockerror_callback_func) – コールバック関数。この登録関数から渡されたイベントの種類、イベントに関する情報、ユーザーデータと共に呼び出されます。イベントが消費された場合は、true
を返す必要があります。
EMSCRIPTEN_RESULT_SUCCESS
、またはその他の結果値のいずれか。
emscripten_get_pointerlock_status
(EmscriptenPointerlockChangeEvent *pointerlockStatus)¶現在のページのポインターロックの状態を返します。
pointerlockStatus (EmscriptenPointerlockChangeEvent*) – 最新の受信済みのポインターロック状態。
EMSCRIPTEN_RESULT_SUCCESS
、またはその他の結果値のいずれか。
emscripten_request_pointerlock
(const char *target, bool deferUntilInEventHandler)¶指定されたターゲット要素に対してポインターロックを取得するように要求します。
注記
この関数はどこからでも呼び出すことができますが、Webセキュリティ上の理由から、関連する*要求*は、ユーザーが生成したイベント(例:キー、マウス、またはタッチの押下/解放)のイベントハンドラー内でのみ発生させることができます。これには、移植とdeferUntilInEventHandler
の値に影響があります。詳細はWebセキュリティの影響を受ける関数を参照してください。
target (const char*) – ターゲットHTML要素ID。
deferUntilInEventHandler (bool) – true
の場合、ユーザー生成イベントハンドラーの外で行われた要求は、ユーザーが次にキーボードまたはマウスボタンを押すまで自動的に延期されます。false
の場合、ユーザー生成イベントハンドラーの外から呼び出された場合、要求は失敗します。
EMSCRIPTEN_RESULT_SUCCESS
、またはその他の結果値のいずれか。
emscripten_exit_pointerlock
(void)¶ポインターロック状態を終了し、マウスカーソルを再び表示状態に戻します。
EMSCRIPTEN_RESULT_SUCCESS
、またはその他の結果値のいずれか。
EMSCRIPTEN_EVENT_VISIBILITYCHANGE
¶Emscripten `visibilitychange` イベント。
EmscriptenVisibilityChangeEvent
¶`visibilitychange` イベントで渡されるイベント構造体。
true の場合、現在のブラウザページは非表示になっています。
visibilityState
¶現在のページの表示状態のより詳細な状態を指定します。 EMSCRIPTEN_VISIBILITY_
値のいずれか。
em_visibilitychange_callback_func
¶visibilitychange event callback functions
の関数ポインタで、次のように定義されます。
typedef bool (*em_visibilitychange_callback_func)(int eventType, const EmscriptenVisibilityChangeEvent *visibilityChangeEvent, void *userData);
eventType (int) – visibilitychange
イベントの種類(EMSCRIPTEN_VISIBILITY_HIDDEN
)。
visibilityChangeEvent (const EmscriptenVisibilityChangeEvent*) – 発生した visibilitychange
イベントに関する情報。
userData (void*) – 登録関数に最初に渡されたuserData
。
true
(ゼロ以外)は、イベントがコールバックハンドラによって消費されたことを示します。
bool
emscripten_set_visibilitychange_callback
(void *userData, bool useCapture, em_visibilitychange_callback_func callback)¶`visibilitychange` イベントを受信するためのコールバック関数を登録します。
userData (void*) – コールバックに渡されるユーザー定義データ(APIに対して不透明)。
useCapture (bool) – キャプチャを使用するにはtrue
を設定します。
callback (em_visibilitychange_callback_func) – コールバック関数。この登録関数から渡されたイベントの種類、イベントに関する情報、ユーザーデータと共に呼び出されます。イベントが消費された場合は、true
を返す必要があります。
EMSCRIPTEN_RESULT_SUCCESS
、またはその他の結果値のいずれか。
emscripten_get_visibility_status
(EmscriptenVisibilityChangeEvent *visibilityStatus)¶現在のページの表示状態を返します。
visibilityStatus (EmscriptenVisibilityChangeEvent*) – 最新の受信済みのページの表示状態。
EMSCRIPTEN_RESULT_SUCCESS
、またはその他の結果値のいずれか。
em_touch_callback_func
¶touch event callback functions
の関数ポインタで、次のように定義されます。
typedef bool (*em_touch_callback_func)(int eventType, const EmscriptenTouchEvent *touchEvent, void *userData);
eventType (int) – タッチイベントの種類(EMSCRIPTEN_EVENT_TOUCHSTART
)。
touchEvent (const EmscriptenTouchEvent*) – 発生したタッチイベントに関する情報。
userData (void*) – 登録関数に最初に渡されたuserData
。
true
(ゼロ以外)は、イベントがコールバックハンドラによって消費されたことを示します。
bool
emscripten_set_touchstart_callback
(const char *target, void *userData, bool useCapture, em_touch_callback_func callback)¶emscripten_set_touchend_callback
(const char *target, void *userData, bool useCapture, em_touch_callback_func callback)¶emscripten_set_touchmove_callback
(const char *target, void *userData, bool useCapture, em_touch_callback_func callback)¶emscripten_set_touchcancel_callback
(const char *target, void *userData, bool useCapture, em_touch_callback_func callback)¶タッチイベント(touch events):touchstart、touchend、touchmove、touchcancelを受信するためのコールバック関数を登録します。
target (const char*) – ターゲットHTML要素ID。
userData (void*) – コールバックに渡されるユーザー定義データ(APIに対して不透明)。
useCapture (bool) – キャプチャを使用するにはtrue
を設定します。
**callback** (em_touch_callback_func) – コールバック関数。イベントの種類、イベントに関する情報、この登録関数から渡されたユーザーデータと共に呼び出されます。イベントが消費された場合は、true
を返す必要があります。
EMSCRIPTEN_RESULT_SUCCESS
、またはその他の結果値のいずれか。
EmscriptenGamepadEvent
¶ゲームパッドの現在のスナップショット状態を表します。
timestamp
¶データが記録された絶対的なウォールクロック時間(ミリ秒)。
numAxes
¶axis
配列内の有効な軸エントリの数。
numButtons
¶analogButton配列とdigitalButton配列内の有効なボタンエントリの数。
double axis[64]
ゲームパッド軸のアナログ状態(-1~1の範囲)。
double analogButton[64]
ゲームパッドボタンのアナログ状態(0~1の範囲)。
bool digitalButton[64]
ゲームパッドボタンのデジタル状態(0または1)。
connected
¶このゲームパッドがブラウザページに接続されているかどうかを指定します。
index
¶このゲームパッドに関連付けられた序数(0ベース)。
em_gamepad_callback_func
¶gamepad event callback functions
の関数ポインタ。以下のように定義されています。
typedef bool (*em_gamepad_callback_func)(int eventType, const EmscriptenGamepadEvent *gamepadEvent, void *userData)
**eventType** (int) – ゲームパッドイベントの種類(EMSCRIPTEN_EVENT_GAMEPADCONNECTED
)。
**gamepadEvent** (const EmscriptenGamepadEvent*) – 発生したゲームパッドイベントに関する情報。
userData (void*) – 登録関数に最初に渡されたuserData
。
true
(ゼロ以外)は、イベントがコールバックハンドラによって消費されたことを示します。
bool
emscripten_set_gamepadconnected_callback
(void *userData, bool useCapture, em_gamepad_callback_func callback)¶emscripten_set_gamepaddisconnected_callback
(void *userData, bool useCapture, em_gamepad_callback_func callback)¶ゲームパッドイベント(gamepadconnectedとgamepaddisconnected)を受信するためのコールバック関数を登録します。
userData (void*) – コールバックに渡されるユーザー定義データ(APIに対して不透明)。
useCapture (bool) – キャプチャを使用するにはtrue
を設定します。
**callback** (em_gamepad_callback_func) – コールバック関数。イベントの種類、イベントに関する情報、この登録関数から渡されたユーザーデータと共に呼び出されます。イベントが消費された場合は、true
を返す必要があります。
EMSCRIPTEN_RESULT_SUCCESS
、またはその他の結果値のいずれか。
emscripten_sample_gamepad_data
(void)¶この関数は、接続されているゲームパッドデータの新しい状態をサンプリングし、Gamepad APIが現在のブラウザでサポートされている場合はEMSCRIPTEN_RESULT_SUCCESSを、サポートされていない場合はEMSCRIPTEN_RESULT_NOT_SUPPORTEDを返します。EMSCRIPTEN_RESULT_SUCCESSが返された場合でも、現在のブラウザタブにゲームパッドがまだ接続されていない場合があります。
`emscripten_get_num_gamepads()`または`emscripten_get_gamepad_status()`のいずれかの関数を呼び出す前に、この関数を呼び出してください。
emscripten_get_num_gamepads
(void)¶`emscripten_sample_gamepad_data()`を呼び出した後、この関数はシステムに接続されているゲームパッドの数を返します。現在のブラウザがゲームパッドをサポートしていない場合はEMSCRIPTEN_RESULT_NOT_SUPPORTED
を返します。
注記
ゲームパッドは、ボタンを押すまで接続済みとして表示されません。
注記
Gamepad APIは、各デバイスの状態を返すためにゲームパッド状態オブジェクトの配列を使用します。デバイスは、この配列内にあるインデックスによって識別されます。そのため、最初にゲームパッドAを接続し、次にゲームパッドBを接続し、次にゲームパッドAを切断した場合、ゲームパッドBはゲームパッドAの場所を取りません。このシナリオでは、この関数はゲームパッドAが存在しなくなっても、接続されているゲームパッドの数を2と返し続けます。接続されているゲームパッドの実際の数を調べるには、gamepadconnectedイベントとgamepaddisconnectedイベントをリッスンしてください。`emscripten_get_num_gamepads()`関数の戻り値から1を引いた値を、`emscripten_get_gamepad_status()`関数に渡すことができる最大のインデックス値と考えてください。
ブラウザタブに接続されているゲームパッドの数。
int
emscripten_get_gamepad_status
(int index, EmscriptenGamepadEvent *gamepadState)¶`emscripten_sample_gamepad_data()`を呼び出した後、この関数は、コントローラ配列の指定されたインデックスにあるゲームパッドコントローラの現在のゲームパッド状態のスナップショットを返します。
**index** (int) – チェックするゲームパッドのインデックス(接続されているゲームパッドの配列内)。
**gamepadState** (EmscriptenGamepadEvent*) – 最近受信したゲームパッドの状態。
EMSCRIPTEN_RESULT_SUCCESS
、またはその他の結果値のいずれか。
EMSCRIPTEN_EVENT_BATTERYCHARGINGCHANGE
¶EMSCRIPTEN_EVENT_BATTERYLEVELCHANGE
¶Emscripten バッテリーマネージャ イベント。
EmscriptenBatteryEvent
¶バッテリーマネージャ イベント(chargingchange
と levelchange
)で渡されるイベント構造体。
chargingTime
¶バッテリーが完全に充電されるまでの残り時間(秒)。
dischargingTime
¶バッテリーが空になり、システムがサスペンドされるまでの残り時間(秒)。
level
¶現在のバッテリーレベル(0~1.0の範囲)。
bool charging;
バッテリーが充電中であればtrue
、そうでなければfalse
。
em_battery_callback_func
¶batterymanager イベント コールバック関数
の関数ポインタ。以下のように定義されています。
typedef bool (*em_battery_callback_func)(int eventType, const EmscriptenBatteryEvent *batteryEvent, void *userData);
eventType (int) – batterymanager
イベントのタイプ(EMSCRIPTEN_EVENT_BATTERYCHARGINGCHANGE
)。
batteryEvent (const EmscriptenBatteryEvent*) – 発生したbatterymanager
イベントに関する情報。
userData (void*) – 登録関数に最初に渡されたuserData
。
true
(ゼロ以外)は、イベントがコールバックハンドラによって消費されたことを示します。
bool
emscripten_set_batterychargingchange_callback
(void *userData, em_battery_callback_func callback)¶emscripten_set_batterylevelchange_callback
(void *userData, em_battery_callback_func callback)¶バッテリーマネージャ イベント(chargingchange
と levelchange
)を受信するためのコールバック関数を登録します。
userData (void*) – コールバックに渡されるユーザー定義データ(APIに対して不透明)。
callback (em_battery_callback_func) – コールバック関数。イベントの種類、イベントに関する情報、この登録関数から渡されたユーザーデータと共に呼び出されます。イベントが消費された場合はtrue
を返す必要があります。
EMSCRIPTEN_RESULT_SUCCESS
、またはその他の結果値のいずれか。
emscripten_get_battery_status
(EmscriptenBatteryEvent *batteryState)¶現在のバッテリーの状態を返します。
batteryState (EmscriptenBatteryEvent*) – 最近受信したバッテリーの状態。
EMSCRIPTEN_RESULT_SUCCESS
、またはその他の結果値のいずれか。
emscripten_vibrate
(int msecs)¶指定された時間(ミリ秒)バイブレーションを発生させます。vibration
msecs (int) – バイブレーションが必要な時間(ミリ秒)。
EMSCRIPTEN_RESULT_SUCCESS
、またはその他の結果値のいずれか。
emscripten_vibrate_pattern
(int *msecsArray, int numEntries)¶複雑なバイブレーションフィードバックパターンを発生させます。
msecsArray (int*) – タイミングエントリの配列 [オン、オフ、オン、オフ、オン、オフ、…]。2つに1つはバイブレーションの持続時間、もう1つは無音の持続時間を指定します。
numEntries (int) – 配列msecsArray
の整数要素数。
EMSCRIPTEN_RESULT_SUCCESS
、またはその他の結果値のいずれか。
EMSCRIPTEN_EVENT_BEFOREUNLOAD
¶Emscripten beforeunload イベント。
em_beforeunload_callback
¶beforeunload イベント コールバック関数
の関数ポインタ。以下のように定義されています。
typedef const char *(*em_beforeunload_callback)(int eventType, const void *reserved, void *userData);
eventType (int) – beforeunload
イベントのタイプ(EMSCRIPTEN_EVENT_BEFOREUNLOAD
)。
reserved (const void*) – 将来の使用のために予約されています。0 を渡してください。
userData (void*) – 登録関数に最初に渡されたuserData
。
ユーザーに表示する文字列を返します。
char*
emscripten_set_beforeunload_callback
(void *userData, em_beforeunload_callback callback)¶ページのbeforeunloadイベントを受信するためのコールバック関数を登録します。
ページの閉じ直前にアクションを実行するために、このイベントにフックします(例:ユーザーが本当にページを離れたいかどうかを確認するための通知を表示する)。
userData (void*) – コールバックに渡されるユーザー定義データ(APIに対して不透明)。
callback (em_beforeunload_callback) – コールバック関数。イベントの種類、イベントに関する情報、この登録関数から渡されたユーザーデータと共に呼び出されます。イベントが消費された場合はtrue
を返す必要があります。
EMSCRIPTEN_RESULT_SUCCESS
、またはその他の結果値のいずれか。
EMSCRIPTEN_EVENT_WEBGLCONTEXTLOST
¶EMSCRIPTEN_EVENT_WEBGLCONTEXTRESTORED
¶Emscripten WebGLコンテキスト イベント。
EMSCRIPTEN_WEBGL_CONTEXT_HANDLE
¶Emscripten WebGLコンテキストオブジェクトへのハンドルを表します。値0は無効なコンテキスト/コンテキストなしを示します(intptr_t
へのtypedefです)。
EmscriptenWebGLContextAttributes
¶WebGLコンテキスト作成パラメータ を指定します。
alpha
¶true
の場合、コンテキストにアルファチャンネルを要求します。アルファチャンネルを作成すると、キャンバスのレンダリングを基となるウェブページの内容とブレンドできます。デフォルト値:true
。
depth
¶true
の場合、少なくとも16ビットの深度バッファを要求します。false
の場合、深度バッファは初期化されません。デフォルト値:true
。
stencil
¶true
の場合、少なくとも8ビットのステンシルバッファを要求します。false
の場合、ステンシルバッファは初期化されません。デフォルト値:false
。
antialias
¶true
の場合、ブラウザで指定されたアルゴリズムと品質レベルでアンチエイリアシングが初期化されます。false
の場合、アンチエイリアシングは無効になります。デフォルト値:true
。
premultipliedAlpha
¶true
の場合、レンダリングコンテキストのアルファチャンネルは、プリマルチプライドアルファ値を表すものとして扱われます。false
の場合、アルファチャンネルはプリマルチプライドされていないアルファを表します。デフォルト値:true
。
preserveDrawingBuffer
¶true
の場合、描画バッファの内容は連続するrequestAnimationFrame()
呼び出し間で保持されます。false
の場合、各requestAnimationFrame()
の開始時に、カラー、深度、ステンシルがクリアされます。一般的に、これをfalse
に設定するとパフォーマンスが向上します。デフォルト値: false
。
powerPreference
¶WebGLキャンバス実装に対して、利用可能なGPUリソースの使用方法を選択する方法に関するヒントを指定します。EM_WEBGL_POWER_PREFERENCE_DEFAULT、EM_WEBGL_POWER_PREFERENCE_LOW_POWER、EM_WEBGL_POWER_PREFERENCE_HIGH_PERFORMANCEのいずれかです。
failIfMajorPerformanceCaveat
¶true
の場合、ブラウザが良好なハードウェアアクセラレーションされたパフォーマンスを提供しないコンテキストしか作成できない場合、コンテキスト作成要求を中止します。デフォルト値: false
。
majorVersion
¶minorVersion
¶初期化するWebGLコンテキストのバージョンを指定するEmscripten固有の拡張機能です。
たとえば、majorVersion=1
、minorVersion=0
を渡してWebGL 1.0コンテキストを要求し、majorVersion=2
、minorVersion=0
を渡してWebGL 2.0コンテキストを要求します。
デフォルト値: majorVersion=1
、minorVersion=0
enableExtensionsByDefault
¶true
の場合、コンテキストの作成後に、パフォーマンスに影響を与えないGLES2互換のすべてのWebGL拡張機能が自動的に有効になります。false
の場合、デフォルトでは拡張機能は有効にならず、使用する拡張機能ごとにemscripten_webgl_enable_extension()
を呼び出して手動で有効にする必要があります。デフォルト値: true
。
explicitSwapControl
¶デフォルトでは、explicitSwapControl
がデフォルト状態のfalse
の場合、レンダリングされたWebGLコンテンツは、WebGLでレンダリングするイベントハンドラがブラウザのイベントループに戻ったときに、キャンバスに暗黙的に表示されます(ユーザーに表示されます)。explicitSwapControl
をtrue
に設定すると、イベントハンドラ関数が終了してもコンテンツは自動的に画面に表示されず、emscripten_webgl_commit_frame()
関数を使用して、スワップの制御がユーザーに委ねられます。
explicitSwapControl==true
を設定するには、1) Emscriptenリンカフラグ-sOFFSCREEN_FRAMEBUFFER
を追加し、renderViaOffscreenBackBuffer==1
を有効にするか、2) リンカフラグ-sOFFSCREENCANVAS_SUPPORT
を追加し、OffscreenCanvasをサポートするブラウザで実行するかのいずれかで、明示的にサポートを有効にする必要があります。
renderViaOffscreenBackBuffer
¶true
の場合、作成されたWebGLコンテキストに追加の中間バックバッファ(オフスクリーンレンダリングターゲット)が割り当てられ、WebGLの「デフォルトバックバッファ」に直接レンダリングする代わりに、このバックバッファにレンダリングが行われます。これは、1) explicitSwapControl==true
でブラウザがOffscreenCanvasをサポートしていない場合、2) ワーカースレッドでWebGLレンダリングを実行し、ブラウザがOffscreenCanvasをサポートしていない場合、3) 複数のスレッドから同時にWebGLコンテキストにアクセスする場合(OffscreenCanvasのサポートの有無に関係なく)に有効にする必要があります。
オフスクリーンフレームバッファのサポートは、コンパイルされた出力に多少の追加コードを追加するため、Emscriptenリンカフラグ-sOFFSCREEN_FRAMEBUFFER
を使用して明示的にサポートを有効にする必要があります。-sOFFSCREEN_FRAMEBUFFER
と-sOFFSCREENCANVAS_SUPPORT
の両方のリンカフラグを有効にして同時にビルドする場合、オフスクリーンバックバッファをポリフィルのような互換性のあるフォールバックとして使用して、ブラウザがOffscreenCanvas APIをサポートしていない場合にpthreadからのWebGLレンダリングを有効にすることができます。
proxyContextToMainThread
¶このメンバーは、WebGLコンテキストがpthreadで作成される場合、作成されるWebGLコンテキストに使用されるスレッドモデルを指定します。使用できる値は、EMSCRIPTEN_WEBGL_CONTEXT_PROXY_DISALLOW
、EMSCRIPTEN_WEBGL_CONTEXT_PROXY_FALLBACK
、EMSCRIPTEN_WEBGL_CONTEXT_PROXY_ALWAYS
の3つです。EMSCRIPTEN_WEBGL_CONTEXT_PROXY_DISALLOW
を指定すると、WebGLRenderingContextオブジェクトは、emscripten_webgl_create_context()
関数を呼び出しているpthread内で、OffscreenCanvasベースのレンダリングコンテキストとして作成されます。これは、1) 現在のブラウザがOffscreenCanvas仕様をサポートしている場合、2) コードが-sOFFSCREENCANVAS_SUPPORT
リンカフラグを有効にしてコンパイルされている場合、3) コンテキストが作成されているCanvasオブジェクトが、pthreadの作成時に関数emscripten_pthread_attr_settransferredcanvases()
を使用して呼び出し元のpthreadに転送されている場合、4) 同時に指定されたCanvasからOffscreenCanvasベースのコンテキストがまだ存在しない場合にのみ可能です。
WebGLレンダリングコンテキストがOffscreenCanvasベースのコンテキストとして作成されると、コンテキストを作成したpthreadのみが(emscripten_webgl_make_context_current()
関数を使用して)それにアクセスできるという制限があります。他のスレッドはコンテキストへのレンダリングをアクティブにできません。つまり、OffscreenCanvasベースのコンテキストは本質的にそれらを作成したpthreadに「固定」されています。
現在のブラウザがOffscreenCanvasをサポートしていない場合は、EMSCRIPTEN_WEBGL_CONTEXT_PROXY_ALWAYS
WebGLコンテキスト作成フラグを指定できます。このフラグが渡され、コードが-sOFFSCREEN_FRAMEBUFFER
を有効にしてコンパイルされている場合、WebGLコンテキストは「プロキシコンテキスト」として作成されます。このコンテキストモードでは、WebGLRenderingContextオブジェクトは実際にはメインブラウザスレッドで作成され、すべてのWebGL API呼び出しは、pthreadからメインスレッドへの非同期メッセージとしてプロキシされます。これは、OffscreenCanvasコンテキストと比較して、パフォーマンスとレイテンシに影響を与えますが、OffscreenCanvasベースのコンテキストとは異なり、プロキシコンテキストは任意の数のpthreadで共有できます。emscripten_webgl_make_context_current()
関数を任意のpthreadで使用して、WebGLコンテキストへのアクセスをアクティブ化および非アクティブ化できます。たとえば、WebGLローディングスレッドと、emscripten_webgl_make_context_current()
関数を使用してWebGLレンダリングコンテキストへのアクセスを協調的に取得および解放することによって、共有アクセスを調整するWebGLレンダリングスレッドを持つことができます。プロキシコンテキストはブラウザからの特別なサポートを必要としないため、WebGL対応のブラウザであれば、プロキシされたWebGLコンテキストを作成できます。
EMSCRIPTEN_WEBGL_CONTEXT_PROXY_ALWAYS
WebGLコンテキスト作成フラグは、ブラウザがOffscreenCanvasをサポートしている場合でも、常にプロキシコンテキストを作成します。ブラウザでサポートされている場合は、より高性能なOffscreenCanvasコンテキストを作成することを優先し、OffscreenCanvasをまだサポートしていないブラウザとの互換性を維持するためにプロキシされたWebGLコンテキストにフォールバックする場合、EMSCRIPTEN_WEBGL_CONTEXT_PROXY_FALLBACK
コンテキスト作成フラグを指定できます。このフラグを使用するには、コードを-sOFFSCREEN_FRAMEBUFFER
と-sOFFSCREENCANVAS_SUPPORT
の両方のリンカフラグを有効にしてコンパイルする必要があります。
emscripten_webgl_init_context_attributes()
を呼び出した後のproxyContextToMainThread
のデフォルト値は、WebGLコンテキストがメインスレッドで作成されている場合、EMSCRIPTEN_WEBGL_CONTEXT_PROXY_DISALLOW
です。これは、デフォルトではメインスレッドで作成されたWebGLコンテキストは複数のスレッド間で共有されないことを意味します(必要ない場合にプロキシを有効にすることによるパフォーマンスの低下を偶然回避するためです)。複数のpthread間で共有できるコンテキストを作成するには、proxyContextToMainThread
フラグをEMSCRIPTEN_WEBGL_CONTEXT_PROXY_ALWAYS
に設定します。
em_webgl_context_callback
¶WebGL コンテキスト イベント コールバック関数
のための関数ポインタで、以下のように定義されています。
typedef bool (*em_webgl_context_callback)(int eventType, const void *reserved, void *userData);
eventType (int) – WebGL コンテキスト イベント
のタイプ。
reserved (const void*) – 将来の使用のために予約されています。0 を渡してください。
userData (void*) – 登録関数に最初に渡されたuserData
。
true
(ゼロ以外)は、イベントがコールバックハンドラによって消費されたことを示します。
bool
emscripten_set_webglcontextlost_callback
(const char *target, void *userData, bool useCapture, em_webgl_context_callback callback)¶emscripten_set_webglcontextrestored_callback
(const char *target, void *userData, bool useCapture, em_webgl_context_callback callback)¶キャンバスのWebGLコンテキストイベント(webglcontextlost
とwebglcontextrestored
)に対するコールバック関数を登録します。
target (const char*) – ターゲットHTML要素ID。
userData (void*) – コールバックに渡されるユーザー定義データ(APIに対して不透明)。
useCapture (bool) – キャプチャを使用するにはtrue
を設定します。
callback (em_webgl_context_callback) – コールバック関数。この登録関数から渡されたイベントの種類、イベントに関する情報、ユーザーデータと共に呼び出されます。コールバックは、イベントが消費された場合にtrue
を返す必要があります。
EMSCRIPTEN_RESULT_SUCCESS
、またはその他の結果値のいずれか。
emscripten_is_webgl_context_lost
(EMSCRIPTEN_WEBGL_CONTEXT_HANDLE context)¶指定されたWebGLコンテキストがコンテキスト消失状態にあるかどうかを問い合わせます。
target (EMSCRIPTEN_WEBGL_CONTEXT_HANDLE) – テスト対象のコンテキストへのハンドルを指定します。
WebGLコンテキストが消失状態の場合(またはコンテキストが存在しない場合)true
bool
emscripten_webgl_init_context_attributes
(EmscriptenWebGLContextAttributes *attributes)¶WebGL 1.0で使用するためのデフォルト値に、指定されたEmscriptenWebGLContextAttributes
構造体のすべてのフィールドを設定します。
将来EmscriptenWebGLContextAttributes
構造体に新しいフィールドが追加された場合でも、コードを変更せずにデフォルトで初期化されるように、この関数を前方互換性のある方法として呼び出してください。
attributes (EmscriptenWebGLContextAttributes*) – 設定する構造体。
emscripten_webgl_create_context
(const char *target, const EmscriptenWebGLContextAttributes *attributes)¶新しいWebGLコンテキストを作成して返します。
注記
この関数を正常に呼び出しても、レンダリングコンテキストがすぐにアクティブになるわけではありません。アクティブにするには、コンテキストの作成後にemscripten_webgl_make_context_current()
を呼び出してください。
この関数は、 *正確に* 要求されたコンテキストバージョンを初期化しようとします。例えば、より新しい下位互換性のあるバージョンなどは初期化しません。
target (const char*) – WebGLコンテキストを初期化するDOMキャンバス要素。
attributes (const EmscriptenWebGLContextAttributes*) – 要求されたコンテキストバージョンの属性。
成功した場合、作成されたコンテキストへのハンドルを表すゼロ以外の値。失敗した場合、0。
emscripten_webgl_make_context_current
(EMSCRIPTEN_WEBGL_CONTEXT_HANDLE context)¶レンダリングのために指定されたWebGLコンテキストをアクティブにします。この関数を呼び出した後、すべてのOpenGL関数(glBindBuffer()
、glDrawArrays()
など)を指定されたGLコンテキストに適用できます。
context (EMSCRIPTEN_WEBGL_CONTEXT_HANDLE) – アクティブにするWebGLコンテキスト。
EMSCRIPTEN_RESULT_SUCCESS
、またはその他の結果値のいずれか。
emscripten_webgl_get_current_context
()¶現在アクティブなWebGLレンダリングコンテキストを返します。アクティブなコンテキストがない場合は0を返します。アクティブなレンダリングコンテキストがない状態でWebGL関数を呼び出すと、動作が未定義になり、JavaScript例外がスローされる可能性があります。
現在アクティブなWebGLレンダリングコンテキスト、またはアクティブなコンテキストがない場合は0。
emscripten_webgl_get_context_attributes
(EMSCRIPTEN_WEBGL_CONTEXT_HANDLE context, EmscriptenWebGLContextAttributes *outAttributes)¶指定されたWebGLコンテキストの初期化に使用されたコンテキスト作成属性を取得します。
context (EMSCRIPTEN_WEBGL_CONTEXT_HANDLE) – クエリ対象のWebGLコンテキスト。
*outAttributes (EmscriptenWebGLContextAttributes) – 指定されたコンテキストのコンテキスト作成属性がここに格納されます。このポインタはNULLにできません。
成功した場合、EMSCRIPTEN_RESULT_SUCCESS。
emscripten_webgl_commit_frame
()¶現在アクティブなWebGLコンテキストでレンダリングされたコンテンツを提示(「スワップ」)して、キャンバス上に表示します。この関数は、explicitSwapControl==true
コンテキスト作成属性を使用して作成されたWebGLコンテキストで使用できます。explicitSwapControl==false
の場合、レンダリングされたコンテンツは、呼び出し元のイベントハンドラからブラウザに戻ったときに「暗黙的に」画面に表示されます。
EMSCRIPTEN_RESULT_SUCCESS
、またはその他の結果値のいずれかで、失敗の理由を示します。
emscripten_webgl_get_drawing_buffer_size
(EMSCRIPTEN_WEBGL_CONTEXT_HANDLE context, int *width, int *height)¶指定されたWebGLコンテキストのdrawingBufferWidth
とdrawingBufferHeight
を取得します。
context (EMSCRIPTEN_WEBGL_CONTEXT_HANDLE) – 幅/高を取得するWebGLコンテキスト。
*width (int) – コンテキストのdrawingBufferWidth
。
*height (int) – コンテキストのdrawingBufferHeight
。
EMSCRIPTEN_RESULT_SUCCESS
、またはその他の結果値のいずれか。
emscripten_webgl_destroy_context
(EMSCRIPTEN_WEBGL_CONTEXT_HANDLE context)¶指定されたWebGLコンテキストを削除します。そのコンテキストがアクティブだった場合、アクティブなコンテキストは設定されません。
context (EMSCRIPTEN_WEBGL_CONTEXT_HANDLE) – 削除するWebGLコンテキスト。
EMSCRIPTEN_RESULT_SUCCESS
、またはその他の結果値のいずれか。
emscripten_webgl_enable_extension
(EMSCRIPTEN_WEBGL_CONTEXT_HANDLE context, const char *extension)¶指定されたコンテキストで指定された拡張機能を有効にします。
コンテキスト (EMSCRIPTEN_WEBGL_CONTEXT_HANDLE) – 拡張機能を有効にするWebGLコンテキスト。
拡張機能 (const char*) – WebGL拡張機能を識別する文字列。例えば "OES_texture_float"。
指定された拡張機能がコンテキストでサポートされている場合はtrue、そうでない場合はfalse。
bool
emscripten_set_canvas_element_size
(const char *target, int width, int height)¶DOM内の指定されたCanvas要素のピクセル幅と高さを変更します。
target – サイズを変更するcanvasのセレクタを指定します。
width – canvas要素の新しいピクセル幅。
height – canvas要素の新しいピクセル高さ。
サイズ変更に成功した場合はEMSCRIPTEN_RESULT_SUCCESS、失敗した場合はEMSCRIPTEN_RESULT_*エラー値のいずれか。
emscripten_get_canvas_element_size
(const char *target, int *width, int *height)¶DOM内の指定されたCanvas要素の現在のピクセル幅と高さを取得します。
target – サイズを変更するcanvasのセレクタを指定します。
width – canvas要素の幅を受け取るメモリ位置へのポインタ。このポインタはNULLであってはなりません。
height – canvas要素の高さを受け取るメモリ位置へのポインタ。このポインタはNULLであってはなりません。
幅と高さの取得に成功した場合はEMSCRIPTEN_RESULT_SUCCESS、失敗した場合はEMSCRIPTEN_RESULT_*エラー値のいずれか。
emscripten_set_element_css_size
(const char * target, double width, double height)¶Emscriptenウェブページ上のtarget
で指定された要素のCSS幅と高さを変更します。
target (const char*) – サイズを変更する要素。
width (double) – 要素の新しい幅。
height (double) – 要素の新しい高さ。
EMSCRIPTEN_RESULT_SUCCESS
、またはその他の結果値のいずれか。
emscripten_get_element_css_size
(const char * target, double * width, double * height)¶target
で指定された要素の現在のCSS幅と高さを取得します。
target (const char*) – サイズを取得する要素。
width (double*) – 要素の幅。
height (double*) – 要素の高さ。
EMSCRIPTEN_RESULT_SUCCESS
、またはその他の結果値のいずれか。
ここで提供されるAPIは、関連するWeb APIを直接呼び出す低レベル関数であり、それ以上の機能はありません。プログラムが停止しているかどうかをチェックしたり、その場合にコールバックをキャンセルするなど、emscriptenランタイムと統合されていません。その目的には、関数emscripten_set_main_loop()
を参照してください。
emscripten_set_timeout
(void (*cb)(void *userData), double msecs, void *userData)¶呼び出しスレッド上で指定された関数にsetTimeout()
コールバック呼び出しを実行します。
cb – 呼び出すコールバック関数。
msecs – コールバックが実行されるまでのミリ秒単位の遅延。
userData – コールバック関数に渡されるカスタムデータのポインタサイズフィールドを指定します。
setTimeout()
呼び出しのID。保留中のタイムアウトタイマーをキャンセルするためにemscripten_clear_timeout()
に渡すことができます。
emscripten_clear_timeout
(long setTimeoutId)¶呼び出しスレッド上の保留中のsetTimeout()
呼び出しをキャンセルします。この関数は、コールバックを登録したemscripten_set_timeout()
呼び出しと同じスレッドで呼び出す必要があります。
setTimeoutId – 関数emscripten_set_timeout()
によって返されるID。
emscripten_set_timeout_loop
(bool (*cb)(double time, void *userData), double intervalMsecs, void *userData)¶呼び出しスレッド上の指定された関数でsetTimeout()
ループを初期化します。指定されたコールバック関数「cb」は、アニメーションループが継続して実行される限りtrue
を返し続ける必要があります。関数がfalseを返すと、setTimeout()
ループは停止します。注:ループは0ミリ秒の遅延で直ちに開始されます。渡されたintervalMsecs時間は、連続するコールバック呼び出しが実行される間隔を指定します。
cb – 呼び出すコールバック関数。
intervalMsecs – コールバックが継続して実行されるミリ秒単位の間隔。
userData – コールバック関数に渡されるカスタムデータのポインタサイズフィールドを指定します。
emscripten_request_animation_frame
(bool (*cb)(double time, void *userData), void *userData)¶呼び出しスレッド上の指定された関数に単一のrequestAnimationFrame()
コールバック呼び出しを実行します。
cb – 呼び出すコールバック関数。この関数は、呼び出し時の現在の高精度タイマー値(performance.now()
の値)を受け取ります。
userData – コールバック関数に渡されるカスタムデータのポインタサイズフィールドを指定します。
requestAnimationFrame()
呼び出しのID。保留中のrequestAnimationFrame
タイマーをキャンセルするためにemscripten_cancel_animation_frame()
に渡すことができます。
emscripten_cancel_animation_frame
(long requestAnimationFrameId)¶実行される前に、呼び出しスレッド上で登録されたrequestAnimationFrame()
コールバックをキャンセルします。この関数は、コールバックを登録したemscripten_request_animation_frame()
呼び出しと同じスレッドで呼び出す必要があります。
requestAnimationFrameId – 関数emscripten_request_animation_frame()
によって返されるID。
emscripten_request_animation_frame_loop
(bool (*cb)(double time, void *userData), void *userData)¶呼び出しスレッド上の指定された関数でrequestAnimationFrame()
ループを初期化します。指定されたコールバック関数「cb」は、アニメーションループが継続して実行される限りtrue
を返し続ける必要があります。関数がfalseを返すと、アニメーションフレームループは停止します。
cb – 呼び出すコールバック関数。この関数は、呼び出し時の現在の高精度タイマー値(performance.now()
の値)を受け取ります。
userData – コールバック関数に渡されるカスタムデータのポインタサイズフィールドを指定します。
emscripten_set_immediate
(void (*cb)(void *userData), void *userData)¶呼び出しスレッド上の指定された関数にsetImmediate()
コールバック呼び出しを実行します。setImmediate()
呼び出しのIDを返します。保留中のsetImmediate()
呼び出しをキャンセルするためにemscripten_clear_immediate()
関数に渡すことができます。TODO: 現在、setImmediate()
のポリフィルはメインブラウザスレッドでのみ機能し、pthreadでは機能しません。
cb – 呼び出すコールバック関数。
userData – コールバック関数に渡されるカスタムデータのポインタサイズフィールドを指定します。
setImmediate()
呼び出しのID。保留中のコールバックをキャンセルするためにemscripten_clear_immediate()
に渡すことができます。
emscripten_clear_immediate
(long setImmediateId)¶呼び出しスレッド上の保留中のsetImmediate()
呼び出しをキャンセルします。この関数は、コールバックを登録したemscripten_set_immediate()
呼び出しと同じスレッドで呼び出す必要があります。
setImmediateId – 関数emscripten_set_immediate()
によって返されるID。
emscripten_set_immediate_loop
(bool (*cb)(void *userData), void *userData)¶呼び出しスレッド上の指定された関数でsetImmediate()
ループを初期化します。指定されたコールバック関数「cb」は、ループの実行を継続する限りtrue
を返し続ける必要があります。関数がfalseを返すと、setImmediate()
ループは停止します。TODO: 現在のsetImmediate()
のポリフィルは、メインブラウザスレッドでのみ機能し、pthreadでは機能しません。
cb – 呼び出すコールバック関数。
userData – コールバック関数に渡されるカスタムデータのポインタサイズフィールドを指定します。
emscripten_set_interval
(void (*cb)(void *userData), double intervalMsecs, void *userData)¶呼び出しスレッド上の指定された関数でsetInterval()
ループを初期化します。初期化されたループのIDを返します。ループを終了するには、このIDを使用してemscripten_clear_interval()
を呼び出します。この関数は、指定されたコールバックを繰り返し呼び出す原因となることに注意してください。コールバック内から同じコールバック関数に対してemscripten_set_interval()
を再度呼び出さないでください。これは、同時に実行される複数のループを登録することになります。
cb – 呼び出すコールバック関数。
intervalMsecs – コールバックが継続して実行されるミリ秒単位の間隔。
userData – コールバック関数に渡されるカスタムデータのポインタサイズフィールドを指定します。
実行中のintervalタイマーをキャンセルするためにemscripten_clear_interval()に渡すことができる、setInterval()呼び出しへのID。
emscripten_clear_interval
(long setIntervalId)¶呼び出しスレッド上の現在実行中のsetInterval()
ループをキャンセルします。この関数は、コールバックを登録したemscripten_set_interval()
呼び出しと同じスレッドで呼び出す必要があります。
setIntervalId – 関数emscripten_set_interval()
によって返されるID。
emscripten_date_now
(void)¶現在のスレッドでJavaScriptのDate.now()
関数を呼び出します。
UNIXエポック(1970年1月1日木曜日 00:00:00)からの経過ミリ秒数。
emscripten_performance_now
(void)¶現在のスレッドでJavaScriptのperformance.now()
関数を呼び出します。この関数の戻り値は、関数が呼び出されたスレッドによって異なる時間オフセットに基づいていることに注意してください。つまり、スレッド間でperformance.now()によって返される絶対的な時間値を比較しないでください。(相対的な時間値の比較は問題ありません)。メインスレッドでは、この関数はページの起動時間からの経過ミリ秒数を返します。Web Worker/pthreadでは、この関数は、そのpthreadをホストしているWorkerの起動からの経過ミリ秒数を返します。(Workerは、pthreadが終了して2番目のpthreadが開始したときに一般的に破棄されませんが、プールで存続されるため、この関数はpthreadの開始時に0から時間計測を開始することが保証されていません)。
ミリ秒単位の高精度なウォールクロック時間値。
emscripten_throw_number
(double number)¶JavaScriptのthrow文を呼び出し、数値をスローします。
emscripten_throw_string
(const char *utf8String)¶JavaScriptのthrow文を呼び出し、文字列をスローします。
emscripten_unwind_to_js_event_loop
(void)¶スタックをアンワインドし、実行をブラウザのイベントループに戻すJavaScript例外をスローします。この関数は、呼び出し元のコードに実行を戻しません。
この関数は、無限ループに入るコードを移植する場合に役立ちます。Webでは許可されていない無限ループを実際に実行する代わりに、ループの本体を非同期的に実行するように設定し(emscripten_set_main_loop()
などを使用)、この関数を呼び出して実行を停止することができます。これは、実行が正常に継続しないようにするため重要です。