buffer_create_from_vertex_buffer(vertex_buffer, type, alignment)
| Argument | La description |
|---|---|
| vertex_buffer | L'index du tampon de vertex à utiliser. |
| type | Le type de tampon à créer (voir la liste des constantes ci-dessous). |
| alignment | L'alignement des octets pour le tampon |
Retours: Real
Vous utilisez cette fonction pour allouer une partie de la mémoire en tant que tampon dans votre jeu rempli avec les données d'un tampon vertex précédemment créé. La fonction renvoie un identifiant de tampon unique qui doit être stocké dans une variable et utilisé pour tous les autres appels de fonctions au tampon. La fonction prend l'identifiant pour le vertex buffer à utiliser (comme retourné par la fonction vertex_create_buffer(), par exemple) avec les constantes suivantes utilisées pour définir le type de tampon:
| Constant | La description |
|---|---|
| buffer_fixed | Un tampon de taille fixe. |
| buffer_grow | Un tampon qui va "croître" dynamiquement à mesure que les données sont ajoutées |
| buffer_wrap | Un tampon où les données vont "envelopper". Lorsque les données ajoutées atteignent la limite de la taille du tampon, l'écrasement sera replacé au début de la mémoire tampon et l'écriture continuera à partir de ce point. |
| buffer_fast | Un tampon spécial "dépouillé" extrêmement rapide à lire / écrire. Peut seulement être utilisé avec buffer_u8 types de données, et doit être aligné sur 1 octet. |
| buffer_vbuffer |
En dehors du type de tampon, vous devrez également définir l' alignement des octets pour le tampon. Cette valeur varie en fonction des données que vous souhaitez stocker dans le tampon, et dans la plupart des cas, la valeur 1 est parfaitement correcte. Cependant, sachez que pour certaines opérations, un alignement spécifique est essentiel et qu'un alignement incorrect peut entraîner des erreurs (pour plus de détails sur l'alignement, voir Tampons ). Ce qui suit est un guide général pour montrer quelles valeurs sont les plus appropriées pour chaque type de données (en cas de doute, utilisez un alignement de 1):
- Les chaînes doivent être alignées sur 1 octet.
- Les entiers 8 bits signés ou non signés peuvent être alignés sur n'importe quelle valeur, mais notez que pour un tampon rapide (voir buffer_write ) il doit être aligné sur 1.
- Les entiers 16 bits signés ou non signés doivent être alignés sur 2 octets.
- Les entiers 32 bits signés ou non signés doivent être alignés sur 4 octets
- Les flotteurs de 16 bits maximum doivent être alignés sur 2 octets. (Pas actuellement supporté!)
- Flotteurs jusqu'à 32 bits doivent être alignés à 4 octets.
- Les flotteurs jusqu'à 64 bits doivent être alignés sur 8 octets.
REMARQUE: les tampons Vertex sont alignés sur 1 octet, mais vous pouvez créer le tampon avec n'importe quel alignement en fonction de la manière dont vous souhaitez traiter les données, car les données de sommet sont simplement une copie de mémoire brute dans le tampon.
REMARQUE: il est important de supprimer de la mémoire les ressources créées dynamiquement comme celles-ci lorsque vous n'en avez plus besoin pour éviter les fuites de mémoire. Lorsque vous avez terminé avec le tampon que vous avez créé, vous devez le libérer en utilisant buffer_delete. Notez également que le tampon de vertex utilisé pour créer le nouveau tampon n'est pas non plus supprimé de la mémoire et vous devez utiliser la fonction vertex_delete_buffer() quand ce n'est plus nécessaire.
player_buffer =
buffer_create_from_vertex_buffer(model_buffer, buffer_grow,
1);
Le code ci-dessus alloue de la mémoire à un tampon puis copie les données du tampon vertex donné, retournant l'index du nouveau tampon qui est stocké dans la variable "player_buffer", pour une utilisation future.