Accueil

CPC


 Dev C sur CPC :

  • le C sur CPC
  • SDCC débuter
  • fichier BAT pour compiler
  • Dessiner Sur CPC
  • Optimiser le dessin
  • Ecrire du texte
  • Lire un fichier
  • Ecrire un fichier
  • Swap d'écran
  • CLS ultra rapide
  • H line
  • Attaquer le CRTC
  • Full Overscan
  • Put pixel très rapide
  • Afficher une image
  • Slide show 1
  • Bézier
  • faire un fichier pour Bézier

  • Quelque fonctions utile

  • Animation
  • 3D
  • Raster
  • Manche a balais

    Le plan du Site

  •  
      Ici les nouvelle du site  
     
    Recherche ?
    Saissisez un mot clé

     
      Quelques chiffres
    Visiteurs:11137
    Visiteurs aujourd'hui:8
     
     
    Me contacter
    Donnez votre avis
     
    Le site de Steph : Le CPC

    3D temps IREEL

    Fil de fer


    On vas partir de notre fichier cubep2.c pour faire un affichage en fil de fer, et non en point.
    Il faut déjà ajouter la fonction lineBresenham à notre sources, puis une fonction pour dessiner des trais et non des point. J'ai volontairement fait des trais de couleur différente pour "voir" un peut mieux, voici cette fonction :

    void ligne(int a, int b, unsigned char couleur)
    {
      lineBresenham(Point2D[a].x,Point2D[a].y,Point2D[b].x,Point2D[b].y, couleur);
    }
    
    void FilDeFer(unsigned char couleur)
    {
     // On affiche la face avant
     ligne(0,1,1); ligne(1,2,1);
     ligne(2,3,1); ligne(3,0,1);
    
     // Puis la face arriere
     ligne(4,5,2); ligne(5,6,2);
     ligne(6,7,2); ligne(7,4,2);
    
     // Et enfin les aretes restantes
     ligne(0,5,3);
     ligne(1,4,3);
     ligne(2,7,3);
     ligne(3,6,3);
    }
    

    Aller un petit run"cubef1 et cela donne quoi ?

    L'animation est fidèle en temps vis à vis d'un CPC

    Alors, cela donne quand même pas trop mal, on a toujours un peut de temps pour le calcule et on voie le cube se dessiner. Pour éviter cela, on vas utiliser un double buffer, on en affiche un, pendant se temps on dessine dans l'autre, quand on a fini, on affiche le buffer et on redessine dans l'autre.
    On vas donc ajouter une méthode pour swaper l'adresse de l'écran du CPC, il faut modifier la fonction de dessin et d'effacement pour dessiner et effacer le bon écran.
    Pour la fonction CLS_WidthPile la modif j'y suis allé un peut à la bourrin, y'a plus propre :-)
    On vas déclarer deux variables globale CurentSCR qui est l'écran affiché et DrawSCR qui est l'écran sur lequel on dessine.
    On va également retirer toutes les écritures de texte, car comme nous passons par les fonctions système, elle ne peuvent écrire que sur l'écran C000. pour que cela fonctionne sur les autres, il faudra les réécrire.
    Toutes ces modification se trouve dans le fichier cubef2.c, voyons ce que cela donne.


    L'animation est fidèle en temps vis à vis d'un CPC


    On vas maintenant utiliser la fonction PutPixelFastMode1 pour le dessin, cela vas nous faire encore gagner un peut de temps pour l'affichage, bien que finalement se ne soit pas trop cette partie qui prenne du temps, mais le calcule de rotation.
    Avec cubef3.c nous avons notre fonction PutPixelFastMode1 pour le dessin, cela donne donc cela :


    L'animation est fidèle en temps vis à vis d'un CPC



    Alors cela fait un peut mieux, mais il reste encore à optimiser le temps de calcule...

    Voila, comme d'hab, le tout se trouve dans se ZIP