sdlxLockTexture function render
- Pointer<
SdlTexture> texture, { - SdlxRect? rect,
Lock a portion of the texture for write-only pixel access.
As an optimization, the pixels made available for editing don't necessarily contain the old texture data. This is a write-only operation, and if you need to keep a copy of the texture data you should do that at the application level.
You must use SDL_UnlockTexture() to unlock the pixels and apply any changes.
\param texture the texture to lock for access, which was created with
SDL_TEXTUREACCESS_STREAMING.
\param rect an SDL_Rect structure representing the area to lock for access;
NULL to lock the entire texture.
\param pixels this is filled in with a pointer to the locked pixels,
appropriately offset by the locked area.
\param pitch this is filled in with the pitch of the locked pixels; the
pitch is the length of one row in bytes.
\returns true on success or false if the texture is not valid or was not
created with SDL_TEXTUREACCESS_STREAMING; call SDL_GetError()
for more information.
\threadsafety This function should only be called on the main thread.
\since This function is available since SDL 3.2.0.
\sa SDL_LockTextureToSurface \sa SDL_UnlockTexture
extern SDL_DECLSPEC bool SDLCALL SDL_LockTexture(SDL_Texture *texture, const SDL_Rect *rect, void **pixels, int *pitch)
See also:
Implementation
({Pointer<Void> pixels, int pitch})? sdlxLockTexture(
Pointer<SdlTexture> texture, {
SdlxRect? rect,
}) => ffi.using((arena) {
final pixelsPointer = arena<Pointer<Void>>();
final pitchPointer = arena<Int32>();
final result = sdlLockTexture(
texture,
rect?.toNative(arena) ?? nullptr,
pixelsPointer,
pitchPointer,
);
if (!result) {
return null;
}
return (pixels: pixelsPointer.value, pitch: pitchPointer.value);
});