Forum » » Création-Développement » » Dungeon Crawler (Odyssey) Os4
Posté : 28-04-2016 19:07
Ahhh 1000 excuses, oui oui il n'y a qu'un seul buffer de vertex à afficher. Bien évidement, hors de question d'utiliser un memcpy(), le changement de structure entre source et destination se fait naturellement dans la boucle de transform&lightning!
INPUTformat *input; //(le mesh de base: x/y/z/uv/normal/binormal/tangent)
OUTPUTformat *output; (le buffer qui sera rendu: x/y/z/rgba/uvw)
for i=0 to nombre de vertex
{
output xyz = input xyz transformé
output rgba = éclairage (une petite boucle si plusieurs lumières)
output uvw = input uv
}
Tout connement non? Et au pire si on a plusieurs type de VertexOUTPUT, suffit d'adapter à peine de code pour s'adapter à tous les types.
Ensuite on fait pareil avec les indices pendant la boucle de clipping:
for i=0 to nombre d'indice
{
Si polygon pas clippé on copy les 3 indices de IN à OUT
Si polygon hors écran on ne fait rien
Si polygon à cheval, on créés quelques nouveaux vertex OUT/indice OUT
}
Puis évidement un dernier petit passage sur les vertex pour les transformer à l'écran 2D.
>>> NB: je vois pas pourquoi tu mettais ta couleur RGBA en entrée du lighting puisque elle vient que du materiau et de la VN
Pour précalculer les lumières statiques sur les objets statiques. Aucune raison de recalculer à chaque frame la lumière d'un plafonnier fixe sur un mur. Ainsi dans mon transform&lightning je ne calcule l'éclairage que si l'objet OU la lumière est de type "dynamique (modifable/déplaçable)".
Cet article provient de Le site des utilisateurs francophones actuels et futurs d'AmigaOS 4.x
https://amiga-ng.org/viewtopic.php?topic=1412&forum=14