2017-01-22 2 views
0

J'ai un ancien programme basé sur DirectDraw que j'ai écrit il y a des années et j'ai commencé à le revoir.SetDisplayMode (XRes, YRes, 16 vs 32, 0, 0)

changer une ligne de celle-ci: SetDisplayMode (xres, yres, 16, 0, 0)

à cela: SetDisplayMode (xres, yres, 32, 0, 0)

et la programme fonctionne considérablement plus rapidement. (peut-être 4 fois plus rapide)

Le paramètre I changé est bits par pixel. Je m'attendrais à utiliser plus de bits par pixel aurait besoin de plus de mémoire et donc être plus lent.

Quelqu'un a-t-il déjà eu ce comportement? Si oui, avez-vous des explications sur les raisons pour lesquelles la performance s'améliore?

Merci.

Répondre

1

Bien qu'il semble intuitif que moins de précision fonctionne plus rapidement, il est probable que votre matériel d'affichage actuel ne supporte pas nativement un mode 16 bits. En fait, sauf si vous exécutez des programmes en mode de compatibilité, Windows 8.0+ ne prend pas en charge la couleur 16 bits. Vous pouvez check votre pilote, pour voir si en fait, il existe un mode 16 bits répertorié. Si vous exécutiez un tel programme sur un matériel beaucoup plus ancien, il est probable qu'un mode 16 bits a été pris en charge.

Si aucun support n'est disponible en mode natif, une conversion doit être effectuée au moment de l'exécution, ce qui explique pourquoi le mode 16 bits est plus lent. Si la conversion est la raison, il ne consommera pas moins de mémoire que la version 32 bits.

+0

Oui c'est ça. J'ai vérifié via "Afficher les propriétés de l'adaptateur" et tous les modes d'affichage supportés sont en 32 bits. Je dois faire défiler un écran presque vide pour atteindre "Afficher les propriétés de l'adaptateur", le temps d'un autre gémissement à propos de Windows 10 :-) –