J'utilise Desktop Duplication pour copier le contenu de l'écran vers un bitmap en mémoire. Je reçois la texture de bureau, puis crée une texture de transfert, utilise CopyResource
pour copier la texture de bureau dans la texture de transfert, puis appelle le ID3D11DeviceContext::Map
pour accéder aux bits de texture de transfert et les copier. A peu près la même manière que décrit ici: https://stackoverflow.com/a/27283837/825318ID3D11DeviceContext :: Map performance lente
Le problème est que Map
appel prend beaucoup de temps - pour les grandes résolutions d'affichage tels que 4K il peut prendre jusqu'à 100 ms par appel, ce qui est inacceptable que j'ai besoin pour assurer une vitesse de 30 fps.
Est-il possible d'obtenir le contenu de la texture plus rapidement? Si ce n'est pas le cas, y a-t-il un moyen de fournir mon propre pointeur d'adresse de mappage afin que le système copie les données de texture à cet endroit? Merci
La documentation [ID3D11DeviceContext :: Map] (https://msdn.microsoft.com/en-us/library/windows/desktop/ff476457 (v = vs.85) .aspx) parle de la pénalité de performance et suggère la stratégies appropriées et la fin de la page. L'un d'eux est d'utiliser le pointeur volatile. –
Merci, cependant, cela ne s'applique qu'aux surfaces en écriture seule, alors que ma tâche consiste à lire les données de la surface. – Isso