Restituer variante de Format cible de 16 bpp16 bpp Render Target Format Variant

Affecte aux pixels le format DXGI_FORMAT_B5G6R5_UNORM pour toutes les cibles de rendu et toutes les mémoires tampons d'arrière-plan.Sets the pixel format to DXGI_FORMAT_B5G6R5_UNORM for all render targets and back buffers.

InterprétationInterpretation

Une cible de rendu ou de la mémoire tampon d’arrière-plan utilise généralement un format 32 bpp (32 bits par pixel) tel que B8G8R8A8_UNORM.A render target or back buffer typically uses a 32 bpp (32 bits per pixel) format such as B8G8R8A8_UNORM. les formats 32 bpp peuvent consommer une grande quantité de bande passante de mémoire.32-bpp formats can consume a large amount of memory bandwidth. Étant donné que le format B5G6R5_UNORM est un format de 16 bits par pixel qui est la moitié des formats de 32 bpp, son utilisation peut soulager la pression sur la bande passante de mémoire, mais au détriment de la fidélité des couleurs réduite.Because the B5G6R5_UNORM format is a 16-bpp format that's half the size of 32-bpp formats, using it can relieve pressure on memory bandwidth, but at the cost of reduced color fidelity.

Si cette variante donne lieu à un net gain de performances, cela indique probablement que votre application consomme trop de bande passante de mémoire.If this variant shows a large performance gain, it likely indicates that your app consumes too much memory bandwidth. Vous pouvez obtenir l’amélioration significative des performances, en particulier lorsque le frame profilé avait une quantité importante de superpositions ou mélange alpha.You can gain significant performance improvement, especially when the profiled frame had a significant amount of overdraw or alpha-blending.

Un format de cible de rendu 16 bits par pixel peut réduire la bande de mémoire avec utilisation lorsque votre application a les conditions suivantes :A 16-bpp render target format can reduce memory band with usage when your application has the following conditions:

  • Ne nécessite pas une reproduction haute fidélité des couleurs.Doesn't require high-fidelity color reproduction.
  • Ne nécessite pas un canal alpha.Doesn't require an alpha channel.
  • Ofent ne dispose pas des dégradés lisses (qui sont vulnérables aux artefacts répartis sous la fidélité des couleurs réduite).Doesn't ofent have smooth gradients (which are susceptible to banding artifacts under reduced color fidelity).

Autres stratégies pour réduire la bande passante de mémoire sont les suivantes :Other strategies to reduce memory bandwidth include:

  • Réduire la quantité de superpositions ou mélange alpha.Reduce the amount of overdraw or alpha-blending.
  • Réduire les dimensions de la mémoire tampon de trame.Reduce the dimensions of the frame buffer.
  • Réduisez les dimensions de ressources de texture.Reduce dimensions of texture resources.
  • Réduire les compressions de ressources de texture.Reduce compressions of texture resources.

Comme toujours, vous devez réfléchir aux avantages et aux inconvénients qui accompagnent ces optimisations de qualité d'image.As usual, you have to consider the image quality trade-offs that come with any of these optimizations.

Les applications qui font partie d’une chaîne de permutation ont un format de mémoire tampon d’arrière-plan (DXGI_FORMAT_B5G6R5_UNORM) qui ne prend pas en charge 16 bpp.Applications that are a part of a swap chain have a back buffer format (DXGI_FORMAT_B5G6R5_UNORM) that doesn't support 16 bpp. Ces chaînes de permutation sont créés à l’aide de D3D11CreateDeviceAndSwapChain ou IDXGIFactory::CreateSwapChain.These swap chains are created by using D3D11CreateDeviceAndSwapChain or IDXGIFactory::CreateSwapChain. Pour contourner cette limitation, procédez comme suit :To work around this limitation, do the following steps:

  1. Créer une cible de rendu de format B5G6R5_UNORM à l’aide de CreateTexture2D et à la cible de rendu.Create a B5G6R5_UNORM format render target by using CreateTexture2D and render to that target.
  2. Copiez la cible de rendu dans la chaîne de permutation quadravision en dessinant un quadruple plein écran avec la cible de rendu en tant que votre texture source.Copy the render target onto the swap-chain backbuffer by drawing a full-screen quad with the render target as your source texture.
  3. Appeler Present dans votre chaîne de permutation.Call Present on your swap chain.

    Si cette stratégie permet d’économiser davantage de bande passante que consommée en copiant la cible de rendu dans la chaîne de permutation mémoire tampon d’arrière-plan, les performances de rendu est améliorée.If this strategy saves more bandwidth than is consumed by copying the render target to the swap-chain backbuffer, then rendering performance is improved.

    Les architectures GPU qui utilisent des techniques de rendu en mosaïque peuvent voir les avantages de performance significatifs à l’aide d’un format de mémoire tampon de trame de 16 bpp.GPU architectures that use tiled rendering techniques can see significant performance benefits by using a 16 bpp frame buffer format. Cette amélioration est, car une plus grande partie de la mémoire tampon de trame peut tenir dans le cache des tampons frame local de chaque mosaïque.This improvement is because a larger portion of the frame buffer can fit in each tile's local frame buffer cache. Les architectures de rendu en mosaïque sont parfois rencontrées dans les GPU des combinés mobiles et des tablettes ; elles sont peu courantes en dehors de cette niche.Tiled rendering architectures are sometimes found in GPUs in mobile handsets and tablet computers; they rarely appear outside of this niche.

NotesRemarks

Le format cible de rendu est réinitialisé en DXGI_FORMAT_B5G6R5_UNORM à chaque appel à ID3D11Device::CreateTexture2D, qui est chargé de créer une cible de rendu.The render target format is reset to DXGI_FORMAT_B5G6R5_UNORM on every call to ID3D11Device::CreateTexture2D that creates a render target. Plus précisément, le format est substitué quand l'objet D3D11_TEXTURE2D_DESC passé dans pDesc décrit une cible de rendu ; à savoir :Specifically, the format is overridden when the D3D11_TEXTURE2D_DESC object passed in pDesc describes a render target; that is:

  • L'indicateur D3D11_BIND_REDNER_TARGET est défini pour le membre BindFlags.The BindFlags member has the D3D11_BIND_REDNER_TARGET flag set.

  • L'indicateur D3D11_BIND_DEPTH_STENCIL est effacé pour le membre BindFlags.The BindFlags member has the D3D11_BIND_DEPTH_STENCIL flag cleared.

  • Le membre Usage a la valeur D3D11_USAGE_DEFAULT.The Usage member is set to D3D11_USAGE_DEFAULT.

Restrictions et limitationsRestrictions and limitations

Sachant que le format B5G6R5 n'a pas de canal alpha, le contenu alpha n'est pas conservé par cette variante.Because the B5G6R5 format doesn't have an alpha channel, alpha content is not preserved by this variant. Si le rendu de votre application nécessite la présence d'un canal alpha dans votre cible de rendu, il vous suffit de passer au format B5G6R5.If your app's rendering requires an alpha channel in your render target, you can't just switch to the B5G6R5 format.

ExempleExample

Le 16 bpp Format cible de rendu variante peut être reproduite pour les cibles de rendu créées à l’aide de CreateTexture2D à l’aide de code similaire à celui-ci :The 16 bpp Render Target Format variant can be reproduced for render targets created by using CreateTexture2D by using code like this:

D3D11_TEXTURE2D_DESC target_description;  

target_description.BindFlags = D3D11_BIND_RENDER_TARGET;  
target_description.Format = DXGI_FORMAT_B5G6R5_UNORM;  
d3d_device->CreateTexture2D(&target_description, nullptr, &render_target);