stratégia de renderização típica para muitos e variados objetos complexos em direct

Estou aprendendo directx. Ele oferece uma enorme liberdade de como fazer as coisas, mas presumivelmente estratégias diferentes funcionam de maneira diferente e fornece pouca orientação sobre o que pode ser um bom desempenho nos padrões de us

Quando usar o DirectX, é comum ter que trocar vários dados novos várias vezes em cada renderizaçã

A maneira mais óbvia e provavelmente realmente ineficiente de usá-la seria assi

Stragety 1

Em cada renderização única

Carregue tudo para o modelo 0 (texturas incluídas) e o renderize (IASetVertexBuffers, VSSetShader, PSSetShader, PSSetShaderResources, PSSetConstantBuffers, VSSetConstantBuffers, Draw)

Carregue tudo para o modelo 1 (texturas incluídas) e o renderize (IASetVertexBuffers, VSSetShader, PSSetShader, PSSetShaderResources, PSSetConstantBuffers, VSSetConstantBuffers, Draw)

etc ...

Suponho que você possa tornar isso mais eficiente, em parte, se as coisas mais importantes a serem carregadas receberem slots dedicados, por exemplo, se a textura do modelo 0 for realmente complicada, não a recarregue a cada etapa, basta carregá-la no slot 1 e deixá-la lá. É claro que, como não tenho certeza de quantos registros existem para cada tipo no DX11, isso é complicado (alguém pode apontar para uma documentação sobre isso?)

Stragety 2

Escolha alguns slots de textura para carregar e outros para armazenamento permanente de suas texturas mais complexa

Apenas uma ve

arregue os modelos, shaders e texturas mais complicados nos slots dedicados ao armazenamento permanent

Em cada renderização única

Carregue tudo o que ainda não está presente no modelo 0 usando os slots que você reservou para carregá-lo e renderizá-lo (IASetVertexBuffers, VSSetShader, PSSetShader, PSSetShaderResources, PSSetConstantBuffers, VSSetConstantBuffers, Draw)

Carregue tudo o que ainda não está presente no modelo 1 usando slots que você reservou para carregá-lo e renderizá-lo (IASetVertexBuffers, VSSetShader, PSSetShader, PSSetShaderResources, PSSetConstantBuffers, VSSetConstantBuffers, Draw)

etc ...

Strategy 3 Eu não tenho idéia, mas as opções acima provavelmente estão todas erradas porque eu sou realmente novo niss

Quais são as estratégias padrão para renderização eficiente no directx (especificamente o DX11) para torná-lo o mais eficiente possíve

questionAnswers(2)

yourAnswerToTheQuestion