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 :

Rendu de textes flou


Sujet :

DirectX

  1. #1
    Membre confirmé
    Avatar de simone.51
    Inscrit en
    Juin 2002
    Messages
    137
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Juin 2002
    Messages : 137
    Points : 525
    Points
    525
    Par défaut Rendu de textes flou
    Bonjour,
    Version de directX : 9.0c
    Language : C# 3.5

    Pour faire afficher du textes dans mon application, j'utilise des bitmaps (générées préalablement) contenant la tables de caractères. Lorsque je les affiche en 2d à l'échelle 1:1 en mode TextureFilter.Point, mes textes sont parfaitement nets.
    Par contre, lorsque ma scène bouge un petit peu, on voit les caractères se repositionner constamment (ça, c'est un peu normal, vu qu'on est en nearestPoint).
    La solution aurait donc pu être de passer en filtrage TextureFilter.Linear.
    Le problème avec cette solution, c'est qu'on obtient un effet de texte qui vacille un peu (flou -> net -> flou -> net...)

    Quelqu'un connait-il une solution pour remédier à ce problème?
    Existe t'il un moyen pour obtenir, en 2D, des textures nettes tout le temps?

    Merci.

  2. #2
    Membre confirmé

    Inscrit en
    Août 2007
    Messages
    300
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 300
    Points : 527
    Points
    527
    Par défaut
    Si vous ne souhaitez pas vous casser la tête, je vous conseille tout simplement d'agrandir puis de réduire la texture des fontes. Par exemple, afficher un corps 12 à partir d'une texture représentant un corps 48, etc. Ce ne sera jamais net, mais vous éviterez le phénomène que vous décrivez de vacillation.

    Si vous plongez un peu plus loin, on peut obtenir d'excellents résultats en sur-échantillonnant. Par exemple, on peut faire un pixel-shader qui échantillonne dans la texture de fonte autour du centre du pixel-cible, avec des poids relatifs, et qui produit un résultat excellent, dé-crénelé "à la main", par opposition à passer toute l'application en mode AA.

    Si vous n'êtes pas contraint par un rendu dynamique (pré-calcu de menu par exemple), d'excellentes librairies vous permettront des résultats spectaculaires, par exemple http://www.antigrain.com/.

    Enfin, le problème est d'une manière générale reconnu comme médiocrement traité par Microsoft, et donc ils vont s'y attaquer de pied ferme avec DirectWrite .

  3. #3
    Membre confirmé
    Avatar de simone.51
    Inscrit en
    Juin 2002
    Messages
    137
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Juin 2002
    Messages : 137
    Points : 525
    Points
    525
    Par défaut
    Merci pour ces précisions.
    Par contre, je n'ai pas très bien compris le deuxième point concernant le pixel shader.
    Le but consiste en quoi? Moyenner plusieurs pixels d'une grande texture pour créer une plus petite à la volée?

  4. #4
    Membre confirmé

    Inscrit en
    Août 2007
    Messages
    300
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 300
    Points : 527
    Points
    527
    Par défaut
    L'utilisation du pixel shader peut servir à échantillonner tous les pixels d'une fonte très définie (dans une texture de haute qualité, indépendante de la résolution courante de l'application) couverte par un pixel d'écran peu défini (à la résolution courante de l'application). Par exemple, si tous les pixels de la texture de fonte couverts par le pixel de l'écran considéré sont blancs, le pixel d'écran sera blanc aussi. Par contre, lorsque le pixel d'écran est à cheval sur un bord de lettre, l'échantillonnage par PS déterminera le niveau de gris exact.
    On peut aller bien plus loin, en tenant compte par exemple du facteur 3 en résolution horizontale des écrans LCD modernes (technique antique, popularisée récemment par Microsoft Cleartype).
    Il n'est pas nécessaire de faire cela à la volée à l'écriture de chaque lettre, je conseille plutôt de recalculer un cache à chaque changement de résolution, de fonte, ou de décalage sur l'écran d'un texte (déplacement d'un élément d'interface graphique).
    Ceci permet d'avoir des lettres sur-échantillonnées tout en évitant de devoir passer toute l'application (en particulier sa partie 3D) en sur-échantillonnage, ce qui peut être couteux selon l'application - ou bien on peut faire un sur-échantillonnage de très haute qualité pour les lettres et plus raisonnable pour les modèles 3D.

Discussions similaires

  1. Problème de rendu du texte dans les figures eps
    Par drangfor dans le forum Editeurs / Outils
    Réponses: 11
    Dernier message: 26/08/2010, 09h45
  2. WPF en environnement TSE/Citrix et rendu du texte
    Par _PascalC_ dans le forum Windows Presentation Foundation
    Réponses: 7
    Dernier message: 21/10/2009, 11h09
  3. Rendu de texte par php/xajax
    Par jaljal dans le forum Mise en page CSS
    Réponses: 1
    Dernier message: 30/08/2009, 14h20
  4. [PrinterJob] – Le rendu des textes dans les impressions.
    Par imarkahann dans le forum AWT/Swing
    Réponses: 1
    Dernier message: 01/08/2008, 10h12
  5. IE7 Beta 2: Texte flou ?
    Par frechy dans le forum IE
    Réponses: 1
    Dernier message: 09/05/2006, 20h01

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