Bâtiment primitif


GameMaker Studio 2 vous permet de définir vos propres primitives personnalisées en suivant les spécifications du format de vertex que vous avez choisi (voir Formats de sommet). Ceux-ci peuvent ensuite être utilisés dans tous les shaders que vous avez créés.

Toutes les primitives que vous créez sont conservées dans un tampon de vertex. Cela doit être créé au préalable et référencé par les fonctions utilisées pour construire votre primitive. Le vertex buffer peut être réutilisé autant de fois que nécessaire pour créer des primitives différentes, ou il peut être "gelé" pour maintenir un type primitif spécifique pour la durée de votre jeu ou niveau (ce qui est l'approche la plus rapide, donc si vous connaissez qu'une primitive que vous construisez ne changera pas, vous devriez toujours utiliser cette option).

Les fonctions suivantes sont disponibles pour le vertex buffer:


Les primitives que vous construisez doivent suivre le format que vous avez défini en utilisant les fonctions Vertex Formats, donc si vous avez défini un format de vertex avec seulement des données positionnelles, il est inutile de construire votre primitive avec des données de couleur. Vous devez noter que l'ordre dans lequel vous ajoutez des propriétés à la primitive que vous construisez est défini par l'ordre dans lequel vous avez ajouté ces propriétés lors de la création du format de sommet, donc si vous avez défini le format vectoriel avec la position, la couleur et la texture coordonnée, vous devez ajouter ces propriétés à la primitive en cours de construction dans le même ordre sinon vous obtiendrez des erreurs.

Un exemple de construction d'une primitive de triangle unique est indiqué dans le code suivant:

v_buff = vertex_create_buffer();
vertex_begin(v_buff, global.my_format);
vertex_position(v_buff, 10, 10);
vertex_colour(v_buff, c_white, 1);
vertex_texcoord(v_buff, 0, 0);
vertex_position(v_buff, 110, 10);
vertex_colour(v_buff, c_white, 1);
vertex_texcoord(v_buff, 1, 0);
vertex_position(v_buff, 110, 110);
vertex_colour(v_buff, c_white, 1);
vertex_texcoord(v_buff, 1, 1);
vertex_end(v_buff);
var tex = background_get_texture(background1);
shader_set(shader_prim);
vertex_submit(v_buff, pr_trianglelist, tex);
shader_reset();

Les primitives peuvent être des points, des listes de lignes ou des bandes, ou des listes ou des bandes triangulaires, mais vous n'êtes pas autorisé à utiliser des ventilateurs triangulaires car la plupart des matériels mobiles n'accepteront pas ce type primitif. Les constantes utilisées pour définir ces différents types primitifs peuvent être trouvées ici.

NOTE: Vous pouvez construire la primitive et la stocker dans le vertex buffer à n'importe quelle étape de votre partie, cependant pour la dessiner, vous devez la soumettre pendant l' événement Draw.

Les fonctions suivantes sont disponibles pour créer des primitives: