Udostępnij przez


Tworzenie obiektów przy użyciu wielowątkowości

Użyj interfejsu ID3D11Device, aby utworzyć zasoby i obiekty, użyj ID3D11DeviceContext do renderowania .

Oto kilka przykładów tworzenia zasobów:

Zagadnienia dotyczące wielowątkowości

Stopień współbieżności tworzenia i renderowania zasobów, jakie aplikacja może osiągnąć, zależy od poziomu obsługi wielowątkowości zaimplementowanej przez sterownik. Jeśli sterownik obsługuje współbieżne operacje tworzenia, aplikacja powinna mieć znacznie mniej problemów ze współbieżnością. Jeśli jednak sterownik nie obsługuje współbieżnego tworzenia obiektów, ilość współbieżności jest bardzo ograniczona. Aby zrozumieć zakres wsparcia dostępnego w sterowniku, zapytaj sterownik o wartość składowej DriverConcurrentCreates w strukturze D3D11_FEATURE_DATA_THREADING. Aby uzyskać więcej informacji na temat sprawdzania obsługi sterowników wielowątkowych, zobacz How To: Check for Driver Support.

Operacje współbieżne niekoniecznie prowadzą do lepszej wydajności. Na przykład tworzenie i ładowanie tekstury jest zwykle ograniczone przez przepustowość pamięci. Próba utworzenia i załadowania wielu tekstur może nie być szybsza niż wykonywanie jednej tekstury naraz, nawet jeśli spowoduje to pozostawienie wielu rdzeni procesora CPU bezczynności. Jednak tworzenie wielu shaderów przy użyciu wielu wątków może zwiększyć wydajność, ponieważ ta operacja jest mniej zależna od zasobów systemowych, takich jak przepustowość pamięci.

Gdy sterownik i sprzęt graficzny obsługują wielowątkowość, zazwyczaj można zainicjować nowo utworzone zasoby wydajniej, przekazując wskaźnik do początkowych danych w parametrze pInitialData (na przykład w wywołaniu metody ID3D11Device::CreateTexture2D).

wielowątkowość