Compartilhar via


Método ID2D1RenderTarget::CreateSharedBitmap (d2d1.h)

Cria um ID2D1Bitmap cujos dados são compartilhados com outro recurso.

Sintaxe

HRESULT CreateSharedBitmap(
                 REFIID                       riid,
  [in, out]      void                         *data,
  [in, optional] const D2D1_BITMAP_PROPERTIES *bitmapProperties,
  [out]          ID2D1Bitmap                  **bitmap
);

Parâmetros

riid

Tipo: REFIID

A ID da interface do objeto que fornece os dados de origem.

[in, out] data

Tipo: void*

Um ID2D1Bitmap, IDXGISurface ou um IWICBitmapLock que contém os dados a serem compartilhados com o novo ID2D1Bitmap. Para obter mais informações, consulte a seção Comentários.

[in, optional] bitmapProperties

Tipo: D2D1_BITMAP_PROPERTIES*

O formato de pixel e o DPI do bitmap para criar . A parte DXGI_FORMAT do formato de pixel deve corresponder à DXGI_FORMAT de dados ou o método falhará, mas os modos alfa não precisam corresponder. Para evitar uma incompatibilidade, você pode passar NULL ou o valor obtido da função auxiliar D2D1::P ixelFormat . As configurações de DPI não precisam corresponder às dos dados. Se dpiX e dpiY forem 0,0f, o DPI do destino de renderização será usado.

[out] bitmap

Tipo: ID2D1Bitmap**

Quando esse método retorna, contém o endereço de um ponteiro para o novo bitmap. Este parâmetro é passado não inicializado.

Retornar valor

Tipo: HRESULT

Se o método for bem-sucedido, ele retornará S_OK. Caso contrário, ele retornará um código de erro HRESULT .

Comentários

O método CreateSharedBitmap é útil para reutilização eficiente de dados de bitmap e também pode ser usado para fornecer interoperabilidade com o Direct3D.

Compartilhando um ID2D1Bitmap

Ao passar um ID2D1Bitmap criado por um destino de renderização compatível com recursos, você pode compartilhar um bitmap com esse destino de renderização; tanto o ID2D1Bitmap original quanto o novo ID2D1Bitmap criado por esse método apontarão para os mesmos dados de bitmap. Para obter mais informações sobre quando os recursos de destino de renderização podem ser compartilhados, consulte a seção Recursos de destino de renderização de compartilhamento da Visão geral dos recursos.

Você também pode usar esse método para reinterpretar os dados de um bitmap existente e especificar um novo modo DPI ou alfa. Por exemplo, no caso de um atlas de bitmap, um ID2D1Bitmap pode conter várias sub-imagens, cada uma das quais deve ser renderizada com um D2D1_ALPHA_MODE diferente (D2D1_ALPHA_MODE_PREMULTIPLIED ou D2D1_ALPHA_MODE_IGNORE). Você pode usar o método CreateSharedBitmap para reinterpretar o bitmap usando o modo alfa desejado sem precisar carregar uma cópia separada do bitmap na memória.

Compartilhando um IDXGISurface

Ao usar um destino de renderização de superfície DXGI (um objeto ID2D1RenderTarget criado pelo método CreateDxgiSurfaceRenderTarget ), você pode passar uma superfície IDXGISurface para o método CreateSharedBitmap para compartilhar memória de vídeo com Direct3D e manipular o conteúdo direct3D como um ID2D1Bitmap. Conforme descrito na Visão geral de recursos, o destino de renderização e o IDXGISurface devem estar usando o mesmo dispositivo Direct3D.

Observe também que o IDXGISurface deve usar um dos formatos de pixel com suporte e modos alfa descritos em Formatos de Pixel com Suporte e Modos Alfa.

Para obter mais informações sobre interoperabilidade com o Direct3D, consulte a visão geral de interoperabilidade do Direct2D e direct3D.

Compartilhando um IWICBitmapLock

Um IWICBitmapLock armazena o conteúdo de um bitmap wic e o protege de acessos simultâneos. Ao passar um IWICBitmapLock para o método CreateSharedBitmap , você pode criar um ID2D1Bitmap que aponta para os dados de bitmap já armazenados no IWICBitmapLock.

Para usar um IWICBitmapLock com o método CreateSharedBitmap , o destino de renderização deve usar a renderização de software. Para forçar um destino de renderização a usar a renderização de software, defina como D2D1_RENDER_TARGET_TYPE_SOFTWAREo campo tipo da estrutura D2D1_RENDER_TARGET_PROPERTIES que você usa para criar o destino de renderização. Para marcar se um destino de renderização existente usa a renderização de software, use o método IsSupported.

Requisitos

Requisito Valor
Cliente mínimo com suporte Windows 7, Windows Vista com SP2 e Atualização de Plataforma para Windows Vista [aplicativos da área de trabalho | Aplicativos UWP]
Servidor mínimo com suporte Windows Server 2008 R2, Windows Server 2008 com SP2 e Atualização de Plataforma para Windows Server 2008 [aplicativos da área de trabalho | Aplicativos UWP]
Plataforma de Destino Windows
Cabeçalho d2d1.h
Biblioteca D2d1.lib
DLL D2d1.dll

Confira também

Visão geral de interoperabilidade entre Direct2D e Direct3D

ID2D1RenderTarget

IDXGISurface

IWICBitmapLock

Visão geral dos recursos

Formatos de pixel e modos alfa com suporte