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