DirectX :: SpriteFont / SpriteBatch impede que cenas 3D sejam desenhadas

Estou com um problema ao usarDirectX::SpriteFont/DirectX::SpriteBatch (do DirectXTK; exatamente o mesmo problema discutido aqui:Problemas ao desenhar texto usando a classe SpriteFont)

void DrawScene(void)
{
    HRESULT hr;

    float bgColor_a[4] = { 0.0f, 0.4f, 0.8f, 0.0f };

    g_pDeviceContext->ClearRenderTargetView(g_pRenderTargetView, bgColor_a);
    g_pDeviceContext->ClearDepthStencilView(g_pDepthStencilView, D3D11_CLEAR_DEPTH | D3D11_CLEAR_STENCIL, 1.0f, 0);

    XMMATRIX cameraProj = XMLoadFloat4x4(&g_camera._cameraProjection);
    XMVECTOR pos = XMLoadFloat3(&g_camera._pos);
    XMVECTOR target = XMLoadFloat3(&g_camera._target);
    XMVECTOR up = XMLoadFloat3(&g_camera._up);
    XMMATRIX cameraView = XMMatrixLookAtLH(pos, target, up);
    XMMATRIX worldBox2 = XMMatrixIdentity() * (XMMatrixTranslation(2.0f, 0.0f, 0.0f) * XMMatrixRotationY(XMConvertToRadians(g_rotBox2)));
    XMMATRIX wvp = worldBox2 * cameraView * cameraProj;
    XMMATRIX transposeWvp = XMMatrixTranspose(wvp);
    XMStoreFloat4x4(&g_constantBufferPerObject._wvp, transposeWvp);
    g_pDeviceContext->UpdateSubresource(g_pConstantBufferPerObject, 0, NULL, &g_constantBufferPerObject, 0, 0);
    g_pDeviceContext->VSSetConstantBuffers(0, 1, &g_pConstantBufferPerObject);

    g_pDeviceContext->PSSetShaderResources(0, 1, &g_pCageTexture);
    g_pDeviceContext->PSSetSamplers(0, 1, &g_pCubeTextureSamplerState);

    // box
    g_pDeviceContext->DrawIndexed(36, 0, 0);

    wchar_t buffer[32];
    swprintf_s(buffer, 32, L"%.2f", g_fps._fps);

    //g_pSpriteBatch->Begin();
    //g_pSpriteFont->DrawString(g_pSpriteBatch, buffer, XMFLOAT2(30, 30));
    //g_pSpriteBatch->End();

    // Present the backbuffer to the screen
    hr = g_pSwapChain->Present(0, 0);
    if (FAILED(hr))
    {
        ErrorBoxW(L"Cannot present without error.");
    }
}

Sem as chamadas paraSpriteBatch::Begin(), SpriteFont::DrawString eSpriteBatch::End() você verá um cubo texturizado girando no espaço (uma gaiola). Com as chamadas para as funções descritas, você verá apenas os quadros por segundo no canto superior esquerdo, mas nenhum cubo rotativo.

Eu segui os tutoriais deChuck Walbourn no github DirectXTK e combinou os 2 tutoriais Draw String usandoSpriteFont e renderizar um objeto 3D primitivo (um triângulo simples). Neste exemplo, verei a cadeia de teste desenhando sobre o triângulo. Mas não entendo por que o cubo rotativo do meu exemplo não é visível ao desenhar uma sequência de texto usandoSpriteFont classe do DirectXTK e nem consigo encontrar a causa raiz.

Arquivo de sombreador de pixel (PixelShader.hlsl):

struct VS_OUTPUT
{
    float4 Pos : SV_POSITION;
    float4 Color : COLOR;
    float2 TexCoord : TEXCOORD;
};

Texture2D ObjTexture;
SamplerState ObjSamplerState;

float4 PS( VS_OUTPUT input ) : SV_TARGET
{
    float4 diffuse = ObjTexture.Sample(ObjSamplerState, input.TexCoord);
    clip(diffuse.a - 0.25);
    return diffuse;
}

Arquivo de sombreador de vértice (VertexShader.hlsl):

cbuffer constantBufferPerObject
{
    float4x4 WVP;
    float ColorAdjust;
    int Mode;
    int Pad[2];
};

struct VS_OUTPUT
{
    float4 Pos : SV_POSITION;
    float4 Color : COLOR;
    float2 TexCoord : TEXCOORD;
};

VS_OUTPUT VS( float4 pos : POSITION, float4 color : COLOR_ZERO, float4 color2 : COLOR_ONE, float2 texCoord : TEXCOORD )
{
    VS_OUTPUT output;
    float4 temp;
    output.Pos = mul(pos, WVP);  
    temp = color;
    output.Color.r = temp.r * color2.r * (1.0f - ColorAdjust);
    output.Color.g = temp.g * color2.g * (1.0f - ColorAdjust);
    output.Color.b = temp.b * color2.b * (1.0f - ColorAdjust);
    output.Color.a = color.a * color2.a;
    output.TexCoord = texCoord;
    return output;
}

Para reproduzir o problema: Estou trabalhando com o Visual Studio 2015 Community Edition. Adicionei DirectXTK (.lib) e DirectXTex (WICTextureLoader .cpp / .h,DDSTextureLoader .cpp / .h, .lib) ao meu projeto. A imagem para cubo é .png com alfa.

Nota: Eu criei issoduplicado pergunta, para

evitar ... Pedindo ajuda, esclarecimento ou respondendo a outras respostas.

na outra questão.

questionAnswers(2)

yourAnswerToTheQuestion