# SDL_ConvertSurfaceAndColorspace

Copy an existing surface to a new surface of the specified format and colorspace.

## Header File

Defined in [<SDL3/SDL_surface.h>](https://github.com/libsdl-org/SDL/blob/main/include/SDL3/SDL_surface.h)

## Syntax

```c
SDL_Surface * SDL_ConvertSurfaceAndColorspace(SDL_Surface *surface, SDL_PixelFormat format, SDL_Palette *palette, SDL_Colorspace colorspace, SDL_PropertiesID props);
```

## Function Parameters

|                                      |                |                                                                                 |
| ------------------------------------ | -------------- | ------------------------------------------------------------------------------- |
| [SDL_Surface](SDL_Surface) *         | **surface**    | the existing [SDL_Surface](SDL_Surface) structure to convert.                   |
| [SDL_PixelFormat](SDL_PixelFormat)   | **format**     | the new pixel format.                                                           |
| [SDL_Palette](SDL_Palette) *         | **palette**    | an optional palette to use for indexed formats, may be NULL.                    |
| [SDL_Colorspace](SDL_Colorspace)     | **colorspace** | the new colorspace.                                                             |
| [SDL_PropertiesID](SDL_PropertiesID) | **props**      | an [SDL_PropertiesID](SDL_PropertiesID) with additional color properties, or 0. |

## Return Value

([SDL_Surface](SDL_Surface) *) Returns the new [SDL_Surface](SDL_Surface)
structure that is created or NULL on failure; call
[SDL_GetError](SDL_GetError)() for more information.

## Remarks

This function converts an existing surface to a new format and colorspace
and returns the new surface. This will perform any pixel format and
colorspace conversion needed.

If the original surface has alternate images, the new surface will have a
reference to them as well.

## Thread Safety

This function is not thread safe.

## Version

This function is available since SDL 3.2.0.

## See Also

- [SDL_ConvertSurface](SDL_ConvertSurface)
- [SDL_DestroySurface](SDL_DestroySurface)

----
[CategoryAPI](CategoryAPI), [CategoryAPIFunction](CategoryAPIFunction), [CategorySurface](CategorySurface)