Método ID3D10Device::OpenSharedResource (d3d10.h)
Conceda a un dispositivo acceso a un recurso compartido creado en un dispositivo Direct3d diferente.
Sintaxis
HRESULT OpenSharedResource(
[in] HANDLE hResource,
[in] REFIID ReturnedInterface,
[out] void **ppResource
);
Parámetros
[in] hResource
Tipo: HANDLE
Identificador de recursos. Vea Notas.
[in] ReturnedInterface
Tipo: REFIID
Identificador único global (GUID) de la interfaz de recursos. Vea Notas.
[out] ppResource
Tipo: void**
Dirección de un puntero al recurso al que estamos obteniendo acceso.
Valor devuelto
Tipo: HRESULT
Este método devuelve uno de los siguientes códigos de retorno de Direct3D 10.
Comentarios
Para compartir un recurso entre dos dispositivos direct3D 10, el recurso debe haberse creado con la marca D3D10_RESOURCE_MISC_SHARED , si se creó con la interfaz ID3D10Device. Si se creó con la interfaz IDXGIDevice, el recurso siempre se comparte.
El REFIID, o GUID, de la interfaz al recurso se puede obtener mediante la macro __uuidof(). Por ejemplo, __uuidof(ID3D10Buffer) obtendrá el GUID de la interfaz en un recurso de búfer.
Al compartir un recurso entre dos dispositivos direct3D 10, se puede obtener el identificador único del recurso consultando el recurso para la interfaz IDXGIResource y, a continuación, llamando a GetSharedHandle.
IDXGIResource* pOtherResource(NULL);
hr = pOtherDeviceResource->QueryInterface( __uuidof(IDXGIResource), (void**)&pOtherResource );
HANDLE sharedHandle;
pOtherResource->GetSharedHandle(&sharedHandle);
Los únicos recursos que se pueden compartir son texturas no mipmapped 2D.
Para compartir un recurso entre un dispositivo direct3D 9 y un dispositivo direct3D 10, la textura debe haberse creado con el argumento pSharedHandle de CreateTexture.
El identificador compartido de Direct3D 9 se pasa a OpenSharedResource en el argumento hResource .
En el código siguiente se muestran las llamadas al método implicadas.
sharedHandle = NULL; // must be set to NULL to create, can use a valid handle here to open in D3D9
pDevice9->CreateTexture(..., pTex2D_9, &sharedHandle);
...
pDevice10->OpenSharedResource(sharedHandle, __uuidof(ID3D10Resource), (void**)(&tempResource10));
tempResource10->QueryInterface(__uuidof(ID3D10Texture2D), (void**)(&pTex2D_10));
tempResource10->Release();
// now use pTex2D_10 with pDevice10
Las texturas que se comparten de D3D9 a D3D10 tienen las restricciones siguientes.
- Las texturas deben ser 2D
- Solo se permite un nivel mip
- La textura debe tener un uso predeterminado
- La textura debe ser de solo escritura
- No se permiten texturas MSAA
- Las marcas de enlace deben tener SHADER_RESOURCE y RENDER_TARGET establecer
- Solo se permiten los formatos de R10G10B10A2_UNORM, R16G16B16A16_FLOAT y R8G8B8A8_UNORM
Requisitos
Requisito | Value |
---|---|
Plataforma de destino | Windows |
Encabezado | d3d10.h |