SDL3pp
A slim C++ wrapper for SDL3
|
An efficient driver-specific representation of pixel data. More...
Public Member Functions | |
PropertiesRef | GetProperties () const |
Get the properties associated with a texture. | |
RendererRef | GetRenderer () const |
Get the renderer that created an TextureRef. | |
void | SetMod (Color c) |
Set an additional color and alpha values multiplied into render copy operations. | |
void | SetMod (FColor c) |
Set an additional color and alpha values multiplied into render copy operations. | |
FColor | GetMod () const |
Get the additional color value multiplied into render copy operations. | |
void | GetMod (Color *c) const |
Get the additional color value multiplied into render copy operations. | |
void | GetMod (FColor *c) const |
Get the additional color value multiplied into render copy operations. | |
void | SetColorMod (Uint8 r, Uint8 g, Uint8 b) |
Set an additional color value multiplied into render copy operations. | |
void | SetColorMod (float r, float g, float b) |
Set an additional color value multiplied into render copy operations. | |
void | GetColorMod (Uint8 *r, Uint8 *g, Uint8 *b) const |
Get the additional color value multiplied into render copy operations. | |
void | GetColorMod (float *r, float *g, float *b) const |
Get the additional color value multiplied into render copy operations. | |
void | SetAlphaMod (Uint8 alpha) |
Set an additional alpha value multiplied into render copy operations. | |
void | SetAlphaMod (float alpha) |
Set an additional alpha value multiplied into render copy operations. | |
float | GetAlphaMod () const |
Get the additional alpha value multiplied into render copy operations. | |
void | GetAlphaMod (Uint8 *alpha) const |
Get the additional alpha value multiplied into render copy operations. | |
void | GetAlphaMod (float *alpha) const |
Get the additional alpha value multiplied into render copy operations. | |
void | SetBlendMode (BlendMode blendMode) |
Set the blend mode for a texture, used by RendererRef.RenderTexture(). | |
BlendMode | GetBlendMode () const |
Get the blend mode used for texture copy operations. | |
void | SetScaleMode (ScaleMode scaleMode) |
Set the scale mode used for texture scale operations. | |
ScaleMode | GetScaleMode () const |
Get the scale mode used for texture scale operations. | |
void | Update (OptionalRef< const SDL_Rect > rect, const void *pixels, int pitch) |
Update the given texture rectangle with new pixel data. | |
void | UpdateYUV (OptionalRef< const SDL_Rect > rect, const Uint8 *Yplane, int Ypitch, const Uint8 *Uplane, int Upitch, const Uint8 *Vplane, int Vpitch) |
Update a rectangle within a planar YV12 or IYUV texture with new pixel data. | |
void | UpdateNV (OptionalRef< const SDL_Rect > rect, const Uint8 *Yplane, int Ypitch, const Uint8 *UVplane, int UVpitch) |
Update a rectangle within a planar NV12 or NV21 texture with new pixels. | |
TextureLock | Lock (OptionalRef< const SDL_Rect > rect={}) & |
Lock a portion of the texture for write-only pixel access. | |
int | GetWidth () const |
Get the width in pixels. | |
int | GetHeight () const |
Get the height in pixels. | |
Point | GetSize () const |
Get the size in pixels. | |
PixelFormat | GetFormat () const |
Get the pixel format. | |
constexpr | Resource (T resource={}) |
Constructs from the underlying resource. | |
constexpr | Resource (const ResourceHandle< Resource< T > > auto &resource) |
Constructs from pointer like. | |
constexpr | Resource (std::nullptr_t) |
Equivalent to default ctor. | |
constexpr | Resource (std::nullopt_t) |
Equivalent to default ctor. | |
![]() | |
constexpr | Resource (SDL_Texture * resource={}) |
Constructs from the underlying resource. | |
constexpr | Resource (const ResourceHandle< Resource< SDL_Texture * > > auto &resource) |
Constructs from pointer like. | |
constexpr | Resource (std::nullptr_t) |
Equivalent to default ctor. | |
constexpr | Resource (std::nullopt_t) |
Equivalent to default ctor. | |
constexpr | operator bool () const |
True if contains a valid resource. | |
constexpr | operator value_type () const |
Converts back to underlying type. | |
constexpr bool | operator== (const Resource &other) const=default |
Comparison. | |
constexpr bool | operator== (std::nullopt_t) const |
Comparison. | |
constexpr bool | operator== (std::nullptr_t) const |
Comparison. | |
constexpr SDL_Texture * | get () const |
Return contained resource;. | |
constexpr const SDL_Texture * | operator-> () const |
Access to fields. | |
constexpr SDL_Texture * | operator-> () |
Access to fields. | |
Static Public Member Functions | |
static void | reset (SDL_Texture *resource) |
Destroy the specified texture. | |
Additional Inherited Members | |
![]() | |
using | value_type = SDL_Texture * |
The raw resource type. | |
|
inline |
Error | on failure. |
|
inline |
|
inline |
|
inline |
Error | on failure. |
|
inline |
r | a pointer filled in with the current red color value. |
g | a pointer filled in with the current green color value. |
b | a pointer filled in with the current blue color value. |
Error | on failure. |
|
inline |
r | a pointer filled in with the current red color value. |
g | a pointer filled in with the current green color value. |
b | a pointer filled in with the current blue color value. |
Error | on failure. |
|
inline |
Error | on failure. |
|
inline |
c | a pointer filled in with the current color and alpha mod values. |
Error | on failure. |
|
inline |
c | a pointer filled in with the current color and alpha mod values. |
Error | on failure. |
|
inline |
The following read-only properties are provided by SDL:
prop::Texture.COLORSPACE_NUMBER
: an Colorspace value describing the texture colorspace.prop::Texture.FORMAT_NUMBER
: one of the enumerated values in PixelFormat.prop::Texture.ACCESS_NUMBER
: one of the enumerated values in TextureAccess.prop::Texture.WIDTH_NUMBER
: the width of the texture in pixels.prop::Texture.HEIGHT_NUMBER
: the height of the texture in pixels.prop::Texture.SDR_WHITE_POINT_FLOAT
: for HDR10 and floating point textures, this defines the value of 100% diffuse white, with higher values being displayed in the High Dynamic Range headroom. This defaults to 100 for HDR10 textures and 1.0 for other textures.prop::Texture.HDR_HEADROOM_FLOAT
: for HDR10 and floating point textures, this defines the maximum dynamic range used by the content, in terms of the SDR white point. If this is defined, any values outside the range supported by the display will be scaled into the available HDR headroom, otherwise they are clipped. This defaults to 1.0 for SDR textures, 4.0 for HDR10 textures, and no default for floating point textures.With the direct3d11 renderer:
prop::Texture.D3D11_TEXTURE_POINTER
: the ID3D11Texture2D associated with the textureprop::Texture.D3D11_TEXTURE_U_POINTER
: the ID3D11Texture2D associated with the U plane of a YUV textureprop::Texture.D3D11_TEXTURE_V_POINTER
: the ID3D11Texture2D associated with the V plane of a YUV textureWith the direct3d12 renderer:
prop::Texture.D3D12_TEXTURE_POINTER
: the ID3D12Resource associated with the textureprop::Texture.D3D12_TEXTURE_U_POINTER
: the ID3D12Resource associated with the U plane of a YUV textureprop::Texture.D3D12_TEXTURE_V_POINTER
: the ID3D12Resource associated with the V plane of a YUV textureWith the vulkan renderer:
prop::Texture.VULKAN_TEXTURE_NUMBER
: the VkImage associated with the textureWith the opengl renderer:
prop::Texture.OPENGL_TEXTURE_NUMBER
: the GLuint texture associated with the textureprop::Texture.OPENGL_TEXTURE_UV_NUMBER
: the GLuint texture associated with the UV plane of an NV12 textureprop::Texture.OPENGL_TEXTURE_U_NUMBER
: the GLuint texture associated with the U plane of a YUV textureprop::Texture.OPENGL_TEXTURE_V_NUMBER
: the GLuint texture associated with the V plane of a YUV textureprop::Texture.OPENGL_TEXTURE_TARGET_NUMBER
: the GLenum for the texture target (GL_TEXTURE_2D
, GL_TEXTURE_RECTANGLE_ARB
, etc)prop::Texture.OPENGL_TEX_W_FLOAT
: the texture coordinate width of the texture (0.0 - 1.0)prop::Texture.OPENGL_TEX_H_FLOAT
: the texture coordinate height of the texture (0.0 - 1.0)With the opengles2 renderer:
prop::Texture.OPENGLES2_TEXTURE_NUMBER
: the GLuint texture associated with the textureprop::Texture.OPENGLES2_TEXTURE_UV_NUMBER
: the GLuint texture associated with the UV plane of an NV12 textureprop::Texture.OPENGLES2_TEXTURE_U_NUMBER
: the GLuint texture associated with the U plane of a YUV textureprop::Texture.OPENGLES2_TEXTURE_V_NUMBER
: the GLuint texture associated with the V plane of a YUV textureprop::Texture.OPENGLES2_TEXTURE_TARGET_NUMBER
: the GLenum for the texture target (GL_TEXTURE_2D
, GL_TEXTURE_EXTERNAL_OES
, etc)Error | on failure. |
|
inline |
|
inline |
Error | on failure. |
|
inlinestatic |
|
inline |
When this texture is rendered, during the copy operation the source alpha value is modulated by this alpha value according to the following formula:
srcA = srcA * alpha
Alpha modulation is not always supported by the renderer; it will return false if alpha modulation is not supported.
alpha | the source alpha value multiplied into copy operations. |
Error | on failure. |
|
inline |
When this texture is rendered, during the copy operation the source alpha value is modulated by this alpha value according to the following formula:
srcA = srcA * (alpha / 255)
Alpha modulation is not always supported by the renderer; it will return false if alpha modulation is not supported.
alpha | the source alpha value multiplied into copy operations. |
Error | on failure. |
|
inline |
If the blend mode is not supported, the closest supported mode is chosen and this function returns false.
blendMode | the BlendMode to use for texture blending. |
Error | on failure. |
|
inline |
When this texture is rendered, during the copy operation each source color channel is modulated by the appropriate color value according to the following formula:
srcC = srcC * color
Color modulation is not always supported by the renderer; it will return false if color modulation is not supported.
r | the red color value multiplied into copy operations. |
g | the green color value multiplied into copy operations. |
b | the blue color value multiplied into copy operations. |
Error | on failure. |
|
inline |
When this texture is rendered, during the copy operation each source color channel is modulated by the appropriate color value according to the following formula:
srcC = srcC * (color / 255)
Color modulation is not always supported by the renderer; it will return false if color modulation is not supported.
r | the red color value multiplied into copy operations. |
g | the green color value multiplied into copy operations. |
b | the blue color value multiplied into copy operations. |
Error | on failure. |
|
inline |
When this texture is rendered, during the copy operation each source color and alpha channels are modulated by the appropriate color value according to the following formula:
srcC = srcC * (color / 255) srcA = srcA * (alpha / 255)
Color and alpha modulation is not always supported by the renderer; it will return false if either modulation is not supported.
c | the color and alpha channel values multiplied into copy operations. |
Error | on failure. |
|
inline |
When this texture is rendered, during the copy operation each source color and alpha channels are modulated by the appropriate color value according to the following formula:
srcC = srcC * (color / 255) srcA = srcA * (alpha / 255)
Color and alpha modulation is not always supported by the renderer; it will return false if either modulation is not supported.
c | the color and alpha channel values multiplied into copy operations. |
Error | on failure. |
|
inline |
The default texture scale mode is SCALEMODE_LINEAR.
If the scale mode is not supported, the closest supported mode is chosen.
scaleMode | the ScaleMode to use for texture scaling. |
Error | on failure. |
|
inline |
The pixel data must be in the pixel format of the texture, which can be queried using the prop::Texture.FORMAT_NUMBER property.
This is a fairly slow function, intended for use with static textures that do not change often.
If the texture is intended to be updated often, it is preferred to create the texture as streaming and use the locking functions referenced below. While this function will work with streaming textures, for optimization reasons you may not get the pixels back if you lock the texture afterward.
rect | an Rect structure representing the area to update, or nullptr to update the entire texture. |
pixels | the raw pixel data in the format of the texture. |
pitch | the number of bytes in a row of pixel data, including padding between lines. |
Error | on failure. |
|
inline |
You can use TextureRef.Update() as long as your pixel data is a contiguous block of NV12/21 planes in the proper order, but this function is available if your pixel data is not contiguous.
rect | a pointer to the rectangle of pixels to update, or nullptr to update the entire texture. |
Yplane | the raw pixel data for the Y plane. |
Ypitch | the number of bytes between rows of pixel data for the Y plane. |
UVplane | the raw pixel data for the UV plane. |
UVpitch | the number of bytes between rows of pixel data for the UV plane. |
Error | on failure. |
|
inline |
You can use TextureRef.Update() as long as your pixel data is a contiguous block of Y and U/V planes in the proper order, but this function is available if your pixel data is not contiguous.
rect | a pointer to the rectangle of pixels to update, or nullptr to update the entire texture. |
Yplane | the raw pixel data for the Y plane. |
Ypitch | the number of bytes between rows of pixel data for the Y plane. |
Uplane | the raw pixel data for the U plane. |
Upitch | the number of bytes between rows of pixel data for the U plane. |
Vplane | the raw pixel data for the V plane. |
Vpitch | the number of bytes between rows of pixel data for the V plane. |
Error | on failure. |