def from_surface(renderer, surface):
        """Create a texture from an existing surface.

        Args:
            surface (Surface): The surface containing pixel data used to fill the texture.

        Returns:
            Texture: A texture containing the pixels from surface.

        Raises:
            SDLError: If an error is encountered.
        """
        texture = object.__new__(Texture)
        texture._ptr = check_ptr_err(lib.SDL_CreateTextureFromSurface(renderer._ptr, surface._ptr))
        return texture