Буфер глубины не записывается вызовами Draw

У меня была нулевая удача, работая с буферизацией глубины. Все рендеринг, но только в том порядке, в котором я их накладываю Когда я смотрю на шаблон глубины в VS Graphics Debugger, он НИКОГДА не пишется. Должно быть, из всего, что я могу придумать, но в отладчике все остается красным (что просто означает, что все еще ясно).

DXUT создал для меня и цель визуализации, и шаблон глубины, и я достаточно тщательно их осмотрел, чтобы быть уверенным, что все они хорошо выглядят. Я прошел его код создания и открыл MSDN и проверил каждый флаг — но тысячи уже использовали этот код раньше, я подозреваю, что конец DXUT в порядке.

Моя цель рендеринга — Texture2D, R8G8B8A8_UNORM_SRGB, 1280×1024, Сэмпл 1, Качество 0, Уровни Mip 1, установленный для привязки к цели рендеринга, без флагов.

Мой шаблон глубины — Texture2D, D24_UNORM_S8_UINT, 1280×1024, отсчет выборки 1, качество 0, уровни Mip 1, установленный для привязки в качестве трафарета глубины, без других флагов.

В начале моего рендера я очищаю представление цели рендеринга. Трудно все испортить. Затем я очищаю DepthStencil:

pd3dImmediateContext->ClearRenderTargetView(DXUTGetD3D11RenderTargetView(), Colors::Black);
pd3dImmediateContext->ClearDepthStencilView(DXUTGetD3D11DepthStencilView(), D3D11_CLEAR_DEPTH, 1.0f, 0);

Мой шаблон глубины для ВСЕХ розыгрышей:

DepthEnable      TRUE
DepthFunc        LESS_EQUAL
DepthWriteMask   ALL
StencilEnable    FALSE

DepthStencilView отображается как

Texture2D, D24_UNORM_S8_UINT, no flags, MipSlice 0

в графическом отладчике VS. У меня есть набор смешивания для твердого тела.

Это не похоже на несоответствие (например, мультисэмплинг) текстуры рендеринга цели и текстуры глубины, как я подтвердил (если только эти два формата DXGI по какой-то причине несовместимы).

Все выглядит правильно, кроме глубины, поэтому я собираюсь предположить, что мои матрицы преобразования все в порядке.

Единственный другой совет, который у меня есть на данный момент, заключается в том, что если я очищаю буфер глубины с 0,999999, все исчезает. С 1.0 все рисует (хотя с неправильной / отсутствующей глубиной).

В окне просмотра установлен размер окна, затем 0,0 как минимальная глубина и 1,0 как максимальная. Это первое, что я проверил.

Мое состояние растеризатора:

FillMode SOLID
CullMode BACK
FrontCounterClockwise FALSE
DepthBias 0
DepthBiasClamp 0.000f
SlopeScaleDepthBias 0.000f
DepthClipEnable TRUE
ScissorEnable FALSE
MultisampleEnable TRUE
AntialiasedLineEnable FALSE

ForcedSampleCount 0

Если в этом нет ничего явно неправильного, то что следует проверить дальше? Учитывая, что я использую DXUT-фреймворк, я не делаю много работ по созданию сантехники самостоятельно и всегда работал раньше! А в отладчике все выглядит отлично.

Единственное, что я не могу проверить, это выходные данные вершинного шейдера, потому что графический отладчик взрывается и падает.

0

Решение

Задача ещё не решена.

Другие решения


По вопросам рекламы [email protected]