Création d’objets avec multithread

Utilisez l’interface ID3D11Device pour créer des ressources et des objets, utilisez le ID3D11DeviceContext pour le rendu.

Voici quelques exemples de création de ressources :

Considérations sur le multithreading

La quantité de concurrence pour la création et le rendu des ressources que votre application peut atteindre dépend du niveau de prise en charge du multithreading que le pilote implémente. Si le pilote prend en charge les créations simultanées, l’application doit avoir des problèmes de concurrence moins importante. Toutefois, si le pilote ne prend pas en charge la création d’objets simultanés, la quantité d’accès concurrentiel est extrêmement limitée. Pour comprendre la quantité de support disponible dans un pilote, interrogez le pilote sur la valeur du membre DriverConcurrentCreates de la structure de thread de données de la _ fonctionnalité _ _ d3d11 . Pour plus d’informations sur la vérification de la prise en charge des pilotes pour le multithreading, consultez procédure : vérifier la prise en charge des pilotes.

Les opérations simultanées n’entraînent pas nécessairement de meilleures performances. Par exemple, la création et le chargement d’une texture sont généralement limités par la bande passante de mémoire. La tentative de création et de chargement de plusieurs textures peut ne pas être plus rapide qu’une texture à la fois, même si cela laisse plusieurs cœurs de processeur inactifs. Toutefois, la création de plusieurs nuanceurs à l’aide de plusieurs threads peut augmenter les performances, car cette opération est moins tributaire des ressources système, telles que la bande passante de la mémoire.

Lorsque le pilote et le matériel graphique prennent en charge le multithreading, vous pouvez généralement initialiser plus efficacement les ressources nouvellement créées en passant un pointeur vers les données initiales dans le paramètre pInitialData (par exemple, dans un appel à la méthode ID3D11Device :: CreateTexture2D ).

MultiThreading