2017-01-23 2 views
0

Hey Leute sollte ich verwenden, um die Device Funktionen wie IASetVertexBuffers, IASetPrimitiveTopology, VSSetShader durch Schaffung wieSoll ich die DeviceContext-Funktionen verwenden, um in der Pipeline in Schleife oder durch Erstellung einzugeben?

void init() { 
    //create window and stuff 
    devicecontext->IASetVertexBuffers(...); 
} 

void draw() { 
    //draw 
} 

oder in Schleife wie

void init() { 
    //create window and stuff 
} 

void draw() { 
    devicecontext->IASetVertexBuffers(...); 
    //draw 
} 

und hier ist mein Code, der tatsächlich im,

void ARenderer::Draw(AMesh * mesh, AShader* shader) 
{ 
    ARenderer::SetViewport(currentviewport); 
    ARenderer::ApplyShader(shader); 


    ///Drawing 
    uint32_t stride = sizeof(AVertex); 
    uint32_t offset = 0; 

    dxmanager->DeviceContext->IASetVertexBuffers(0, 1, mesh->GetBuffer().GetAddressOf(), &stride, &offset); 
    dxmanager->DeviceContext->IASetPrimitiveTopology(static_cast<D3D11_PRIMITIVE_TOPOLOGY>(mesh->GetPrimitive())); 
    dxmanager->DeviceContext->Draw(mesh->GetVertexCount(), 0); 
} 
mit

Antwort

0

Wahrscheinlichkeiten sind, dass Sie mehr als ein Objekt oder eine Sache in Ihrer Anwendung zeichnen möchten, es bedeutet, dass Sie haben werden Um sie schon mehrmals pro Frame aufzurufen, ist die Initialisierungszeit keine Option.

Es ist sicherer für Sie, immer alle erforderlichen Zustände vor einer Ziehung einzustellen, bis es Leistungsprobleme in Ihrer Anwendung zeigt. Das passiert normalerweise nie in kleinen Anwendungen. Sobald Sie mit den Funktionen und der Korrektheit fertig sind, können Sie versuchen, intelligenter zu sein, Dinge zu senden, nicht vorher.

Verwandte Themen