コンテンツにスキップ

detectCapabilities()

detectCapabilities(gl?): Readonly<Capabilities>

UserAgent と WebGL2 capability から、端末の能力の判定材料を返す。

優先度: 1. gl に null (WebGL2 コンテキスト生成に失敗) → weak / high (webgl2_missing)。MINIMAL (iOS でも同じ。UA より確かな事実なので先に見る) 2. iPhone / iPod → weak / high (ios)。IOS_MOBILE 3. iPad (iPadOS Mac 偽装含む)。Safari 版数が 17 以上なら standard / low (ios_safari_17_or_newer)、 それ以外 (16 以下・不明) は weak / low (ios_safari_16_or_older)。どちらも IOS_MOBILE (古い iPad と M シリーズの iPad を見分けられないため、多数を占める現行の世代に合わせる) 4. 同時に使えるテクスチャ数が 18 未満 (MAX_COMBINED_TEXTURE_IMAGE_UNITS) → weak / high (few_texture_units)。IOS_MOBILE 相当 5. WebGL2 が極端に貧弱 (max texture size < 4096 等) → weak / high (max_texture_size_below_4096)。MINIMAL 6. 同時に使えるテクスチャ数が 25 未満 (MAX_COMBINED_TEXTURE_IMAGE_UNITS) → standard / high (few_texture_units)。DESKTOP_STANDARD 7. gl を省略 (WebGL2 の能力を確認していない) → unknown / low。DESKTOP_STANDARD 8. それ以外 (gl 確認済みで上記に当たらない) → standard / high。DESKTOP_STANDARD

WEBGL_compressed_texture_s3tc の有無 (no_s3tc) は、gl を渡したときは分岐 2〜6、8 で 判定とは無関係に根拠へ追加する (tier は変えない)。

features.tiles3d を unsupported にするのは確度 high の GL 上の制約 (webgl2_missing、max_texture_size_below_4096) のときだけ。他の weak 判定は、 既製プロファイルが 3D Tiles を使える設定を持つため limited にする。

DESKTOP_ULTRA と iPad の各段 (IPAD_LOW 等) は自動判定では返さない (機種特定が困難)。 ハイエンド向けはアプリ側で UI 切替する想定。

Viewer 生成時に 1 回だけ呼ばれる想定で、毎フレーム呼ばない (Viewer.device_capabilities)。

Parameters

Parameter Type
gl? null | WebGL2RenderingContext

Returns

Readonly<Capabilities>