imgLoadGpuTextureIo function image

Pointer<SdlGpuTexture> imgLoadGpuTextureIo(
  1. Pointer<SdlGpuDevice> device,
  2. Pointer<SdlGpuCopyPass> copyPass,
  3. Pointer<SdlIoStream> src,
  4. bool closeio,
  5. Pointer<Int32> width,
  6. Pointer<Int32> height,
)

Load an image from an SDL data source into a GPU texture.

An SDL_GPUTexture represents an image in GPU memory, usable by SDL's GPU API. Regardless of the source format of the image, this function will create a GPU texture with the format SDL_GPU_TEXTUREFORMAT_R8G8B8A8_UNORM with no mip levels. It can be bound as a sampled texture from a graphics or compute pipeline and as a a readonly storage texture in a compute pipeline.

If closeio is true, src will be closed before returning, whether this function succeeds or not. SDL_image reads everything it needs from src during this call in any case.

There is a separate function to read files from disk without having to deal with SDL_IOStream: `IMG_LoadGPUTexture(device, copy_pass, "filename.jpg", width, height) will call this function and manage those details for you, determining the file type from the filename's extension.

There is also IMG_LoadGPUTextureTyped_IO(), which is equivalent to this function except a file extension (like "BMP", "JPG", etc) can be specified, in case SDL_image cannot autodetect the file format.

When done with the returned texture, the app should dispose of it with a call to SDL_ReleaseGPUTexture().

\param device the SDL_GPUDevice to use to create the GPU texture. \param copy_pass the SDL_GPUCopyPass to use to upload the loaded image to the GPU texture. \param src an SDL_IOStream that data will be read from. \param closeio true to close/free the SDL_IOStream before returning, false to leave it open. \param width a pointer filled in with the width of the GPU texture. may be NULL. \param height a pointer filled in with the width of the GPU texture. may be NULL. \returns a new GPU texture, or NULL on error.

\since This function is available since SDL_image 3.4.0.

\sa IMG_LoadGPUTexture \sa IMG_LoadGPUTextureTyped_IO

extern SDL_DECLSPEC SDL_GPUTexture * SDLCALL IMG_LoadGPUTexture_IO(SDL_GPUDevice *device, SDL_GPUCopyPass *copy_pass, SDL_IOStream *src, bool closeio, int *width, int *height)

Implementation

Pointer<SdlGpuTexture> imgLoadGpuTextureIo(
  Pointer<SdlGpuDevice> device,
  Pointer<SdlGpuCopyPass> copyPass,
  Pointer<SdlIoStream> src,
  bool closeio,
  Pointer<Int32> width,
  Pointer<Int32> height,
) {
  final imgLoadGpuTextureIoLookupFunction = _libImage
      .lookupFunction<
        Pointer<SdlGpuTexture> Function(
          Pointer<SdlGpuDevice> device,
          Pointer<SdlGpuCopyPass> copyPass,
          Pointer<SdlIoStream> src,
          Uint8 closeio,
          Pointer<Int32> width,
          Pointer<Int32> height,
        ),
        Pointer<SdlGpuTexture> Function(
          Pointer<SdlGpuDevice> device,
          Pointer<SdlGpuCopyPass> copyPass,
          Pointer<SdlIoStream> src,
          int closeio,
          Pointer<Int32> width,
          Pointer<Int32> height,
        )
      >('IMG_LoadGPUTexture_IO');
  return imgLoadGpuTextureIoLookupFunction(
    device,
    copyPass,
    src,
    closeio ? 1 : 0,
    width,
    height,
  );
}