imgLoadTexture function
Load an image from a filesystem path into a GPU texture.
An SDL_Texture represents an image in GPU memory, usable by SDL's 2D Render API. This can be significantly more efficient than using a CPU-bound SDL_Surface if you don't need to manipulate the image directly after loading it.
If the loaded image has transparency or a colorkey, a texture with an alpha channel will be created. Otherwise, SDL_image will attempt to create an SDL_Texture in the most format that most reasonably represents the image data (but in many cases, this will just end up being 32-bit RGB or 32-bit RGBA).
There is a separate function to read files from an SDL_IOStream, if you need an i/o abstraction to provide data from anywhere instead of a simple filesystem read; that function is IMG_LoadTexture_IO().
If you would rather decode an image to an SDL_Surface (a buffer of pixels in CPU memory), call IMG_Load() instead.
When done with the returned texture, the app should dispose of it with a call to SDL_DestroyTexture().
\param renderer the SDL_Renderer to use to create the GPU texture. \param file a path on the filesystem to load an image from. \returns a new texture, or NULL on error.
\since This function is available since SDL_image 3.0.0.
\sa IMG_LoadTextureTyped_IO \sa IMG_LoadTexture_IO
extern SDL_DECLSPEC SDL_Texture * SDLCALL IMG_LoadTexture(SDL_Renderer *renderer, const char *file)
Implementation
Pointer<SdlTexture> imgLoadTexture(
Pointer<SdlRenderer> renderer, String? file) {
final imgLoadTextureLookupFunction = libSdl3Image.lookupFunction<
Pointer<SdlTexture> Function(
Pointer<SdlRenderer> renderer, Pointer<Utf8> file),
Pointer<SdlTexture> Function(Pointer<SdlRenderer> renderer,
Pointer<Utf8> file)>('IMG_LoadTexture');
final filePointer = file != null ? file.toNativeUtf8() : nullptr;
final result = imgLoadTextureLookupFunction(renderer, filePointer);
calloc.free(filePointer);
return result;
}