2017-07-10 9 views
1

Je travaille actuellement sur une application Windows Mixed Reality en utilisant SharpDX, en convertissant à partir d'une autre plate-forme d'application VR. Sur la réalité mixte, l'API demande à l'utilisateur de dessiner un seul tampon arrière fourni qui est un tableau Texture2D de taille 2 (un élément pour chaque œil), mais l'infrastructure VR demande à l'utilisateur de dessiner deux textures séparées qui sont soumises manuellement.Dans SharpDX, comment puis-je dessiner un seul Texture2D à partir d'un tableau Texture2D?

De préférence, j'aimerais pouvoir extraire chacun des éléments de texture individuels de ce tableau sous la forme d'un Texture2D distinct, afin que mes backends VR puissent toujours dessiner ces textures normalement. L'exemple d'application Mixed Reality ne fournit aucune aide dans ce sens, car il utilise à la place un appel draw draw pour dessiner les deux textures à la fois. Est-il possible dans DirectX d'obtenir une référence à une seule texture, ou dois-je modifier mon backend pour utiliser le tableau?

EDIT: Selon la documentation, je trouve que RenderTargetViews semble être le moyen de rendre à une ressource comme si elle était une autre ressource, y compris le rendu d'une tranche de tableau comme si elle était une texture unique. Cependant, lorsque je crée deux vues render cibles avec ce format,

RenderTargetView l_target_view = new RenderTargetView(cameraBackBuffer.Device, cameraBackBuffer, new RenderTargetViewDescription() 
{ 
    Format = (SharpDX.DXGI.Format)parameters.Direct3D11BackBuffer.Description.Format, 
    Dimension = RenderTargetViewDimension.Texture2D, 
    Texture2DArray = new RenderTargetViewDescription.Texture2DArrayResource() 
    { 
     ArraySize = 1, 
     FirstArraySlice = 0 
    } 
}); 
RenderTargetView r_target_view = new RenderTargetView(cameraBackBuffer.Device, cameraBackBuffer, new RenderTargetViewDescription() 
{ 
    Format = (SharpDX.DXGI.Format)parameters.Direct3D11BackBuffer.Description.Format, 
    Dimension = RenderTargetViewDimension.Texture2D, 
    Texture2DArray = new RenderTargetViewDescription.Texture2DArrayResource() 
    { 
     ArraySize = 1, 
     FirstArraySlice = 1 
    } 
}); 

opérations sur les deux cibles sont appliquées à la première seulement.

Répondre

1

Pour créer une vue tranche pour un tableau de textures, vue dimension devrait être:

Dimension = RenderTargetViewDimension.Texture2DArray 

L'utilisation Texture2D réussira, mais toujours attacher la première tranche à la place.

+0

Cela fonctionne! Je vous remercie! – TheHansinator