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...
Partager