> ## Documentation Index
> Fetch the complete documentation index at: https://devdocs.xbox.com/llms.txt
> Use this file to discover all available pages before exploring further.

# XGameStreamingSetResolution

> XGameStreamingSetResolution

# XGameStreamingSetResolution

Définit la résolution de la diffusion en continu.

## Syntaxe

```cpp theme={null}
HRESULT XGameStreamingSetResolution(
        uint32_t width,
        uint32_t height
)
```

### Paramètres

*width*   \_In\_\
Type : uint32\_t

Largeur à appliquer à la résolution de la diffusion en continu.

*height*   \_In\_\
Type : uint32\_t

Hauteur à appliquer à la résolution de la diffusion en continu.

### Valeur de retour

Type : HRESULT

Retourne **S\_OK** en cas de réussite; sinon, retourne un code d'erreur.

#### Erreurs potentielles

| Code d'erreur | Valeur d'erreur | Cause de l'erreur |
| - | - | - |
| E\_GAMESTREAMING\_NOT\_INITIALIZED | 0x89245400 | Le runtime XGameStreaming n'a pas été initialisé. Appelez XGameStreamingInitialize avant d'appeler d'autres API. |
| E\_INVALIDARG | 0x80070057 | Le paramètre *width* ou *height* (ou les deux), ou le matériel, ne répondait pas aux exigences. |

Pour obtenir la liste des codes d'erreur, consultez [Codes d'erreur](/fr-CA/reference/errorcodes).

## Remarques

Avec des résolutions non standard, cette API ne réussira que sur les serveurs XBOX Game Streaming, la XBOX Series X Dev Kit et la XBOX Series S Test Kit. Les résolutions standard comme 720p et 1080p réussiront quel que soit le matériel. La raison est qu'une XBOX commerciale ne peut diffuser en continu que par la lecture à distance (Remote Play) et peut encore transmettre la vidéo au téléviseur; l'utilisation d'une résolution non standard produirait donc une image déformée.

La largeur et la hauteur doivent être d'au moins 640x360, et le maximum se trouve dans les champs `maxWidth` et `maxHeight` de la structure [XGameStreamingDisplayDetails](/fr-CA/reference/system/xgamestreaming/structs/xgamestreamingdisplaydetails), qui peut être obtenue à partir de [XGameStreamingGetDisplayDetails](/fr-CA/reference/system/xgamestreaming/functions/xgamestreaminggetdisplaydetails).

Le nombre maximal de pixels, calculé à partir de `width` \* `height`, doit être inférieur ou égal au maximum de l'encodeur. Ce maximum peut être obtenu à l'aide de l'API [XGameStreamingGetDisplayDetails](/fr-CA/reference/system/xgamestreaming/functions/xgamestreaminggetdisplaydetails). Cette valeur pourrait être augmentée à l'avenir.

Les valeurs `width` et `height` doivent être divisibles par 8.

L'API peut être appelée aussi souvent que souhaité, mais la résolution de la diffusion en continu ne peut changer qu'une fois toutes les 200 ms. La dernière résolution parmi les appels effectués dans cette fenêtre de 200 ms sera appliquée une fois la fenêtre écoulée.

Sachez que cette API définit la résolution de la diffusion en continu pour tous les clients connectés. Il faut donc porter une attention particulière pour déterminer la meilleure option pour le jeu lorsque plusieurs clients sont connectés. Cela peut signifier utiliser une résolution standard 16:9 ou tenter de trouver la résolution qui convient le mieux à tous les clients.

<Note>La modification de la résolution de la diffusion en continu modifie la mise à l'échelle du rectangle d'affichage dans `ID3D12CommandQueue::PresentX`. Les facteurs d'échelle de 0,0 à 1,0 de `D3D12XBOX_PRESENT_PLANE_PARAMETERS.pDestPlacementBase` se rapportent à la hauteur et à la largeur passées à `XGameStreamingSetResolution`, plutôt qu'à la résolution standard de 1920x1080 ou 3840x2160 à laquelle ils se rapporteraient autrement.  </Note>

## Exemple

```C++ theme={null}

#define DEFAULT_GAME_WIDTH 1920
#define DEFAULT_GAME_HEIGHT 1080

#define GAME_WIDEST_SUPPORTED_ASPECT_RATIO 21.5f / 9.0f
#define GAME_TALLEST_SUPPORTED_ASPECT_RATIO 16.0f / 10.0f

static uint32_t s_currentStreamWidth = DEFAULT_GAME_WIDTH;
static uint32_t s_currentStreamHeight = DEFAULT_GAME_HEIGHT;

// Option 1: Event driven. Note: be aware of potential threading issues when using the task queue.
void GameStreamingClientManager::OnConnectionStateChanged(XGameStreamingClientId client, XGameStreamingConnectionState connected)
{
    // Other connection work like registering or unregistering for the client properties change events.
    ...

    UpdateResolutionIfNeeded();
}

void GameStreamingClientManager::OnClientPropertiesChanged(
    XGameStreamingClientId client,
    uint32_t updatedPropertiesCount,
    XGameStreamingClientProperty* updatedProperties)
{
    for (uint32_t i = 0; i < updatedPropertiesCount; ++i)
    {
        switch (updatedProperties[i])
        {
        case XGameStreamingClientProperty::DisplayDetails:
        {
            UpdateResolutionIfNeeded();
            break;
        }

        default:
            // A characteristic we are not tracking - do nothing
            break;
        }
    }
}

// Option 2: Polling.

void Game::Update(DX::StepTimer const& timer)
{
    ...

    gameStreamingClientManager->UpdateResolutionIfNeeded();

    ...
}

void GameStreamingClientManager::UpdateResolutionIfNeeded()
{
    bool changeResolution = false;
    bool useDefaultResolution = true;

    // Only use custom resolution when there is only one streaming client connected.
    if (XGameStreamingGetClientCount() == 1)
    {
        XGameStreamingClientId client;
        uint32_t clientsUsed = 0;
        HRESULT hr = XGameStreamingGetClients(1, &client, &clientsUsed);
        if (SUCCEEDED(hr) && clientsUsed == 1)
        {
            XGameStreamingDisplayDetails displayDetails = {};
            hr = XGameStreamingGetDisplayDetails(client, DEFAULT_GAME_WIDTH * DEFAULT_GAME_HEIGHT, GAME_WIDEST_SUPPORTED_ASPECT_RATIO, GAME_TALLEST_SUPPORTED_ASPECT_RATIO, &displayDetails);

            if (SUCCEEDED(hr))
            {
                useDefaultResolution = false;

                // Assuming the game supports all resolutions, use the stream resolution to the preferred dimensions as provided.
                if (s_currentStreamWidth != displayDetails.preferredWidth || s_currentStreamHeight != displayDetails.preferredHeight)
                {
                    changeResolution = true;
                    s_currentStreamWidth = displayDetails.preferredWidth;
                    s_currentStreamHeight = displayDetails.preferredHeight;
                }
            }
            else
            {
                LogFormat(L"XGameStreamingGetDisplayDetails failed %x", hr);
            }
        }
        else
        {
            LogFormat(L"XGameStreamingGetClients failed hr=%x clientsUsed=%d", hr, clientsUsed);
        }
    }

    if (useDefaultResolution)
    {
        if (s_currentStreamWidth != DEFAULT_GAME_WIDTH || s_currentStreamHeight != DEFAULT_GAME_HEIGHT)
        {
            changeResolution = true;
            s_currentStreamWidth = DEFAULT_GAME_WIDTH;
            s_currentStreamHeight = DEFAULT_GAME_HEIGHT;
        }
    }

    if (changeResolution)
    {
        // Update the stream to the new resolution.
        HRESULT hr = XGameStreamingSetResolution(s_currentStreamWidth, s_currentStreamHeight);
        if (SUCCEEDED(hr))
        {
            // Update the game to render at the new resolution.
        }
        else
        {
            LogFormat(L"XGameStreamingSetResolution failed %x", hr);
        }
    }
}

```

## Configuration requise

**En-tête :** xgamestreaming.h\
**Bibliothèque :** xgameruntime.lib\
**Plateformes prises en charge :** Windows, consoles de la famille XBOX One et consoles XBOX Series

## Voir aussi

[XGameStreaming](/fr-CA/reference/system/xgamestreaming/xgamestreaming_members)\
[XGameStreamingDisplayDetails](/fr-CA/reference/system/xgamestreaming/structs/xgamestreamingdisplaydetails)\
[XGameStreamingGetDisplayDetails](/fr-CA/reference/system/xgamestreaming/functions/xgamestreaminggetdisplaydetails)\
[Vue d'ensemble de la résolution personnalisée](/fr-CA/build/core-features/common/game-streaming/game-streaming-custom-resolution-overview)


## Related topics

- [XGameStreamingSetResolution](/reference/system/xgamestreaming/functions/xgamestreamingsetresolution.md)
- [Best Practices for Game Streaming Custom Resolution](/build/core-features/common/game-streaming/game-streaming-custom-resolution-best-practices.md)
- [Custom Resolution Overview](/build/core-features/common/game-streaming/game-streaming-custom-resolution-overview.md)
- [XGameStreaming](/reference/system/xgamestreaming/xgamestreaming_members.md)
- [Testing With Custom Resolution](/build/core-features/common/game-streaming/game-streaming-testing-custom-resolution.md)
