| Safe Haskell | None |
|---|---|
| Language | GHC2021 |
SDL3.Sys.Blendmode
Contents
Description
Blend modes decide how two colors will mix together. There are both standard modes for basic needs and a means to create custom modes, dictating what sort of math to do on what color components. A set of blend modes used in drawing operations.
These predefined blend modes are supported everywhere.
Additional values may be obtained from composeCustomBlendMode.
- See also
composeCustomBlendMode
FFI conventions
Unsuffixed aliases are unsafe foreign imports; aliases suffixed Safe are safe. Functions whose callbacks fire during the call export only the Safe alias (the genuine unsafe import stays reachable under SDL3.Sys.Bindgen.Blendmode.Unsafe); functions curated unsafe-only export only the unsuffixed one. Each alias's documentation records its flavor and rationale.
Full conventions: SDL3.Sys.
Since: 3.2.0
Synopsis
- module SDL3.Sys.Bindgen.Blendmode
- pattern SDL_BLENDMODE_NONE :: SDL_BlendMode
- pattern SDL_BLENDMODE_BLEND :: SDL_BlendMode
- pattern SDL_BLENDMODE_BLEND_PREMULTIPLIED :: SDL_BlendMode
- pattern SDL_BLENDMODE_ADD :: SDL_BlendMode
- pattern SDL_BLENDMODE_ADD_PREMULTIPLIED :: SDL_BlendMode
- pattern SDL_BLENDMODE_MOD :: SDL_BlendMode
- pattern SDL_BLENDMODE_MUL :: SDL_BlendMode
- pattern SDL_BLENDMODE_INVALID :: SDL_BlendMode
- composeCustomBlendMode :: SDL_BlendFactor -> SDL_BlendFactor -> SDL_BlendOperation -> SDL_BlendFactor -> SDL_BlendFactor -> SDL_BlendOperation -> IO SDL_BlendMode
- composeCustomBlendModeSafe :: SDL_BlendFactor -> SDL_BlendFactor -> SDL_BlendOperation -> SDL_BlendFactor -> SDL_BlendFactor -> SDL_BlendOperation -> IO SDL_BlendMode
Documentation
module SDL3.Sys.Bindgen.Blendmode
Typed constants
pattern SDL_BLENDMODE_NONE :: SDL_BlendMode Source #
Typed constant for macro SDL_BLENDMODE_NONE.
pattern SDL_BLENDMODE_BLEND :: SDL_BlendMode Source #
Typed constant for macro SDL_BLENDMODE_BLEND.
pattern SDL_BLENDMODE_BLEND_PREMULTIPLIED :: SDL_BlendMode Source #
Typed constant for macro SDL_BLENDMODE_BLEND_PREMULTIPLIED.
pattern SDL_BLENDMODE_ADD :: SDL_BlendMode Source #
Typed constant for macro SDL_BLENDMODE_ADD.
pattern SDL_BLENDMODE_ADD_PREMULTIPLIED :: SDL_BlendMode Source #
Typed constant for macro SDL_BLENDMODE_ADD_PREMULTIPLIED.
pattern SDL_BLENDMODE_MOD :: SDL_BlendMode Source #
Typed constant for macro SDL_BLENDMODE_MOD.
pattern SDL_BLENDMODE_MUL :: SDL_BlendMode Source #
Typed constant for macro SDL_BLENDMODE_MUL.
pattern SDL_BLENDMODE_INVALID :: SDL_BlendMode Source #
Typed constant for macro SDL_BLENDMODE_INVALID.
Function aliases
composeCustomBlendMode Source #
Arguments
| :: SDL_BlendFactor |
|
| -> SDL_BlendFactor |
|
| -> SDL_BlendOperation |
|
| -> SDL_BlendFactor |
|
| -> SDL_BlendFactor |
|
| -> SDL_BlendOperation |
|
| -> IO SDL_BlendMode |
Compose a custom blend mode for renderers.
The functions setRenderDrawBlendMode and setTextureBlendMode accept the SDL_BlendMode returned by this function if the renderer supports it.
A blend mode controls how the pixels from a drawing operation (source) get combined with the pixels from the render target (destination). First, the components of the source and destination pixels get multiplied with their blend factors. Then, the blend operation takes the two products and calculates the result that will get stored in the render target.
Expressed in pseudocode, it would look like this:
dstRGB = colorOperation(srcRGB * srcColorFactor, dstRGB * dstColorFactor);
dstA = alphaOperation(srcA * srcAlphaFactor, dstA * dstAlphaFactor);
Where the functions colorOperation(src, dst) and alphaOperation(src, dst) can return one of the following:
src + dst
src - dst
dst - src
min(src, dst)
max(src, dst)
The red, green, and blue components are always multiplied with the first, second, and third components of the SDL_BlendFactor, respectively. The fourth component is not used.
The alpha component is always multiplied with the fourth component of the SDL_BlendFactor. The other components are not used in the alpha calculation.
Support for these blend modes varies for each renderer. To check if a specific SDL_BlendMode is supported, create a renderer and pass it to either setRenderDrawBlendMode or setTextureBlendMode. They will return with an error if the blend mode is not supported.
This list describes the support of custom blend modes for each renderer. All renderers support the four blend modes listed in the SDL_BlendMode enumeration.
- direct3d: Supports all operations with all factors. However, some factors produce unexpected results with
SDL_BLENDOPERATION_MINIMUMandSDL_BLENDOPERATION_MAXIMUM. - direct3d11: Same as Direct3D 9.
- opengl: Supports the
SDL_BLENDOPERATION_ADDoperation with all factors. OpenGL versions 1.1, 1.2, and 1.3 do not work correctly here. - opengles2: Supports the
SDL_BLENDOPERATION_ADD,SDL_BLENDOPERATION_SUBTRACT,SDL_BLENDOPERATION_REV_SUBTRACToperations with all factors. - psp: No custom blend mode support.
- software: No custom blend mode support.
Some renderers do not provide an alpha component for the default render target. The SDL_BLENDFACTOR_DST_ALPHA and SDL_BLENDFACTOR_ONE_MINUS_DST_ALPHA factors do not have an effect in this case.
- Returns
- an
SDL_BlendModethat represents the chosen factors and operations. - Thread safety
- It is safe to call this function from any thread.
- See also
setRenderDrawBlendMode,getRenderDrawBlendMode,setTextureBlendMode,getTextureBlendMode
sdl3-bindgen-sys notes
- FFI safety
- Unsafe foreign import of
SDL_ComposeCustomBlendMode. The safe flavor iscomposeCustomBlendModeSafe. - C declaration
SDL_ComposeCustomBlendMode, defined atSDL3/SDL_blendmode.h 189:43
Since: 3.2.0
composeCustomBlendModeSafe Source #
Arguments
| :: SDL_BlendFactor |
|
| -> SDL_BlendFactor |
|
| -> SDL_BlendOperation |
|
| -> SDL_BlendFactor |
|
| -> SDL_BlendFactor |
|
| -> SDL_BlendOperation |
|
| -> IO SDL_BlendMode |
Compose a custom blend mode for renderers.
The functions setRenderDrawBlendMode and setTextureBlendMode accept the SDL_BlendMode returned by this function if the renderer supports it.
A blend mode controls how the pixels from a drawing operation (source) get combined with the pixels from the render target (destination). First, the components of the source and destination pixels get multiplied with their blend factors. Then, the blend operation takes the two products and calculates the result that will get stored in the render target.
Expressed in pseudocode, it would look like this:
dstRGB = colorOperation(srcRGB * srcColorFactor, dstRGB * dstColorFactor);
dstA = alphaOperation(srcA * srcAlphaFactor, dstA * dstAlphaFactor);
Where the functions colorOperation(src, dst) and alphaOperation(src, dst) can return one of the following:
src + dst
src - dst
dst - src
min(src, dst)
max(src, dst)
The red, green, and blue components are always multiplied with the first, second, and third components of the SDL_BlendFactor, respectively. The fourth component is not used.
The alpha component is always multiplied with the fourth component of the SDL_BlendFactor. The other components are not used in the alpha calculation.
Support for these blend modes varies for each renderer. To check if a specific SDL_BlendMode is supported, create a renderer and pass it to either setRenderDrawBlendMode or setTextureBlendMode. They will return with an error if the blend mode is not supported.
This list describes the support of custom blend modes for each renderer. All renderers support the four blend modes listed in the SDL_BlendMode enumeration.
- direct3d: Supports all operations with all factors. However, some factors produce unexpected results with
SDL_BLENDOPERATION_MINIMUMandSDL_BLENDOPERATION_MAXIMUM. - direct3d11: Same as Direct3D 9.
- opengl: Supports the
SDL_BLENDOPERATION_ADDoperation with all factors. OpenGL versions 1.1, 1.2, and 1.3 do not work correctly here. - opengles2: Supports the
SDL_BLENDOPERATION_ADD,SDL_BLENDOPERATION_SUBTRACT,SDL_BLENDOPERATION_REV_SUBTRACToperations with all factors. - psp: No custom blend mode support.
- software: No custom blend mode support.
Some renderers do not provide an alpha component for the default render target. The SDL_BLENDFACTOR_DST_ALPHA and SDL_BLENDFACTOR_ONE_MINUS_DST_ALPHA factors do not have an effect in this case.
- Returns
- an
SDL_BlendModethat represents the chosen factors and operations. - Thread safety
- It is safe to call this function from any thread.
- See also
setRenderDrawBlendMode,getRenderDrawBlendMode,setTextureBlendMode,getTextureBlendMode
sdl3-bindgen-sys notes
- FFI safety
- Safe foreign import of
SDL_ComposeCustomBlendMode. The unsafe flavor iscomposeCustomBlendMode. - C declaration
SDL_ComposeCustomBlendMode, defined atSDL3/SDL_blendmode.h 189:43
Since: 3.2.0