Partilhar via


Criação de objetos com multithreading

Utilize a Interface ID3D11Device para criar recursos e objetos, e utilize a Interface ID3D11DeviceContext para renderização.

Aqui estão alguns exemplos de como criar recursos:

Considerações sobre multithreading

A quantidade de simultaneidade de criação e renderização de recursos que seu aplicativo pode alcançar depende do nível de suporte a multithreading que o driver implementa. Se o driver suporta criações simultâneas, então o aplicativo deve ter muito menos preocupações de simultaneidade. No entanto, se o driver não oferecer suporte à criação simultânea de objetos, a quantidade de simultaneidade será extremamente limitada. Para compreender a quantidade de suporte disponível num controlador, solicite ao controlador o valor do membro DriverConcurrentCreates da estrutura D3D11_FEATURE_DATA_THREADING. Para obter mais informações sobre como verificar o suporte de driver de multithreading, consulte Como: Verificar o suporte ao driver.

As operações simultâneas não conduzem necessariamente a um melhor desempenho. Por exemplo, criar e carregar uma textura é normalmente limitado pela largura de banda da memória. Tentar criar e carregar várias texturas pode não ser mais rápido do que fazer uma textura de cada vez, mesmo que isso deixe vários núcleos de CPU ociosos. No entanto, a criação de vários sombreadores usando vários threads pode aumentar o desempenho, pois essa operação é menos dependente de recursos do sistema, como largura de banda de memória.

Quando o driver e o hardware gráfico suportam multithreading, normalmente você pode inicializar recursos recém-criados de forma mais eficiente passando um ponteiro para os dados iniciais no parâmetro pInitialData (por exemplo, em uma chamada para o métodoID3D11Device::CreateTexture2D).

MultiThreading