IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

DirectX Discussion :

Afficher du texte en 2D mais avec opérations géométriques (dilatation ou contraction)


Sujet :

DirectX

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    171
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 171
    Points : 91
    Points
    91
    Par défaut Afficher du texte en 2D mais avec opérations géométriques (dilatation ou contraction)
    Bonjour,

    Je souhaite réaliser une appli très simple avec directx (en c++) qui consisterait à faire défiler horizontalement du texte en 2D, mais le texte doit être étiré pour entrer en dans le rectangle que je lui impose.

    Je pensais procéder ainsi : charger la font (LPD3DXFONT) par exemple Arial, créer un sprite, récupérer sa surface pour écrire dessus (en la mettant en target du device et en utilisant drawtext) puis afficher le sprite en l'étirant à ma guise.

    Seulement ca n'a pas l'air de marcher. D'abord parce que DrawText ne fonctionne pas (il renvoie erreur 13 : "média protégé en écriture") et ensuite car je ne sais pas comment étirer le sprite final.

    Est-ce que je pars sur une bonne piste par rapport à mon objectif ou voyez-vous une solution plus simple?
    Quelle est la procédure à utiliser pour drawtext?

    Vous l'aurez deviné, je débute en directX! Et je me sens un peu comme un poisson hors de l'eau face à ce monstre technique.

    Merci d'avance pour vos réponses!

  2. #2
    Membre actif
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    267
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 267
    Points : 275
    Points
    275
    Par défaut
    'Alut.

    Il y a la fonction D3DXCreateText qui crée du texte sur un mesh. A toi ensuite d'appliquer les matrices World nécessaires. (voir le sample Text3D)

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    171
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 171
    Points : 91
    Points
    91
    Par défaut
    D3DXCreatetexte est trop gourmande pour mon utilisation, je préfère en rester à des choses simples 2D.

    J'ai réussi à faire ce dont je vous parlais hier, à savoir écrire du texte dans une texture et l'appliquer à un sprite dont je spécifie les dimensions.

    Seulement j'ai un nouveau problème, de fuite mémoire cette fois. En effet, la font était créée à l'initialisation et je la gardais tout au long de l'exécution, mais ceci induit des énormes fuites mémoires (le programme monte rapidement à des centaines de Mo de ram). Au contraire, si je reconstruis la font à chaque Render, en la Releasant à la fin, aucune fuite mémoire mais un temps incroyable passé dans le render (40ms et donc un fps bien faible) et un processeur bien chargé.

    Vous voyez où peut-se situer le souci?

    Je ne comprends vraiment pas les fuites mémoires, car je suis certain qu'elles viennent de la font, comme si elle était recréée à chaque fois sans être relachée. D'un autre côté, je ne peux pas me permettre de recréer la font à chaque render.

    Désolé pour la longueur... et merci d'avance pour vos conseils éclairés!

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    171
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 171
    Points : 91
    Points
    91
    Par défaut
    Bon après recherche sur Internet, paraitrait-il que la fonction drawtext induirait des fuites mémoires pour certains caractères de certaines polices. Avec Swenson, les fuites mémoires étaient scandaleuses, et en revenant à Arial, tout se passe nickel.
    Mais c'est moche, bien entendu.

    Ca dit qq chose à qq'un cette histoire louche de fuite mémoire avec drawtext? Ce serait en rapport avec le cache de la font, mais je ne vois pas comment le vider...

  5. #5
    Membre actif
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    267
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 267
    Points : 275
    Points
    275
    Par défaut
    Comme explique ici, DX garde en cache les mots utilisés afin de pouvoir les rendre plus rapidement les prochaines frames.

    Afin de vider le cache, il faut périodiquement releaser la font puis la recréer

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    171
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 171
    Points : 91
    Points
    91
    Par défaut
    Merci!
    je vais opter pour une autre solution : construction de la table des caractères dans une texture à l'initialisation et j'irais piocher dedans ensuite. Au moins je me débarasse de cette p*tain de font. Mais c'est vrai qeu ca risque d'être moins beau...

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 11
    Dernier message: 24/01/2011, 08h36
  2. [Lazarus] Afficher le texte d'un ComboBox avec ReadOnly
    Par Modulpro dans le forum Lazarus
    Réponses: 2
    Dernier message: 16/10/2010, 12h09
  3. Afficher du texte, tout simplement mais..
    Par MeTaLCaM dans le forum Java ME
    Réponses: 1
    Dernier message: 12/09/2009, 08h35
  4. [Dojo] Afficher le text d'un radioboutton avec dom
    Par sedik.h dans le forum Bibliothèques & Frameworks
    Réponses: 2
    Dernier message: 09/09/2009, 00h27
  5. Comment afficher du texte avec swing ?
    Par meda dans le forum AWT/Swing
    Réponses: 8
    Dernier message: 27/10/2004, 14h35

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo