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>