SDL_blendmode.h

Función SDL_ComposeCustomBlendMode

Sintaxis

SDL_BlendMode SDL_ComposeCustomBlendMode(SDL_BlendFactor srcColorFactor,
                                         SDL_BlendFactor dstColorFactor,
                                         SDL_BlendOperation colorOperation,
                                         SDL_BlendFactor srcAlphaFactor,
                                         SDL_BlendFactor dstAlphaFactor,
                                         SDL_BlendOperation alphaOperation);

Descripción

Compone un modo de mezcla personalizado para los contextos de renderización.

Parámetros

srcColorFactor
El SDL_BlendFactor aplicado a los componentes rojo, verde y azul de los píxeles de origen.
dstColorFactor
El SDL_BlendFactor aplicado a los componentes rojo, verde y azul de los píxeles de destino.
colorOperation
La SDL_BlendOperation utilizada para combinar los componentes rojo, verde y azul de los píxeles de origen y destino.
srcAlphaFactor
El SDL_BlendFactor aplicado al componente alfa de los píxeles fuente.
dstAlphaFactor
El SDL_BlendFactor aplicado al componente alfa de los píxeles de destino.
alphaOperation
La SDL_BlendOperation utilizada para combinar el componente alfa de los píxeles de origen y destino.

Valor de retorno

Devuelve un SDL_BlendMode que representa los factores y operaciones elegidos.

Observaciones

Las funciones SDL_SetRenderDrawBlendMode y SDL_SetTextureBlendMode aceptan el SDL_BlendMode devuelto por esta función si el renderizador lo soporta.

Un modo de mezcla controla cómo se combinan los píxeles de una operación de dibujo (origen) con los píxeles del destino de renderizado (destino). En primer lugar, los componentes de los píxeles de origen y destino se multiplican por sus factores de mezcla. A continuación, la operación de mezcla toma los dos productos y calcula el resultado que se almacenará en el destino de renderizado.

Expresado en pseudocódigo, sería así:

dstRGB = colorOperation(srcRGB * srcColorFactor, dstRGB * dstColorFactor);
dstA = alphaOperation(srcA * srcAlphaFactor, dstA * dstAlphaFactor);

Donde las funciones colorOperation(src, dst) y alphaOperation(src, dst) pueden devolver una de las siguientes:

src + dst
src - dst
dst - src
min(src, dst)
max(src, dst)

Los componentes rojo, verde y azul siempre se multiplican por el primer, segundo y tercer componente del SDL_BlendFactor, respectivamente. El cuarto componente no se utiliza.

El componente alfa siempre se multiplica por el cuarto componente de SDL_BlendFactor. Los otros componentes no se utilizan en el cálculo alfa.

La compatibilidad con estos modos de fusión varía según el renderizador. Para comprobar si un SDL_BlendMode específico es compatible, cree un renderizador y pasarlo a SDL_SetRenderDrawBlendMode o SDL_SetTextureBlendMode. Devolverán un error si el modo de mezcla no es compatible.

Esta lista describe el soporte de modos de mezcla personalizados para cada renderizador en SDL 2.0.6. Todos los renderizadores admiten los cuatro modos de fusión enumerados en SDL_BlendMode.

direct3d: Soporta todas las operaciones con todos los factores. Sin embargo, algunos factores producen resultados inesperados con SDL_BLENDOPERATION_MINIMUM y SDL_BLENDOPERATION_MAXIMUM.

direct3d11: Igual que Direct3D 9.

opengl: Admite la operación SDL_BLENDOPERATION_ADD con todos los factores. Las versiones 1.1, 1.2 y 1.3 de OpenGL no funcionan correctamente con SDL 2.0.6.

opengles: Admite la operación SDL_BLENDOPERATION_ADD con todos los factores. Los factores de color y alfa deben ser iguales. Implementación específica de OpenGL ES 1: También puede soportar SDL_BLENDOPERATION_SUBTRACT y SDL_BLENDOPERATION_REV_SUBTRACT. Puede soportar operaciones de color y alfa diferentes entre sí. Puede soportar factores de color y alfa diferentes entre sí.

opengles2: Soporta las operaciones SDL_BLENDOPERATION_ADD, SDL_BLENDOPERATION_SUBTRACT, SDL_BLENDOPERATION_REV_SUBTRACT con todos los factores.

psp: No hay soporte para modos de mezcla personalizados.

software: No admite modos de mezcla personalizados.

Algunos renderizadores no proporcionan un componente alfa para el objetivo de render por defecto. Los factores SDL_BLENDFACTOR_DST_ALPHA y SDL_BLENDFACTOR_ONE_MINUS_DST_ALPHA no tienen efecto en este caso.