Surfaces


Dans les événements de dessin normaux, GameMaker Studio 2 ne dessine pas directement sur l'écran, mais dessine plutôt sur une surface appelée surface de l' application. Cette surface est fondamentalement une "toile" vierge qui peut ensuite être manipulée avant d'être attirée à l'écran si nécessaire, et dans la plupart des cas, GameMaker Studio 2 gère cela pour vous (bien que vous puissiez également le manipuler vous-même dans le code pour les shaders beaucoup d'autres choses - plus de détails sont donnés ci-dessous).

Cependant, en dehors de cette surface d'application, vous pouvez également créer vos propres surfaces et les utiliser pour créer des effets spéciaux étonnants ou subtils dans votre jeu. Par exemple, vous pouvez utiliser des surfaces pour "attraper" des instances, qui peuvent ensuite être détruites. Vous pouvez ainsi créer un effet de décalque où l'image-objet de l'instance est affichée comme si elle existait encore, permettant des effets graphiques comme débris, sang, etc... sans frais généraux de traitement réel. Une autre chose que vous pouvez faire avec les surfaces est de les utiliser comme des textures à manipuler, ou de créer des sprites "à la volée", ou de créer des superpositions complexes. en fait, les utilisations pour les surfaces sont infinies!

Les surfaces normales sont assez faciles à utiliser, mais il y a quelques règles de base à suivre quand vous les utilisez:

L'utilisation de base d'une surface est la suivante: vous créez d'abord une surface et affectez son index à une variable. Vous devez ensuite placer la cible de dessin sur la surface plutôt que sur l'affichage et dessiner les choses que vous souhaitez ainsi que d'effectuer d'autres manipulations. Une fois que vous avez terminé, vous réinitialisez la cible de dessin de sorte que tout autre dessin se répète à l'écran. Une chose à noter est que si vous avez besoin de dessiner tout l'affichage sur une surface (y compris les carreaux, les arrière-plans etc...) vous pouvez simplement accéder à la surface de l'application (voir plus bas) ou assigner une surface à une vue port en utilisant la variable view_surface_id[0..7] comme avec tout ce qui est visible dans cette vue, le port sera tracé sur la surface correspondante.

Les fonctions suivantes existent pour traiter les surfaces (ces fonctions sont spécifiques à la création et à la manipulation de surfaces, mais pour les dessiner à l'écran, vous devez utiliser les fonctions de dessin spécifiques que vous trouverez dans la section Dessins de surface ci-dessous):


Comme mentionné ci-dessus, tout le dessin normal dans votre jeu est fait sur la surface d'application, et cette surface peut être changée et manipulée juste comme une surface normale. Cependant, ce n'est pas une surface normale et les utilisateurs avancés trouveront qu'il permet un contrôle complet sur comment et quand les choses sont dessinées dans GameMaker Studio 2. Pour plus de détails, ainsi que des fonctions spécifiques pour cette fonctionnalité, veuillez consulter la section suivante:

  1. La surface d'application

Les fonctions et variables suivantes existent pour référencer la surface de l'application:

Et vous avez également quelques fonctions spéciales qui sont conçues uniquement pour une utilisation avec la surface de l'application:


Les surfaces sont un outil graphique incroyablement puissant que GameMaker Studio 2 vous fournit pour créer des effets spéciaux et une foule d'autres choses. Ils sont relativement simples à utiliser car ils sont essentiellement une toile que vous dessinez à la place de l'écran d'affichage, et cette toile peut ensuite être manipulée et modifiée avant d'être dessinée avec les fonctions de cette section.

REMARQUE: Lorsque vous travaillez avec des surfaces, il est possible qu'elles cessent d'exister à tout moment en raison de leur stockage dans la mémoire de texture. Vous devez TOUJOURS vérifier qu'une surface existe en utilisant surface_exists avant de les référencer directement.

Les fonctions suivantes existent pour dessiner des surfaces:

  1. draw_surface
  2. draw_surface_ext
  3. draw_surface_part
  4. draw_surface_part_ext
  5. draw_surface_stretched
  6. draw_surface_stretched_ext
  7. draw_surface_tiled
  8. draw_surface_tiled_ext
  9. draw_surface_general