Почему моя текстура не отображается в полноэкранном режиме игры DX11

Я рисую текстуру в игре DX11. Странно, что текстура никогда не отображается в полноэкранном режиме.

Я перечисляю настройки своего состояния здесь для справки.

BOOL BlendEnable[] = {TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE};
UINT8 RenderTargetWriteMask[] = {0xF, 0xF, 0xF, 0xF, 0xF, 0xF, 0xF, 0xF};

D3D11_BLEND_DESC  bs11 = {0};
bs11.AlphaToCoverageEnable = 0;
bs11.IndependentBlendEnable = false;

for(size_t i = sizeof(BlendEnable) / sizeof(BlendEnable[0]); i--;)
{
     bs11.RenderTarget[i].BlendEnable = BlendEnable[i];
     bs11.RenderTarget[i].RenderTargetWriteMask = RenderTargetWriteMask[i];
}

bs11.RenderTarget[0].BlendOp = D3D10_DDI_BLEND_OP_ADD;
bs11.RenderTarget[0].BlendOpAlpha = D3D10_DDI_BLEND_OP_ADD;
bs11.RenderTarget[0].DestBlend = D3D10_DDI_BLEND_INV_SRC_ALPHA;
bs11.RenderTarget[0].DestBlendAlpha = D3D10_DDI_BLEND_ZERO;
bs11.RenderTarget[0].SrcBlend = D3D10_DDI_BLEND_SRC_ALPHA;
bs11.RenderTarget[0].SrcBlendAlpha = D3D10_DDI_BLEND_ONE;       
bs11.RenderTarget[0].RenderTargetWriteMask = D3D10_DDI_COLOR_WRITE_ENABLE_ALL;

D3D11_DEPTH_STENCIL_DESC depthDesc;
depthDesc.DepthEnable = 0;
depthDesc.DepthWriteMask = D3D10_DEPTH_WRITE_MASK_ZERO;
depthDesc.DepthFunc = D3D10_COMPARISON_NEVER;
depthDesc.BackEnable = 0;
depthDesc.FrontEnable = 0;
depthDesc.StencilEnable = 0;
depthDesc.StencilReadMask = 0;
depthDesc.StencilWriteMask = 0;
depthDesc.FrontFace.StencilDepthFailOp = D3D10_DDI_STENCIL_OP_KEEP;
depthDesc.FrontFace.StencilFailOp = D3D10_DDI_STENCIL_OP_KEEP;
depthDesc.FrontFace.StencilFunc = D3D10_DDI_COMPARISON_ALWAYS;
depthDesc.FrontFace.StencilPassOp = D3D10_DDI_STENCIL_OP_KEEP;
depthDesc.BackFace.StencilDepthFailOp = D3D10_DDI_STENCIL_OP_KEEP;
depthDesc.BackFace.StencilFailOp = D3D10_DDI_STENCIL_OP_KEEP;
depthDesc.BackFace.StencilFunc = D3D10_DDI_COMPARISON_ALWAYS;
depthDesc.BackFace.StencilPassOp = D3D10_DDI_STENCIL_OP_KEEP;

Какая наиболее вероятная проблема может быть?

Спасибо, Маршалл


person Marshall    schedule 29.07.2011    source источник


Ответы (1)


Не уверен, что это решит ваши проблемы, но переменные D3D11_BLEND_DESC/D3D11_DEPTH_STENCIL_DESC устанавливаются как флаги D3D10_, насколько мне известно, это обычно компилируется, но должно быть эквивалентно D3D11_.

Так текстуры отображаются в оконном режиме?

person wookey    schedule 08.08.2011
comment
Ну, я спросил об оконном режиме, потому что, если он не отображается ни в оконном, ни в полноэкранном режиме, тогда требуется дополнительная информация о вершинном буфере/информации о рисовании. Получаете ли вы какие-либо предупреждения от устройства отладки? Наконец, вы хотели отредактировать мой пост, я думаю, вы хотели добавить комментарий, который вы можете, поскольку это ваш вопрос. - person wookey; 09.08.2011
comment
Я также могу предложить использовать nvidia parallel nsight, если у вас есть карта nvidia, поскольку она позволяет вам шаг за шагом видеть вызовы отрисовки. Визуально я предпочитаю его PIX, поскольку он выделяет треугольники, если они находятся в поле зрения. (Pix — это отладчик, входящий в состав SDK DirectX. Его также можно использовать для просмотра того, что происходит в шейдерах/API DirectX). - person wookey; 09.08.2011