> ## 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.

# SetFrameIntervalX (famille XBOX One)

> Établit la durée de l'intervalle et la période d'une trame.

Établit la durée de l'intervalle et la période d'une trame.

## Syntaxe

```cpp theme={null}
HRESULT SetFrameIntervalX(
        IDXGIOutput* pOutputSyncTarget,
        UINT LengthInMicroseconds,
        UINT PeriodInIntervals,
        D3D12XBOX_FRAME_INTERVAL_FLAGS Flags)
```

### Paramètres

*pOutputSyncTarget*   \_In\_opt\_\
Type : [IDXGIOutput](https://learn.microsoft.com/en-us/windows/win32/api/dxgi/nn-dxgi-idxgioutput)\*

Interface de sortie d'adaptateur qui identifie l'écran dont la fréquence d'actualisation et la synchronisation doivent servir de base de synchronisation pour la planification des trames. Pour utiliser l'adaptateur par défaut, passez null.

*LengthInMicroseconds*   \_In\_\
Type : UINT

Durée de l'intervalle de trame, en microsecondes. La durée définit la fréquence à laquelle les trames seront présentées pour l'affichage.

*PeriodInIntervals*   \_In\_\
Type : UINT

Période de la trame, en intervalles. La période définit le nombre d'intervalles entre l'origine d'une trame et le moment où elle est présentée pour l'affichage. La période est basée sur la profondeur souhaitée du pipeline de trames : c'est-à-dire de combien le rendu CPU est autorisé à prendre de l'avance sur l'affichage des trames.

*Flags*   \_In\_\
Type : [D3D12XBOX\_FRAME\_INTERVAL\_FLAGS](/fr/reference/graphics/d3d12_x/enums/d3d12xbox_frame_interval_flags)

Indicateurs utilisés pour fournir un contrôle supplémentaire sur l'intervalle établi. En fonctionnement normal, cet indicateur doit toujours être défini sur *D3D12XBOX\_FRAME\_INTERVAL\_FLAG\_NONE*.  Pour la prise en charge de plus de 60 FPS, l'indicateur *D3D12XBOX\_FRAME\_INTERVAL\_FLAG\_60FPS\_PLUS* peut être utilisé.

### Valeur de retour

Type : HRESULT

Code de réussite ou d'erreur HRESULT.

Renvoie S\_FALSE pour indiquer que l'appel a réussi mais que le nouvel intervalle de trame n'est pas encore en vigueur. Il prendra effet lors du prochain appel à [ScheduleFrameEventX](/fr/reference/graphics/d3d12_x/interfaces/id3d12device/methods/id3d12device_scheduleframeeventx), dont le *Type* doit être *D3D12XBOX\_FRAME\_EVENT\_ORIGIN*.

Renvoie E\_INVALIDARG en cas de valeurs d'intervalle, de période ou d'indicateur non prises en charge.

## Remarques

La durée de l'intervalle de trame détermine la fréquence de présentation et spécifie la cadence à laquelle les trames seront rendues et envoyées à l'écran. Les durées d'intervalle les plus courantes incluent les définitions de préprocesseur suivantes :

```cpp theme={null}
#define D3D12XBOX_FRAME_INTERVAL_120_HZ   8333
#define D3D12XBOX_FRAME_INTERVAL_60_HZ   16667
#define D3D12XBOX_FRAME_INTERVAL_40_HZ   25000
#define D3D12XBOX_FRAME_INTERVAL_30_HZ   33333
```

Les durées d'intervalle de trame qui sont un multiple de 16 666 microsecondes, comme 60 Hz et 30 Hz, sont toujours autorisées avec tous les écrans et toutes les configurations.  En revanche, les durées d'intervalle de trame qui sont un multiple de 8 333 microsecondes, comme 120 Hz et 40 Hz, ne doivent être utilisées que lorsque l'écran et la console prennent en charge cette configuration.  Cela peut être vérifié à l'aide de la méthode [IDXGIOutput::GetDisplayModeList](https://learn.microsoft.com/en-us/windows/win32/api/dxgi/nf-dxgi-idxgioutput-getdisplaymodelist) au lancement de l'application.

En outre, les durées d'intervalle qui établissent des fréquences d'actualisation de 20 Hz et 15 Hz sont également autorisées.

Les titres qui souhaitent cibler une durée d'intervalle de trame comprise entre 60 Hz et 120 Hz peuvent le faire avec l'indicateur `D3D12XBOX_FRAME_INTERVAL_FLAG_60FPS_PLUS`.  Pour plus de détails, consultez [D3D12XBOX\_FRAME\_INTERVAL\_FLAGS](/fr/reference/graphics/d3d12_x/enums/d3d12xbox_frame_interval_flags).

Les durées d'intervalle de trame sont établies comme des multiples entiers de l'intervalle d'actualisation de l'écran et sont alignées sur les limites de vblank. C'est pourquoi la durée en microsecondes n'est pas une directive stricte qui établit le temps exact entre les intervalles ; il s'agit plutôt d'une valeur qui communique la durée d'intervalle souhaitée. Lorsqu'elle se situe dans un certain seuil, elle est mappée au multiple le plus proche de la fréquence d'actualisation de l'écran. Par exemple, une durée de trame définie de 33 333 microsecondes peut en réalité produire une durée d'intervalle de 33 367 microsecondes si la fréquence d'actualisation de l'écran est de 29,97 Hz au lieu de 30 Hz.

Cependant, l'intervalle défini sera utilisé comme base pour la planification des événements de trame (voir [ScheduleFrameEventX](/fr/reference/graphics/d3d12_x/interfaces/id3d12device/methods/id3d12device_scheduleframeeventx)), où le décalage en microsecondes est exprimé en fonction de la durée fournie à SetFrameIntervalX, et non de la valeur à laquelle cette durée a été mappée en interne. Par exemple, un décalage d'heure d'origine planifié de 16 666 microsecondes utilisé avec une durée d'intervalle définie de 33 333 microsecondes sera converti en interne en un décalage réel de 16 684 microsecondes lorsque la fréquence d'actualisation de l'écran est de 29,97 Hz ; cela préserve l'intention de planifier l'origine au milieu de la trame.

La période de la trame (en intervalles) établit la durée maximale d'une trame entre son origine et son affichage, et elle peut être définie sur une valeur comprise entre 1 et 4 inclus. Cette période est basée sur le chevauchement attendu du rendu CPU et GPU, et elle contrôle le moment où le CPU doit être limité en fonction du nombre de trames en cours. Une période de 1 indique qu'une trame sera démarrée et terminée dans le même intervalle ; cela ne prendra pas plus de *LengthInMicroseconds*. Une période de *n* indique qu'une trame sera démarrée sur un intervalle de trame et terminée *n* - 1 intervalles plus tard. En termes de latence, une trame sera généralement maintenue à moins de *PeriodInIntervals* x *LengthInMicroseconds* microsecondes de latence entre son démarrage et le moment où elle atteint l'écran, en supposant qu'aucun vblank n'est manqué.

La durée d'un intervalle de trame et sa période servent à établir une échéance d'affichage pour une trame. Si la trame n'est pas terminée et présentée pour l'affichage avant la fin de l'intervalle situé *PeriodInIntervals* - 1 intervalles après son origine, la trame suivante sera limitée et ne pourra pas commencer tant que la trame manquée n'aura pas été présentée et basculée vers l'écran. Cela permet d'éviter l'introduction d'intervalles de latence supplémentaires en cas de vblanks manqués ; lorsqu'une trame manque son échéance de présentation, elle est généralement retenue pour l'affichage jusqu'au prochain vblank auquel elle est prête (pour éviter le déchirement). Retarder du même délai le démarrage CPU de la trame suivante empêche l'échantillonnage trop précoce des entrées et préserve les garanties de latence établies par l'intervalle et la période de trame définis.

Les paramètres initiaux de l'intervalle de trame sont appliqués lors de la première planification de l'événement d'origine de trame. Les mises à jour ultérieures sont mises en pipeline avec la présentation, de sorte que les modifications apportées au cours d'un intervalle sont appliquées lorsque la prochaine trame présentée est basculée vers l'écran.

## Configuration requise

**En-tête :** d3d12\_x.h

**Bibliothèque :** d3d12\_x.lib

**Plateformes prises en charge :** famille XBOX One

## Voir aussi

[IDXGIOutput](https://learn.microsoft.com/en-us/windows/win32/api/dxgi/nn-dxgi-idxgioutput)


## Related topics

- [SetShapeDmaNumFrames](/fr/reference/audio/shapedmacontext/functions/setshapedmanumframes.md)
- [Méthode GetMinUpdateIntervalInMicroseconds](/fr/reference/lighting/lamparray/interfaces/ilamparray/methods/ilamparray_getminupdateintervalinmicroseconds.md)
- [Répertoire des rubriques NDA : liens actifs vers Microsoft Learn](/fr/nda/nda-topic-directory.md)
- [game_chat_data_frame](/fr/reference/chat/gamechat2/structs/game_chat_data_frame.md)
- [ACP_MESSAGE_AUDIO_FRAME_START](/fr/reference/audio/acphal/structs/acp_message_audio_frame_start.md)
