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 :

[D3D9] ID3DXFont et anti-aliasing


Sujet :

DirectX

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Janvier 2005
    Messages
    61
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 61
    Par défaut [D3D9] ID3DXFont et anti-aliasing
    Salut a tous,

    je cherche actuellement a gerer le rendering du texte dans une application c++ utilisant Direct 3d (9.0c), de facon a ce que tout ceci soit joliment anti-aliase.

    Niveau programmation, on s'en sort a peu pres... en utilisant le sample D3DXFont_intro fourni avec le directX SDK, on trouve son bonheur.

    Mais le soucis que je rencontre semble etre plus d'un ordre optique que graphique. je m'explique : l'affichage avec anti-aliasing de texte noir sur fond blanc a un rendu bien moins beau que l'affichange de texte blanc sur fond noir.

    Et comme quelques images valent mieux qu'un long discours, voici les exemples (tires du sample en modifiant 3 lignes de codes) :


    Blanc sur noir :
    ligne 261 : 0xFF000000, // fond d'ecran noir
    ligne 284 : 0xFFFFFFFF, // texte blanc


    ligne 211 : ANTIALIASED_QUALITY, // font avec anti-aliasing

    ligne 211 : NONANTIALIASED_QUALITY, // font sans anti-aliasing

    Tout semble aller pour le mieux. Le texte anti-aliase semble certes un poil plus large que le texte normal, mais il est clairement agreable a lire et bien adouci.


    Noir sur blanc :
    ligne 261 : 0xFFFFFFFF, // fond d'ecran blanc (teste aussi avec 00 en alpha)
    ligne 284 : 0xFF000000, // texte noir


    ligne 211 : ANTIALIASED_QUALITY, // font avec anti-aliasing

    ligne 211 : NONANTIALIASED_QUALITY, // font sans anti-aliasing

    La, rien ne va plus ! Le texte noir sur fond blanc, une fois anti-aliase, parait plus large sans pour autant gagner en clarte. Les bordures sont toujours aussi nettes (ou presque), on passe donc d'un resultat "escalier" a un "gros pate de pixel".

    Et donc...

    ... comment faire ?

    mon avis sur le probleme est qu'il s'agit d'un effet d'optique. J'ai en effet trouve un article en anglais sur le theme (impossible de remettre la dessus, c'etait il y a un petit moment), comme quoi un noir reduit a 50% de son intensite sur fond blanc apparaissait comme noir, tandis qu'un blanc reduit a 50% de son intensite sur fond noir paraissait justement gris, d'ou le soucis de liaison dans le cas du noir sur blanc.

    Voila donc le probleme. J'imagine qu'il existe une solution, car je ne suis certainement pas le seul a avoir tente d'afficher du texte dans un programme ... mais pas moyen de trouver l'info que je cherche sur le net .

    Je m'en remet a vos bons conseils pour tenter de trouver un echappatoire, et enfin afficher correctement ce texte noir sur fond blanc...

  2. #2
    Membre averti
    Inscrit en
    Janvier 2005
    Messages
    61
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 61
    Par défaut
    k'n1 ou le 25e echec (au moins) dans sa quete de reponse sur Developpez... faut que je pense a acheter des grigris, a poster n'importe ou, ou a ecrire en SMS, mais y a un truc qui cloche, c'est certain.

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

    Informations forums :
    Inscription : Octobre 2005
    Messages : 267
    Par défaut
    k'n1 ou le 25e echec (au moins) dans sa quete de reponse sur Developpez... faut que je pense a acheter des grigris, a poster n'importe ou, ou a ecrire en SMS, mais y a un truc qui cloche, c'est certain.
    ...

    Je te conseille d'utiliser une autre police de caractère. Tout simplement

  4. #4
    Membre Expert

    Profil pro
    Programmeur
    Inscrit en
    Août 2002
    Messages
    1 091
    Détails du profil
    Informations personnelles :
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Programmeur

    Informations forums :
    Inscription : Août 2002
    Messages : 1 091
    Par défaut
    Il s'agit d'un artefact lié au fait que l'espace d'affichage par défaut de Windows n'est pas en linéaire/perceptuel, la rampe qui lie la valeur rgb à l'intensité perçue n'est pas lineaire. Windows comme d'autres OS et le web, définissent l'espace sRGB (http://en.wikipedia.org/wiki/SRGB_color_space) qui donne une plus grande précision dans les basses intensité.

    Un moniteur bien calibré aura donc la valeur de gris intermédiaire à 186/255 plutot qu'à 127.5/255.

    Il faut donc que l'outil d'antialiasing de font en tienne compte (c'est le cas de Photoshop par exemple quand tu utilises ses fontes antialiasées) et surtout que tu ne fasse pas d'opération non linéaire sur la texture finale (une simple inversion dans l'espace sRGB n'est pas linéaire).

    Pour restituer une inversion en mode linéaire, en partant du principe que l'image de départ a été calculée en sRGB se fait de la manière suivante :
    sRGB to linear, inversion, linear to sRGB.

    LeGreg

    Mon site web | Mon blog | Mes photos | Groupe USA
    > BONJOUR, JE SUIS NOUVEAU SUR CE FORUM
    > presse la touche caps lock, stp
    > OH.. MERCI C EST BEAUCOUP PLUS FACILE COMME CA

Discussions similaires

  1. [DirectX9] Anti-aliasing + gestion caméra
    Par SteelBox dans le forum DirectX
    Réponses: 6
    Dernier message: 21/07/2005, 00h56
  2. Anti aliasing qui ne fonctionne pas
    Par Deus Ex Makina dans le forum OpenGL
    Réponses: 3
    Dernier message: 27/04/2005, 09h57
  3. Filtres Anti-aliasing et TBitmap
    Par Sub0 dans le forum Langage
    Réponses: 24
    Dernier message: 15/04/2005, 21h12
  4. filtre anti-aliasing
    Par MO GV dans le forum MFC
    Réponses: 14
    Dernier message: 04/03/2005, 19h21
  5. Anti-aliasing
    Par Cazman dans le forum OpenGL
    Réponses: 16
    Dernier message: 27/04/2004, 08h30

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