Compartir a través de


Objetos de mapa de bits

Nota:

En el caso de las aplicaciones en Windows 10, se recomienda usar las API de Windows.UI.Composition en lugar de DirectComposition. Para obtener más información, consulta Modernize your desktop app using the Visual layer (Modernización de la aplicación de escritorio mediante la capa visual).

Microsoft DirectComposition es un motor de redacción de mapa de bits. Permite a los desarrolladores de aplicaciones combinar varios mapas de bits y manipularlos de varias maneras para lograr interesantes efectos visuales y animaciones en una interfaz de usuario de la aplicación. En este tema se describen los tipos de contenido de mapa de bits que admite DirectComposition.

Contenido del mapa de bits

Las aplicaciones proporcionan DirectComposition con el contenido de mapa de bits para crear y animar mediante la creación de objetos visuales y, a continuación, establecer la propiedad Content de esos objetos. DirectComposition no ofrece ningún servicio de rasterización. Una aplicación debe usar alguna otra biblioteca de rasterización acelerada por hardware o basada en software, como Direct2D o Direct3D , para rellenar los mapas de bits que se van a componer. Después de redactar, DirectComposition pasa contenido de mapa de bits compuesto al Administrador de ventanas de escritorio (DWM) para su representación en la pantalla.

Tipos admitidos de contenido de mapa de bits Microsoft DirectComposition admite los siguientes tipos de mapas de bits:

Mapas de bits de memoria de vídeo

Un mapa de bits de memoria de vídeo se rasteriza en hardware mediante métodos de Microsoft DirectX (incluido el modelo de interoperabilidad DX a GDI). Está respaldado por superficies compartidas entre procesos que son visibles para la aplicación que realiza la llamada y para DirectComposition. Un mapa de bits de memoria de vídeo no está sujeto a desmontaje porque la aplicación solo puede leer desde las superficies de las que directComposition texturas.

Contenido del vídeo

Las aplicaciones pueden usar DirectComposition para crear fotogramas de vídeo que usen cadenas de intercambio sin ventanas de DirectX enlazadas a una superficie de DirectComposition. Conceptualmente, DirectComposition trata el contenido de vídeo como una secuencia de mapas de bits. DirectComposition no proporciona un medio para presentar fotogramas de vídeo.

DirectComposition admite cadenas de intercambio sin ventanas de DirectX( es decir, cadenas de intercambio que no están enlazadas a una ventana determinada) y permite que dos aplicaciones diferentes compartan cadenas de intercambio sin ventanas a través de los límites del proceso. Compartir cadenas de intercambio sin ventanas permite escenarios de vídeo en los que se crea la cadena de intercambio en un proceso y se usa con DirectComposition en un segundo proceso. Las cadenas de intercambio sin ventana se crean mediante el método IDXGIFactory2::CreateSwapChainForCompositionSurface .

Para obtener más información sobre las cadenas de intercambio de DirectX, consulte Información general sobre DXGI.

Contenido estéreo

Conceptualmente, una cadena de intercambio estéreo consta de superficies de infraestructura gráfica de Microsoft DirectX (DXGI) que representan los canales izquierdo y derecho para el contenido estéreo 3D. Cuando se usa una cadena de intercambio estéreo como recurso de mapa de bits para un objeto visual, DirectComposition se compone en estéreo. Todo el contenido no estéreo (contenido mono) se considera que tiene contenido de canal izquierdo y derecho idéntico; es decir, se usa el mismo contenido de mapa de bits para ambos canales. DirectComposition compone todo el contenido izquierdo y todo el contenido derecho por separado. Si el dispositivo de pantalla no es compatible con estéreo, DirectComposition trata el canal estéreo izquierdo o derecho (dependiendo de la aplicación) como contenido mono y compone solo con esos datos para el recurso de mapa de bits.

DirectComposition no admite la creación o manipulación de contenido estéreo y no puede promover una cadena de intercambio mono a un par estéreo. Una aplicación debe realizar estas tareas antes de presentar contenido estéreo de DirectX a DirectComposition. Además, una aplicación debe proporcionar los desplazamientos de canal izquierdo y derecho para la percepción de profundidad; DirectComposition no puede ajustar los desplazamientos de canal izquierdo y derecho para modificar la profundidad percibido del contenido estéreo de DirectX.

El contenido estéreo de DirectX se compone y se conserva en DWM cuando el hardware compatible con estéreo está disponible.

Mapas de bits de ventana

Un "mapa de bits de ventana" no es un mapa de bits real, pero es un marcador de posición que DirectComposition reemplaza en tiempo real por rasterizaciones de ventanas de nivel superior o secundarias superpuestas. Un mapa de bits de ventana es similar a una miniatura de DWM, salvo que una miniatura puede contener contribuciones de muchas ventanas, como ventanas que no son secundarias, mientras que un mapa de bits de la ventana DirectComposition siempre es una representación de una sola ventana y sus elementos secundarios.

Dado que DirectComposition tiene acceso a las superficies de redireccionamiento de todas las ventanas y todos los árboles visuales, puede reutilizar el contenido de una ventana en varios árboles visuales. La ventana debe estar superpuesta porque una ventana no superpuesta no tiene una superficie de redirección dedicada y, por lo tanto, su rasterización no siempre está disponible para DirectComposition.

Para usar un mapa de bits de ventana, una aplicación asocia un objeto visual a un identificador de ventana (HWND). Después, DirectComposition vuelve a componer el objeto visual cada vez que cambia el contenido de la ventana, incluido cuando el contenido cambia como resultado de los cambios en los árboles visuales asociados a la ventana. En otras palabras, como las miniaturas de DWM, los mapas de bits de la ventana DirectComposition son "dinámicos".

Asociación de contenido de mapa de bits con un objeto visual

Para los tres tipos de mapas de bits, una aplicación puede asociar el mismo mapa de bits con varios objetos visuales, lo que significa que se puede usar una sola asignación de memoria para mostrar el mismo contenido varias veces.

Canal alfa

Todos los mapas de bits tienen un formato de 32 bits por píxel (BPP), que incluye ocho bits para la transparencia por píxel. Sin embargo, una aplicación puede especificar cómo DirectComposition debe consumir el canal alfa. En concreto, DirectComposition puede respetar el canal alfa, o bien puede omitirlo por completo, en cuyo caso el mapa de bits se considera totalmente opaco.

Un modo alfa adicional omite el canal alfa, pero trata los valores rojo, verde y azul como valores alfa por canal en lugar de la interpretación normal de esos canales como densidades de color. Este modo es útil para la representación de ClearType, que requiere información de cobertura de sub píxeles. Para usar el modo alfa por canal, una aplicación primero debe usar Direct2D y DirectWrite para escribir datos de cobertura de sub píxeles en un mapa de bits. A continuación, la aplicación debe establecer el modo alfa correcto y especificar un color de texto cuando asocia el mapa de bits a un objeto visual. DirectComposition combina el color de texto con los datos de cobertura, lo que genera la combinación ClearType en segundo plano.

En situaciones en las que el algoritmo ClearType no es aplicable, como si el mapa de bits no está alineado con píxeles y alineados con ejes, o si necesita dibujarse en una superficie intermedia, DirectComposition puede usar los datos de cobertura de subpíxeles en el mapa de bits para generar una rasterización de escala de grises en su lugar, automáticamente y sin costo adicional.

Para obtener más información, vea la descripción del parámetro alphaMode de la función IDCompositionDevice::CreateSurface o IDCompositionDevice::CreateVirtualSurface .

Conceptos de DirectComposition