XGameStreamingGetDisplayDetails と XGameStreamingSetResolution なしで、さまざまなデバイスにレンダリングされるゲーム
一方、次の画像は、上記の API を使用してアスペクト比を 4:3 に設定した場合、同じゲームがさまざまなデバイスでどのようにレンダリングされるかを示しています。タブレットでレンダリングするときに余白がなくなっている点に注目してください。
図 2. XGameStreamingGetDisplayDetails と XGameStreamingSetResolution を使用して、さまざまなデバイスにレンダリングされるゲーム
XGameStreamingGetDisplayDetails は、指定されたクライアントのディスプレイ詳細を返します。これは、レンダリングするカスタム アスペクト比や、DirectCapture を有効にするために使用する解像度など、情報に基づいた判断を行うために使用できます。DirectCapture は、タイトルが互換性のあるフレームを提示したときにサーバー レイテンシーを最小化し、約 16 〜 72 ミリ秒のレイテンシーを排除するために構築されました。このレイテンシーの削減量は、ゲームのレンダリング出力に依存するため、ゲームごとに異なります。
XGameStreamingSetResolution は、タイトルが解像度を決定した後に使用します。この API はストリームの解像度を設定します。
これらの API は、DirectCapture の要件とクライアントの推奨解像度を公開しており、さまざまなタイトルがそれらを採用できるようにします。
DirectCapture の最小 / 最大要件やその他のルールに従う必要があります。
API を正しく使用する方法
- ストリームを接続する
-
ディスプレイの詳細を取得する
ディスプレイの詳細を取得するには、ゲームは
XGameStreamingGetDisplayDetailsを呼び出せます。これは指定したクライアントのディスプレイ詳細を返します。 -
解像度を選択する
これはゲームによります。以下のようないくつかの選択肢があります。
a. 最適な一致として
preferredWidth/preferredHeightを使用します。 b.XGameStreamingDisplayDetailsを使用して、事前に構成されたテスト済みの解像度セットから最も近い一致を見つけます。 c. ゲームの PC 版で解像度ピッカーをオンにして、プレイヤーが解像度を選択できるようにします。maxWidthmaxHeightおよびmaxPixelsの範囲内の解像度に制限することを検討してください。 -
ストリーム解像度を設定する
XGameStreamingSetResolutionを呼び出して、新しいレンダリング解像度にストリーミング解像度を変更します。ストリーム開始、リサイズ、デバイス回転アクションなど、ユーザーのアクションに応じて呼び出すのが最適です。 この解像度は preferredWidth/preferredHeight と一致する必要はないことに注意してください。一致しない場合、ストリームは画面に合わせて拡大縮小され、残りのスペースを埋めるためにレターボックスまたはピラーボックスが追加される場合があります。[!NOTE] ストリーム解像度の設定には時間がかかり、限られたリソースを使用し、プレイヤーに見える影響があるため、この API はまれにしか呼び出さないことに注意してください。たとえば、新しいクライアントが接続したときや、その推奨解像度が変更されたときなどです。
XGameStreamingSetResolutionを 200 ミリ秒に 1 回以上呼び出すと、一時的な引き伸ばしが発生します。この API はリアルタイム セーフではありません。 - レンダリングを開始する カスタム解像度のレンダリングは、他の解像度のレンダリングと同じである必要があります。ウィンドウ サイズを設定し、新しい解像度でバック バッファーを構成します。
