2010-07-07 4 views
1

J'essaie la fonctionnalité de ressources partagées de DX10, comme j'en avais besoin pour un de mes projets. Mais je ne peux pas trouver beaucoup d'échantillon ou de code en particulier en utilisant SlimDX. Selon la documentation de DX10, j'ai juste besoin de spécifier les ressources comme partagées, puis je peux l'ouvrir en utilisant OpenSharedResource() d'une autre application. Avec une application de test simple SlimDX, je l'ai fait laRessources partagées dans SlimDX avec DX10

suivante
 Texture2D tex = new Texture2D(device, new Texture2DDescription() 
     { 
      ArraySize = 1, 
      BindFlags = BindFlags.RenderTarget | BindFlags.ShaderResource, 
      CpuAccessFlags = CpuAccessFlags.None, 
      Format = Format.B8G8R8A8_UNorm, 
      Height = 128, 
      Width = 128, 
      MipLevels = 1, 
      OptionFlags = ResourceOptionFlags.Shared, 
      SampleDescription = new SampleDescription(1, 0), 
      Usage = ResourceUsage.Default, 
     }); 

     Texture2D tex2 = device.OpenSharedResource<Texture2D>(tex.ComPointer); 

Mais je continue à avoir cette erreur

E_INVALIDARG: An invalid parameter was passed to the returning function (-2147024809) 

Je ne peux pas semble comprendre ce qui a mal tourné, comme tex.ComPointer pourrait ne pas être le bon pointeur pour OpenSharedResource ou Texture2D n'est pas supporté (il n'est pas clairement indiqué qu'il n'est pas dans la documentation)

L'autre alternative en spécifiant pHandle à passer dans la fonction CreateTexture n'est pas disponible dans SlimDX ou I Je ne suis pas au courant .

Est-ce que quelqu'un a déjà essayé avec succès? De l'aide serait reconnaissante.

Merci

Répondre

4

J'ai trouvé le problème avec mon code. J'ai besoin d'utiliser le DXGI pour récupérer le handle partagé (pas de pointeur). Le code suivant fonctionne parfaitement

SlimDX.DXGI.Resource r = new Resource(tex); 

Texture2D tex2 = device.OpenSharedResource<Texture2D>(r.SharedHandle); 
Questions connexes