J'ai suivi un livre sur les bases de la programmation de jeux avec D3D11. Je comprends maintenant les bases absolues de Direct3D :)Direct3D11 (C++): Rendu (base) question
mais ... j'ai une question. Dans le livre, j'ai toujours dû faire une démo à la fois. Maintenant, j'essaye de faire un jeu en 2D avec ça. Comme je ne veux pas m'habituer aux mauvaises habitudes, j'ai besoin de vos conseils.
Dans le livre, j'ai toujours dû définir un (struct VertexPos avec texcoord et des membres de position) OR (struct VertexPos avec seulement un membre de position XMFLOAT3). Dans le jeu que je fais, je veux être capable de dessiner des surfaces solides sans textures et des surfaces avec des textures. Je ne suis pas sûr de savoir comment faire cela, et encore moins le faire efficacement.
Voici ma fonction de rendu:
void GameSpriteDemo::Render()
{
if (m_pD3DContext == 0)
{return;}
float ClearColor[4] = {0.0f, 0.0f, 0.25f, 1.0f};
m_pD3DContext->ClearRenderTargetView(m_pBackBufferTarget,ClearColor);
UINT stride = sizeof(VertexPos);
UINT offset = 0;
m_pD3DContext->IASetInputLayout(m_pInputLayout);
m_pD3DContext->IASetVertexBuffers(0,1,&m_pVertexBuffer, &stride, &offset);
m_pD3DContext->IASetPrimitiveTopology(D3D11_PRIMITIVE_TOPOLOGY_TRIANGLELIST);
m_pD3DContext->VSSetShader(m_pSolidColorVS,0,0);
m_pD3DContext->PSSetShader(m_pSolidColorPS,0,0);
m_pD3DContext->PSSetShaderResources(0,1,&m_pColorMap);
m_pD3DContext->PSSetSamplers(0,1,&m_pColorMapSampler);
for(int i=0; i < 2; ++i)
{
XMMATRIX world = m_Sprites[i].GetWorldMatrix();
XMMATRIX mvp = XMMatrixMultiply(world, m_VpMatrix);
mvp = XMMatrixTranspose(mvp);
m_pD3DContext->UpdateSubresource(m_pMvpCB,0,0,&mvp,0,0);
m_pD3DContext->VSSetConstantBuffers(0,1,&m_pMvpCB);
m_pD3DContext->Draw(6,0);
}
m_pSwapChain->Present(0,0);
}
Alors, comment dois-je gérer cela efficacement avec des tampons multiples vertex, mises en page d'entrée, Shaders, Blenders, etc?
Dois-je simplement créer plusieurs versions de celles-ci, puis réinitialiser l'ensemble d'entrée, les shaders et autres après l'appel Draw? Ou cela ne fonctionne-t-il pas/n'est-ce pas efficace?
Merci de
Qu'en est-il de l'utilisation d'un framework? – Dani
Je voudrais apprendre à le faire dès le début ... m'apprendrait beaucoup – xcrypt