méthode la plus rapide pour blitting à partir d'une mémoire tampon de pixels dans un contexte de périphérique

StackOverflow https://stackoverflow.com/questions/4721078

Question

Bonsoir,

J'ai plusieurs images 32 bits dans les tampons de mémoire que je souhaite « blit » dans un contexte de dispositif, rapidement. La vitesse est un problème ici car la mémoire tampon sera manipulé en permanence et doivent être blittée à courant continu à plusieurs reprises.

La profondeur de couleur de la mémoire tampon est de 32 bits, il est donc déjà dans le format DIB prévu de SetDIBits (). Cependant, ceci est lourd plutôt puisque ne peut pas être déjà sélectionné la cible bitmap de SetDIBits () dans le courant continu avant l'opération. Donc, je devrai constamment échanger sur le bitmap de la DC, SetDIBits d'appel (), échange le dos bitmap dans le DC, puis blit le DC à courant continu de la fenêtre. Pour moi, cela semble juste comme beaucoup de travail sur la CPU et trop de branchement beaucoup dans l'API Windows; beaucoup trop pour des performances optimales.

Je serais intéressé à utiliser DirectX si elle ne m'a pas forcé à utiliser Contextes de l'appareil pour les opérations 2D ou textures de les charger sur la mémoire vidéo avant de les afficher, car le contenu de l'image sont en constante évolution.

Ma question est simple (malgré la longue writeup). Quel serait le meilleur moyen pour moi de Blit une image à partir d'un tampon de pixels en mémoire sur l'écran? Accès direct à la mémoire tampon de pixel d'un DC serait génial, mais je sais que ça ne va pas se produire.

Merci d'avoir lu ma longue writeup.

Était-ce utile?

La solution

Il existe une méthode API CreateDIBSection pour créer un DIB que les applications peuvent écrire directement. Cela permet de mettre à jour en permanence la bitmap (soit memcopy ou en écrivant directement à lui).

Voir l'article MSDN pour plus de détails.

  

L'accès au bitmap doit être synchronisé. Pour ce faire, en appelant la fonction GDIFlush.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top