sdlLockTextureToSurface function render

bool sdlLockTextureToSurface(
  1. Pointer<SdlTexture> texture,
  2. Pointer<SdlRect> rect,
  3. Pointer<Pointer<SdlSurface>> surface
)

Lock a portion of the texture for write-only pixel access, and expose it as a SDL surface.

Besides providing an SDL_Surface instead of raw pixel data, this function operates like SDL_LockTexture.

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.

The returned surface is freed internally after calling SDL_UnlockTexture() or SDL_DestroyTexture(). The caller should not free it.

\param texture the texture to lock for access, which must be created with SDL_TEXTUREACCESS_STREAMING. \param rect a pointer to the rectangle to lock for access. If the rect is NULL, the entire texture will be locked. \param surface a pointer to an SDL surface of size rect. Don't assume any specific pixel content. \returns true on success or false on failure; 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_LockTexture \sa SDL_UnlockTexture

extern SDL_DECLSPEC bool SDLCALL SDL_LockTextureToSurface(SDL_Texture *texture, const SDL_Rect *rect, SDL_Surface **surface)

Implementation

bool sdlLockTextureToSurface(
  Pointer<SdlTexture> texture,
  Pointer<SdlRect> rect,
  Pointer<Pointer<SdlSurface>> surface,
) {
  final sdlLockTextureToSurfaceLookupFunction = _libSdl
      .lookupFunction<
        Uint8 Function(
          Pointer<SdlTexture> texture,
          Pointer<SdlRect> rect,
          Pointer<Pointer<SdlSurface>> surface,
        ),
        int Function(
          Pointer<SdlTexture> texture,
          Pointer<SdlRect> rect,
          Pointer<Pointer<SdlSurface>> surface,
        )
      >('SDL_LockTextureToSurface');
  return sdlLockTextureToSurfaceLookupFunction(texture, rect, surface) == 1;
}