En gros, une surface, c'est comme une image (un .bmp, quoi), mais stocké uniquement dans la RAM (ou equivalent) :
On peux dessiner dessus, etc., mais ça ne se verra pas à l'écran, vu qu'on dessine ailleurs!
Ca permet donc (par exemple) de préparer un dessin, sans qu'on voit la progression, d'afficher uniquement le résultat finale.
C'est enfait le principe de fonctionnement de l'écran : tout ce qui doit être dessiné lors d'un step, va dans le "buffer", qui est en fait une grosse surface de la taille de l'écran, et à la fin du step, tout est affiché sur l'écran.
Une surface que tu crées c'est la même chose :
surface1 = surface_create(800,600) //tu crées une surface de taille 800*600
surface_set_target( surface1 ) //tu indiques à GM que tu ne vas pas dessiner sur l'écran (ce qui est donc visible) mais sur la surface nommée surface1 !!
draw_clear(0) //habitude à prendre : remplir la surface avant de dessiner dessus. Ici, on la remplit de noir.
draw_circle(50,50,128,c_red,c_yellow,false) //là, on dessine un cercle de rayon 128, en (50,50), coordonnées SUR LA SURFACE, rien à voir avec les coordonnées sur l'écran! (mais ça marche pareil, avec (0,0) en haut à gauche.
surface_reset_target() //on dit à GM qu'on arrête de dessiner dans la surface, pour que les prochains dessins soit faits normalement, sur l'écran.
-----------------
pour dessiner ta surface, c'est comme avec un sprite (vu que c'est sensiblement la même chose) :
draw_surface(0,0,surface1)
ATTENTION ! quand tu n'as plus besoin d'une surface, il est de bon ton de la supprimer, car sa prend de la place, ces choses là : :
surface_free(surface1)