User Manual

デバイスピクセル比率( (DPI)

デバイスピクセル比率(Device Pixel Ratio)は、ハードウェアスクリーン上の物理的なピクセルと、論理的なピクセル(スクリーンの物理的なサイズに関連した、CSSによる)の比率です。

プロジェクト設定でDevice Pixel Ratio を有効にすることで、アプリケーションをスクリーンのネイティブ解像度でレンダリングし、非常に鮮明に見えるようになります。しかし、それはそれに対してパフォーマンスコストがかかります。つまり、毎フレームの描画に必要なピクセルが増えます。 Project setting

Device Pixel Ratioが有効になっている場合、解像度が高いスクリーンを備えた低/中級モバイルデバイスなどでは問題が生じる可能性があります。ハードウェアのフィルレート制限のため、デバイスピクセル比率を有効にすると低いフレームレートが発生する可能性があります。 Device Pixel Ratio

理想的には、高性能のデバイスのユーザーは最高品質でレンダリングし、低性能デバイスであってもプレイ可能なフレームレートを維持するために比率を減らせる、両方の利点を兼ね備えた状態にしたいものです。

理想的には、高性能デバイスのユーザーは最高品質でレンダリングし、低性能デバイスのユーザーはフレームレートを維持するために比率を下げるという、両方の良い点を得ることができます。

デバイスピクセル比は、プロパティpc.GraphicsDevice#maxPixelRatioを使ってランタイムで変更することができます。

var device = pc.Application.getApplication().graphicsDevice;
if (highTierDevice) {
    // Use the default device pixel ratio of the device
    device.maxPixelRatio = window.devicePixelRatio;
} else {
    // Use the CSS resolution device pixel ratio
    device.maxPixelRatio = 1;
}

難しいのは、デバイスの性能能力を見極めることで、これは以下のいずれかの方法で行うことができます:

GPUについての情報を得るためには、プロパティ pc.GraphicsDevice#unmaskedRenderer を使用します。これは情報を含む文字列を含むか、ブラウザがプロパティをサポートしていない場合は空の文字列になります。

文字列には次のようなものが含まれます。

ANGLE (NVIDIA GeForce GTX 1050 Direct3D11 vs_5_0 ps_5_0)

異なるGPUカードのベンチマークは、Video Card BenchmarkNotebook Check Smartphone and Tablet listで見つけることができ、各GPUの能力を判断するのに役立ちます。しかし、利用可能なGPUカードの数が非常に多いため、デバイスの能力を評価するのは非常に難しいです。

モバイルの例は以下にあります(記述時点での情報、2020年7月30日(木))。

function isLowQualityGPU() {
    var renderer = pc.Application.getApplication().graphicsDevice.unmaskedRenderer;

    // Only check the GPU if we are on mobile
    if (renderer && pc.platform.mobile) {
        // low level GPU's
        if(renderer.search(/Adreno\D*3/) !== -1 ||
           renderer.search(/Adreno\D*4/) !== -1 ||
           renderer.search(/Adreno\D*505/) !== -1 ||
           renderer.search(/Adreno\D*506/) !== -1 ||
           renderer.search(/Mali\D*4/) !== -1 ||
           renderer.search(/Mali\D*5/) !== -1 ||
           renderer.search(/Mali\D*6/) !== -1 ||
           renderer.search(/Mali\D*T7/) !== -1 ||
           renderer.search(/Mali\D*T82/) !== -1 ||
           renderer.search(/Mali\D*T83/) !== -1)
        {
            return true;
        }
    }

    return false;
};

また、ユーザーが品質レベルを切り替えることができるオプションをアプリケーションに設けることをお勧めします。これにより、ユーザーは自分が快適に感じるレベルを選択し、デバイスのリソースを節約しバッテリー寿命を延ばすために品質を下げることも可能になります。

This site is translated by the community. If you want to get involved visit this page