Criação de objeto com Multithreading
Use a interface ID3D11Device para criar recursos e objetos, use o ID3D11DeviceContext para renderização.
Aqui estão alguns exemplos de como criar recursos:
- Como criar um buffer de vértice
- Como criar um buffer de índice
- Como criar um buffer constante
- Como inicializar uma textura de um arquivo
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 multithreading que o driver implementa. Se o driver der suporte a criações simultâneas, o aplicativo deverá ter muito menos preocupações de simultaneidade. No entanto, se o driver não der suporte à criação de objeto simultâneo, a quantidade de simultaneidade será extremamente limitada. Para entender a quantidade de suporte disponível em um driver, consulte o driver quanto ao valor do membro DriverConcurrentCreates da estrutura D3D11_FEATURE_DATA_THREADING . Para obter mais informações sobre como verificar o suporte ao driver de multithreading, consulte Como verificar o suporte ao driver.
As operações simultâneas não necessariamente levam a um melhor desempenho. Por exemplo, criar e carregar uma textura normalmente é limitado pela largura de banda de memória. Tentar criar e carregar várias texturas pode não ser mais rápido do que fazer uma textura por 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 dão suporte a multithreading, normalmente você pode inicializar recursos recém-criados com mais eficiência passando um ponteiro para os dados iniciais no parâmetro pInitialData (por exemplo, em uma chamada para o método ID3D11Device::CreateTexture2D ).
Tópicos relacionados