sdlLockTextureToSurface function

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 this is filled in with an SDL surface representing the locked area. \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.1.3.

\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 = libSdl3.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;
}