Accueil Ti-Gen Foire Aux Questions Chat sur le chan #tigcc sur IRC
Liste des membres Rechercher Aide
Bienvenue Invité !   Se connecter             Mes sujets   
Administrer
0 membre(s) et 1 visiteur(s) actif(s) durant les 5 dernières minutes Utilisateurs actifs : Aucun membre + 1 visiteur
Avant de poster sur le forum, il y a des régles de bases à respecter pour une bonne entente et un respect de tous.
Veuillez lire la charte du forum.
  :: Index » Forum Ti68K » Programmation C » DrawStr trop lente (47 réponse(s))
./POST DE DEPART (post n°0)   Marquer comme non lu.
Thor Ecrit le: Jeudi 3 juin 2004 à 12:00 Déconnecté(e)    Voir le profil de Thor Envoyer un email à Thor Visiter le site WEB de Thor Envoyer un message privé à Thor  


Je cherche une fonction DrawStr qui est rapide car j'ai remarqué que DrawStr est bien trop lente pour mon futur jeu. Ma fonction nécessite que la fonction d'affichage de chaîne de caractères puisse afficher dans les 3 fontes mais si c'est beaucoup plus rapide sans cette option je peux m'en passer. :)

Enfin ma dernière volonté est que cette fonction soit en C car mes projets étant open-source et programmé en C je pense qu'il est préférable de ne pas inclure d'ASM. Merci d'avance

#gni#
Cyril MOTTIER aka {==Thor==}
Modérateur général du forum de Tigen
[Etudiant à l'Institut National des Sciences Appliquées (INSA) de Rennes]
Mon site perso c'est ici
    
./Post n°1   Marquer comme non lu.
Sasume Ecrit le: Jeudi 3 juin 2004 à 12:58 Déconnecté(e)    Voir le profil de Sasume Envoyer un email à Sasume Visiter le site WEB de Sasume Envoyer un message privé à Sasume  

Si tu veux de la rapidité, il ne faut pas tourner le dos à l'ASM.
Cependant, tu dois pouvoir faire des fonctions plus rapides que DrawStr en C.
Le problème, c'est de savoir comment récupérer l'adresse des fonts, le reste, c'est de l'affichage de sprites.

Mais en général, dans un jeu, ce n'est pas l'affichage de chaines de caractères qui prend le plus de temps, à moins que tu aies vraiment BEAUCOUP de chaines à afficher...
    
./Post n°2   Marquer comme non lu.
Thor Ecrit le: Jeudi 3 juin 2004 à 13:38 Déconnecté(e)    Voir le profil de Thor Envoyer un email à Thor Visiter le site WEB de Thor Envoyer un message privé à Thor  


Oui pour écrire "Salut" je dois l'afficher 7 fois !!! Je n'est pas trop envie de distribuer l'algo ici mais si tu veux et bien je m'y résouderai !!!
Cyril MOTTIER aka {==Thor==}
Modérateur général du forum de Tigen
[Etudiant à l'Institut National des Sciences Appliquées (INSA) de Rennes]
Mon site perso c'est ici
    
./Post n°3   Marquer comme non lu.
Sasume Ecrit le: Jeudi 3 juin 2004 à 13:39 Déconnecté(e)    Voir le profil de Sasume Envoyer un email à Sasume Visiter le site WEB de Sasume Envoyer un message privé à Sasume  

#trifus#
    
./Post n°4   Marquer comme non lu.
Thor Ecrit le: Jeudi 3 juin 2004 à 13:52 Déconnecté(e)    Voir le profil de Thor Envoyer un email à Thor Visiter le site WEB de Thor Envoyer un message privé à Thor  


on voilà ma fonction alors si tu veux comprendre mon problème :
//This function can draw an outlined string with 3 differents fonts.
//Nevertheless it is very slow . I will try to optimize this one
//by using an other function to draw a string
void OutlinedStr (unsigned short x, unsigned short y, const char *str, unsigned short font)
{
  FontSetSys (font);
  signed short a,b;
  for (a=-1;a<2;a++)
  {
    for (b=-1;b<2;b++)
    {
      SetPlane(0);
    DrawStr (x+a, y+b, str, A_NORMAL);
    SetPlane(1);
   DrawStr (x+a, y+b, str, A_NORMAL);
    }
  }
  SetPlane(1);
  DrawStr (x, y, str, A_XOR); 
}
Cyril MOTTIER aka {==Thor==}
Modérateur général du forum de Tigen
[Etudiant à l'Institut National des Sciences Appliquées (INSA) de Rennes]
Mon site perso c'est ici
    
./Post n°5   Marquer comme non lu.
Sasume Ecrit le: Jeudi 3 juin 2004 à 13:55 Déconnecté(e)    Voir le profil de Sasume Envoyer un email à Sasume Visiter le site WEB de Sasume Envoyer un message privé à Sasume  

OK, je comprends. Ça rend comment, visuellement ?
C'est sûr que ça ne doit pas être rès rapide. :)
Attends le passage de Lionel Debroux, il a des routines bien plus rapides que celles d'AMS.
    
./Post n°6   Marquer comme non lu.
Thor Ecrit le: Jeudi 3 juin 2004 à 14:00 Déconnecté(e)    Voir le profil de Thor Envoyer un email à Thor Visiter le site WEB de Thor Envoyer un message privé à Thor  


Je n'est pas de screenshots sous la main mais je peux te dire que ça donne quelque chose de bien :). Pour la rapidité je t'assure que c'est trés lent. Ok pour Lionel : j'ai trouvé une routine d'affichage dans le tuto S1P6 mais je n'y comprend absolument rien car c'est en ASM et elle ne marche que pour F6x8 :(
Cyril MOTTIER aka {==Thor==}
Modérateur général du forum de Tigen
[Etudiant à l'Institut National des Sciences Appliquées (INSA) de Rennes]
Mon site perso c'est ici
    
./Post n°7   Marquer comme non lu.
Lionel Debroux Ecrit le: Jeudi 3 juin 2004 à 19:03 Déconnecté(e)    Voir le profil de Lionel Debroux Envoyer un email à Lionel Debroux Visiter le site WEB de Lionel Debroux Envoyer un message privé à Lionel Debroux  

Je n'ai a priori pas de distro qui marche (jmank88 n'arrivait pas à la faire marcher, alors que celle de Ice Hockey 68k marche). Regarde HibText/HibView et Ice Hockey 68k.
Lionel Debroux - membre de TICT.
    
./Post n°8   Marquer comme non lu.
hubert_b Ecrit le: Lundi 7 juin 2004 à 17:14 Déconnecté(e)    Voir le profil de hubert_b Envoyer un email à hubert_b Envoyer un message privé à hubert_b  

Il me semble qu'il y a une librairie de la XTeam qui est très rapide (tiny x si je ne m'abuse).
Enfin, je pense qu'il faut mieux utiliser les routines de Lionnel Debroux
Hubert_B aKa nEUrOO
    
./Post n°9   Marquer comme non lu.
Sasume Ecrit le: Lundi 7 juin 2004 à 17:20 Déconnecté(e)    Voir le profil de Sasume Envoyer un email à Sasume Visiter le site WEB de Sasume Envoyer un message privé à Sasume  

Les routines de Lionel ne sont pas encore disponibles dans une librairie statique.
Je conseille d'utiliser Tinix plutôt que d'attendre : http://neuroo.kouette.com/?d=./tinyx (par contre, je ne sais pas quelles sont les versions les plus rapides, mais je sais qu'en général nEUrOO ne programme pas super bien en ASM, donc je suppose que les routines de lionel sont plus rapides).
    
./Post n°10   Marquer comme non lu.
Lionel Debroux Ecrit le: Lundi 7 juin 2004 à 18:56 Déconnecté(e)    Voir le profil de Lionel Debroux Envoyer un email à Lionel Debroux Visiter le site WEB de Lionel Debroux Envoyer un message privé à Lionel Debroux  

Les routines de Ice Hockey 68k marchent très bien, il suffit de les prendre, ça n'est pas compliqué ! Pour info, je reprendrai la partie dessin de fonts (probablement avec geogeo) dans ExtGraph cet été.
Lionel Debroux - membre de TICT.
    
./Post n°11   Marquer comme non lu.
Kevin Kofler Ecrit le: Lundi 7 juin 2004 à 20:16 Déconnecté(e)    Voir le profil de Kevin Kofler Envoyer un email à Kevin Kofler Visiter le site WEB de Kevin Kofler Envoyer un message privé à Kevin Kofler  


Je déconseille fortement TinyX... XLib et compagnie sont codées un peu n'importe comment et ont la tendance d'avoir des tailles vraiment excessives.
Membre de l'équipe de TIGCC: http://tigcc.ticalc.org
Mainteneur du portage Linux/Unix de TIGCC: http://tigcc.ticalc.org/linux/
Membre de l'équipe de CalcForge: http://www.calcforge.org:70/

Participez à la reprise de Ti-Gen!
    
./Post n°12   Marquer comme non lu.
Lionel Debroux Ecrit le: Mardi 8 juin 2004 à 11:35 Déconnecté(e)    Voir le profil de Lionel Debroux Envoyer un email à Lionel Debroux Visiter le site WEB de Lionel Debroux Envoyer un message privé à Lionel Debroux  

Surtout qu'à ma connaissance, les autres libs utilisent un backbuffer (meilleur cas: plus d'1 KB; pire cas, nettement plus) en RAM.
Pas ma méthode, faite à base de hack sûr sous AMS 1.xx, support spécial de PedroM, et fonctions système documentées sous AMS 2.xx et plus. Ma méthode a un autre avantage, c'est d'être plusieurs ordres de grandeur plus rapide au setup (au moins 2 sous AMS 2.xx, plus de 4 sous AMS 1.xx)...
Quand je dis "ma méthode", c'est la version la plus récente (dans TI-Chess 4.00, ou mieux Ice Hockey 68k, elle doit être encore plus récente).
Lionel Debroux - membre de TICT.
    
./Post n°13   Marquer comme non lu.
Thor Ecrit le: Mercredi 16 juin 2004 à 17:57 Déconnecté(e)    Voir le profil de Thor Envoyer un email à Thor Visiter le site WEB de Thor Envoyer un message privé à Thor  


Lionel Debroux :
Les routines de Ice Hockey 68k marchent très bien, il suffit de les prendre, ça n'est pas compliqué ! Pour info, je reprendrai la partie dessin de fonts (probablement avec geogeo) dans ExtGraph cet été.
Euh cette fonction est en C ou en ASM?
Cyril MOTTIER aka {==Thor==}
Modérateur général du forum de Tigen
[Etudiant à l'Institut National des Sciences Appliquées (INSA) de Rennes]
Mon site perso c'est ici
    
./Post n°14   Marquer comme non lu.
hubert_b Ecrit le: Mercredi 16 juin 2004 à 18:06 Déconnecté(e)    Voir le profil de hubert_b Envoyer un email à hubert_b Envoyer un message privé à hubert_b  

Tu peux très bien te faire une fonction en C assez rapide sinon:
- tu stockes tous les caractères dans un buffer en prenant soins de bien espacer pour faire des sprites 8x8
- et ta fonction en C boucle sur ta chaine de caractères en affichant avec une fonction de'affichage de sprite 8x8

Je pense que cette méthode est assez rapide :)
Hubert_B aKa nEUrOO
    
./Post n°15   Marquer comme non lu.
Thor Ecrit le: Mercredi 16 juin 2004 à 18:09 Déconnecté(e)    Voir le profil de Thor Envoyer un email à Thor Visiter le site WEB de Thor Envoyer un message privé à Thor  


Oui mais moi je débute alors il faut pas m'en demander trop car avec ta méthode je ne sais pas comment récupérer les caractères :(
Cyril MOTTIER aka {==Thor==}
Modérateur général du forum de Tigen
[Etudiant à l'Institut National des Sciences Appliquées (INSA) de Rennes]
Mon site perso c'est ici
    
./Post n°16   Marquer comme non lu.
hubert_b Ecrit le: Mercredi 16 juin 2004 à 18:11 Déconnecté(e)    Voir le profil de hubert_b Envoyer un email à hubert_b Envoyer un message privé à hubert_b  

Il suffit de te déplacer dans ce buffer
Sachant que tu te balades de 8 en 8...
-Edité le Mercredi 16 juin 2004 à 18:11 par hubert_b-
Hubert_B aKa nEUrOO
    
./Post n°17   Marquer comme non lu.
Thor Ecrit le: Mercredi 16 juin 2004 à 18:13 Déconnecté(e)    Voir le profil de Thor Envoyer un email à Thor Visiter le site WEB de Thor Envoyer un message privé à Thor  


a oki tu écrit toutes les lettres utiles puis tu te décale OK pas bête :)
Cyril MOTTIER aka {==Thor==}
Modérateur général du forum de Tigen
[Etudiant à l'Institut National des Sciences Appliquées (INSA) de Rennes]
Mon site perso c'est ici
    
./Post n°18   Marquer comme non lu.
Thor Ecrit le: Mercredi 16 juin 2004 à 23:35 Déconnecté(e)    Voir le profil de Thor Envoyer un email à Thor Visiter le site WEB de Thor Envoyer un message privé à Thor  


Je" viens de jeter un oeil au code source de Ice Hockey est ma conclusion est simple : c'est trop compliqué pour moi.
Cyril MOTTIER aka {==Thor==}
Modérateur général du forum de Tigen
[Etudiant à l'Institut National des Sciences Appliquées (INSA) de Rennes]
Mon site perso c'est ici
    
./Post n°19   Marquer comme non lu.
hubert_b Ecrit le: Jeudi 17 juin 2004 à 07:21 Déconnecté(e)    Voir le profil de hubert_b Envoyer un email à hubert_b Envoyer un message privé à hubert_b  

Je te fais un pseudo code pour la fonte moyenne (F_8x6):

// Sauvegarde des caractères en sprite
- Aller le buffer de 8 * Nombre de Caractères (256)
- Détourner la fonction DrawChar pour ce buffer (PortSet)
Pour i allant de 0 à 256 faire
-- DrawChar 0, i * 8 , i , A_NORMAL
Fait

// Afficher la chaine de caractère (string étant le pointeur vers cette chaine)
Tant que *string Faire
-- Sprite_8x8 x , y , Buffer[ ((unsigned short)(*string)) * 8 ], A_NORMAL
-- Incrémenter string
-- Incrémenter la position x de la largeur de la fonte (6)
Fait

Hubert_B aKa nEUrOO
    
  :: Index » Forum Ti68K » Programmation C » DrawStr trop lente (47 réponse(s))
Pages : 1/3     « [1] 2 3 » »|

.Répondre à ce sujet
Les boutons de code
[B]old[I]talic[U]nderline[S]trikethrough[L]ine Flip Hori[Z]ontallyFlip [V]erticallySha[D]ow[G]low[S]poilerCode [G][C]ite
Bullet [L]istList Item [K] Link [H][E]mail[P]icture SmileysHelp
Couleurs :
Saisissez votre message
Activer les smileys
     

Forum de Ti-Gen v3.0 Copyright ©2004 by Geoffrey ANNEHEIM
Webmaster: Kevin KOFLER, Content Admins: list, Server Admins: Tyler CASSIDY and Kevin KOFLER, DNS Admin: squalyl
Page générée en 85.33ms avec 18 requetes